import org.elasticsearch.gradle.LoggedExec apply plugin: 'elasticsearch.rest-test' dependencies { testCompile project(path: ':x-plugins:elasticsearch:shield', 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() } 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', 'san=dns:localhost,ip:127.0.0.1', '-storepass', 'keypass' } // add keystore to test classpath: it expects it there sourceSets.test.resources.srcDir(keystore.parentFile) processTestResources.dependsOn(createKey) // add ES plugins, this loop must be outside of a configuration closure, otherwise it may get executed multiple times for (Project subproj : project.rootProject.subprojects) { if (subproj.path.startsWith(':plugins:')) { // need to get a non-decorated project object, so must re-lookup the project by path integTest.clusterConfig.plugin(subproj.name, project(subproj.path)) } } integTest { cluster { // TODO: use some variable here for port number systemProperty 'es.marvel.agent.exporter.es.hosts', 'https://marvel_export:changeme@localhost:9400' 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 'licence', project(':x-plugins:elasticsearch:license:plugin') plugin 'shield', project(':x-plugins:elasticsearch:shield') plugin 'watcher', project(':x-plugins:elasticsearch:watcher') plugin 'marvel-agent', project(':x-plugins:elasticsearch:marvel') // copy keystore into config/ extraConfigFile keystore.name, keystore setupCommand 'setupTestUser', 'bin/shield/esusers', 'useradd', 'test_user', '-p', 'changeme', '-r', 'admin' setupCommand 'setupMarvelUser', 'bin/shield/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 } } }