import org.elasticsearch.gradle.MavenFilteringHack import org.elasticsearch.gradle.test.NodeInfo import org.elasticsearch.gradle.http.WaitForHttpResource apply plugin: 'elasticsearch.standalone-rest-test' apply plugin: 'elasticsearch.rest-test' dependencies { testCompile project(':x-pack:plugin:core') } String outputDir = "${buildDir}/generated-resources/${project.name}" task copyXPackPluginProps(type: Copy) { from project(xpackModule('core')).file('src/main/plugin-metadata') from project(xpackModule('core')).tasks.pluginProperties into outputDir } project.sourceSets.test.output.dir(outputDir, builtBy: copyXPackPluginProps) // location of generated keystores and certificates File keystoreDir = new File(project.buildDir, 'keystore') File nodeKeystore = file("$keystoreDir/testnode.jks") File nodeKey = file("$keystoreDir/testnode.pem") File nodeCert = file("$keystoreDir/testnode.crt") File clientKeyStore = file("$keystoreDir/testclient.jks") File clientKey = file("$keystoreDir/testclient.pem") File clientCert = file("$keystoreDir/testclient.crt") // Add keystores to test classpath: it expects it there task copyKeyCerts(type: Copy) { from('./') { include '*.crt', '*.pem', '*.jks' } into keystoreDir } // Add keystores to test classpath: it expects it there sourceSets.test.resources.srcDir(keystoreDir) processTestResources.dependsOn(copyKeyCerts) integTestCluster.dependsOn(copyKeyCerts) ext.pluginsCount = 0 project(':plugins').getChildProjects().each { pluginName, pluginProject -> // need to get a non-decorated project object, so must re-lookup the project by path integTestCluster.plugin(pluginProject.path) pluginsCount += 1 } integTestCluster { setting 'xpack.monitoring.collection.interval', '1s' setting 'xpack.monitoring.exporters._http.type', 'http' setting 'xpack.monitoring.exporters._http.enabled', 'false' setting 'xpack.monitoring.exporters._http.auth.username', 'monitoring_agent' setting 'xpack.monitoring.exporters._http.auth.password', 'x-pack-test-password' setting 'xpack.monitoring.exporters._http.ssl.verification_mode', 'full' setting 'xpack.monitoring.exporters._http.ssl.certificate_authorities', 'testnode.crt' setting 'xpack.license.self_generated.type', 'trial' setting 'xpack.security.enabled', 'true' setting 'xpack.security.http.ssl.enabled', 'true' setting 'xpack.security.http.ssl.key', 'testnode.pem' setting 'xpack.security.http.ssl.certificate', 'testnode.crt' setting 'xpack.security.http.ssl.certificate_authorities', 'testnode.crt' keystoreSetting 'xpack.security.http.ssl.secure_key_passphrase', 'testnode' setting 'xpack.ilm.enabled', 'false' setting 'xpack.ml.enabled', 'false' // copy keystores, keys and certificates into config/ extraConfigFile nodeKeystore.name, nodeKeystore extraConfigFile nodeKey.name, nodeKey extraConfigFile nodeCert.name, nodeCert extraConfigFile clientKeyStore.name, clientKeyStore extraConfigFile clientKey.name, clientKey extraConfigFile clientCert.name, clientCert setupCommand 'setupTestUser', 'bin/elasticsearch-users', 'useradd', 'test_user', '-p', 'x-pack-test-password', '-r', 'superuser' setupCommand 'setupMonitoringUser', 'bin/elasticsearch-users', 'useradd', 'monitoring_agent', '-p', 'x-pack-test-password', '-r', 'remote_monitoring_agent' waitCondition = { NodeInfo node, AntBuilder ant -> WaitForHttpResource http = new WaitForHttpResource("https", node.httpUri(), numNodes) http.setTrustStoreFile(clientKeyStore) http.setTrustStorePassword("testclient") http.setUsername("test_user") http.setPassword("x-pack-test-password") return http.wait(5000) } } ext.expansions = [ 'expected.plugins.count': pluginsCount ] processTestResources { from(sourceSets.test.resources.srcDirs) { include '**/*.yml' inputs.properties(expansions) MavenFilteringHack.filter(it, expansions) } }