mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-14 17:05:36 +00:00
The tests use the original test queries from https://github.com/endgameinc/eql/blob/master/eql/etc/test_queries.toml for EQL implementation correctness validation. The file test_queries_unsupported.toml serves as a "blacklist" for the queries that we do not support. Currently all of the queries are blacklisted. Over the time the expectation is to eventually have an empty "blacklist" when all of the queries are fully supported. The tests use the original test vector from https://raw.githubusercontent.com/endgameinc/eql/master/eql/etc/test_data.json. Only one EQL and the response is stubbed for now to match the expected output from that query. This part would need some tweaking after EQL is fully wired. Related to https://github.com/elastic/elasticsearch/issues/49581
140 lines
4.5 KiB
Groovy
140 lines
4.5 KiB
Groovy
import org.elasticsearch.gradle.info.BuildParams
|
|
|
|
evaluationDependsOn(xpackModule('core'))
|
|
|
|
apply plugin: 'elasticsearch.esplugin'
|
|
esplugin {
|
|
name 'x-pack-eql'
|
|
description 'The Elasticsearch plugin that powers EQL for Elasticsearch'
|
|
classname 'org.elasticsearch.xpack.eql.plugin.EqlPlugin'
|
|
extendedPlugins = ['x-pack-ql', 'lang-painless']
|
|
}
|
|
|
|
ext {
|
|
// EQL dependency versions
|
|
antlrVersion = "4.5.3"
|
|
}
|
|
|
|
archivesBaseName = 'x-pack-eql'
|
|
|
|
// All integration tests live in qa modules
|
|
integTest.enabled = false
|
|
|
|
// Instead we create a separate task to run the tests based on ESIntegTestCase
|
|
task internalClusterTest(type: Test) {
|
|
mustRunAfter test
|
|
include '**/*IT.class'
|
|
systemProperty 'es.set.netty.runtime.available.processors', 'false'
|
|
}
|
|
|
|
check.dependsOn internalClusterTest
|
|
|
|
dependencies {
|
|
compileOnly project(path: xpackModule('core'), configuration: 'default')
|
|
compileOnly(project(':modules:lang-painless')) {
|
|
exclude group: "org.ow2.asm"
|
|
}
|
|
compile "org.antlr:antlr4-runtime:${antlrVersion}"
|
|
compileOnly project(path: xpackModule('ql'), configuration: 'default')
|
|
testCompile project(':test:framework')
|
|
testCompile project(path: xpackModule('core'), configuration: 'testArtifacts')
|
|
testCompile project(path: xpackModule('security'), configuration: 'testArtifacts')
|
|
testCompile project(path: xpackModule('ql'), configuration: 'testArtifacts')
|
|
testCompile project(path: ':modules:reindex', configuration: 'runtime')
|
|
testCompile project(path: ':modules:parent-join', configuration: 'runtime')
|
|
testCompile project(path: ':modules:analysis-common', configuration: 'runtime')
|
|
|
|
// TOML parser for EqlActionIT tests
|
|
testCompile 'io.ous:jtoml:2.0.0'
|
|
|
|
// JSON parser for tests input data
|
|
testCompile "com.fasterxml.jackson.core:jackson-core:${versions.jackson}"
|
|
testCompile "com.fasterxml.jackson.core:jackson-annotations:${versions.jackson}"
|
|
testCompile "com.fasterxml.jackson.core:jackson-databind:${versions.jackson}"
|
|
|
|
}
|
|
|
|
|
|
/****************************************************************
|
|
* Enable QA/rest integration tests for snapshot builds only *
|
|
* TODO: Enable for all builds upon this feature release *
|
|
****************************************************************/
|
|
if (BuildParams.isSnapshotBuild()) {
|
|
// add all sub-projects of the qa sub-project
|
|
gradle.projectsEvaluated {
|
|
project.subprojects
|
|
.find { it.path == project.path + ":qa" }
|
|
.subprojects
|
|
.findAll { it.path.startsWith(project.path + ":qa") }
|
|
.each { check.dependsOn it.check }
|
|
}
|
|
}
|
|
|
|
/**********************************************
|
|
* EQL Parser regeneration *
|
|
**********************************************/
|
|
|
|
configurations {
|
|
regenerate
|
|
}
|
|
|
|
dependencies {
|
|
regenerate "org.antlr:antlr4:${antlrVersion}"
|
|
}
|
|
|
|
String grammarPath = 'src/main/antlr'
|
|
String outputPath = 'src/main/java/org/elasticsearch/xpack/eql/parser'
|
|
|
|
task cleanGenerated(type: Delete) {
|
|
delete fileTree(grammarPath) {
|
|
include '*.tokens'
|
|
}
|
|
delete fileTree(outputPath) {
|
|
include 'EqlBase*.java'
|
|
}
|
|
}
|
|
|
|
task regenParser(type: JavaExec) {
|
|
dependsOn cleanGenerated
|
|
main = 'org.antlr.v4.Tool'
|
|
classpath = configurations.regenerate
|
|
systemProperty 'file.encoding', 'UTF-8'
|
|
systemProperty 'user.language', 'en'
|
|
systemProperty 'user.country', 'US'
|
|
systemProperty 'user.variant', ''
|
|
args '-Werror',
|
|
'-package', 'org.elasticsearch.xpack.eql.parser',
|
|
'-listener',
|
|
'-visitor',
|
|
'-o', outputPath,
|
|
"${file(grammarPath)}/EqlBase.g4"
|
|
}
|
|
|
|
task regen {
|
|
dependsOn regenParser
|
|
doLast {
|
|
// moves token files to grammar directory for use with IDE's
|
|
ant.move(file: "${outputPath}/EqlBase.tokens", toDir: grammarPath)
|
|
ant.move(file: "${outputPath}/EqlBaseLexer.tokens", toDir: grammarPath)
|
|
// make the generated classes package private
|
|
ant.replaceregexp(match: 'public ((interface|class) \\QEqlBase\\E\\w+)',
|
|
replace: '\\1',
|
|
encoding: 'UTF-8') {
|
|
fileset(dir: outputPath, includes: 'EqlBase*.java')
|
|
}
|
|
// nuke timestamps/filenames in generated files
|
|
ant.replaceregexp(match: '\\Q// Generated from \\E.*',
|
|
replace: '\\/\\/ ANTLR GENERATED CODE: DO NOT EDIT',
|
|
encoding: 'UTF-8') {
|
|
fileset(dir: outputPath, includes: 'EqlBase*.java')
|
|
}
|
|
// remove tabs in antlr generated files
|
|
ant.replaceregexp(match: '\t', flags: 'g', replace: ' ', encoding: 'UTF-8') {
|
|
fileset(dir: outputPath, includes: 'EqlBase*.java')
|
|
}
|
|
// fix line endings
|
|
ant.fixcrlf(srcdir: outputPath, eol: 'lf') {
|
|
patternset(includes: 'EqlBase*.java')
|
|
}
|
|
}
|
|
} |