import org.elasticsearch.gradle.LoggedExec import org.elasticsearch.gradle.MavenFilteringHack apply plugin: 'elasticsearch.rest-test' dependencies { testCompile project(path: ':x-plugins:elasticsearch:x-pack', configuration: 'runtime') } // location of keystore and files to generate it File keystore = new File(project.buildDir, 'keystore/test-node.jks') // generate the keystore task createKey(type: LoggedExec) { doFirst { project.delete(keystore.parentFile) keystore.parentFile.mkdirs() } String subjectAlternateNames = 'san=dns:localhost,ip:127.0.0.1' // some machines have a different name for ipv6 loopback, // at least on ubuntu its ip6-localhost. other machines, like windows, // won't resolve it back to any hostname at all. Try to setup ipv6 to // work in all cases. try { String localhost6 = InetAddress.getByName("::1").getCanonicalHostName() if (!localhost6.equals("localhost")) { if (localhost6.startsWith("0")) { subjectAlternateNames += ",ip:" + localhost6 } else { subjectAlternateNames += ",dns:" + localhost6 } } } catch (UnknownHostException ok) { // e.g. no ipv6 support } executable = 'keytool' standardInput = new ByteArrayInputStream('FirstName LastName\nUnit\nOrganization\nCity\nState\nNL\nyes\n\n'.getBytes('UTF-8')) args '-genkey', '-alias', 'test-node', '-keystore', keystore, '-keyalg', 'RSA', '-keysize', '2048', '-validity', '712', '-ext', subjectAlternateNames, '-storepass', 'keypass' } // add keystore to test classpath: it expects it there sourceSets.test.resources.srcDir(keystore.parentFile) processTestResources.dependsOn(createKey) ext.pluginsCount = 1 // we install xpack explicitly project.rootProject.subprojects.findAll { it.path.startsWith(':plugins:') }.each { subproj -> // need to get a non-decorated project object, so must re-lookup the project by path integTest.cluster.plugin(subproj.name, project(subproj.path)) pluginsCount += 1 } integTest { cluster { systemProperty 'es.marvel.agent.exporter.es.ssl.truststore.path', keystore.name systemProperty 'es.marvel.agent.exporter.es.ssl.truststore.password', 'keypass' systemProperty 'es.shield.transport.ssl', 'true' systemProperty 'es.shield.http.ssl', 'true' systemProperty 'es.shield.ssl.keystore.path', keystore.name systemProperty 'es.shield.ssl.keystore.password', 'keypass' plugin 'x-pack', project(':x-plugins:elasticsearch:x-pack') // copy keystore into config/ extraConfigFile keystore.name, keystore setupCommand 'setupTestUser', 'bin/x-pack/esusers', 'useradd', 'test_user', '-p', 'changeme', '-r', 'admin' setupCommand 'setupMarvelUser', 'bin/x-pack/esusers', 'useradd', 'marvel_export', '-p', 'changeme', '-r', 'marvel_agent' waitCondition = { node, ant -> // we just return true, doing an https check is tricky here return true } } } ext.expansions = [ 'expected.plugins.count': pluginsCount ] processTestResources { from(sourceSets.test.resources.srcDirs) { include '**/*.yaml' inputs.properties(expansions) MavenFilteringHack.filter(it, expansions) } }