mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-08 22:14:59 +00:00
By default, in integ tests we wait for the standalone cluster to start by using the ant Get task to retrieve the cluster health endpoint. However the ant task has no facilities for customising the trusted CAs for a https resource, so if the integ test cluster has TLS enabled on the http interface (using a custom CA) we need a separate utility for that purpose. Backport of: #40573
102 lines
3.9 KiB
Groovy
102 lines
3.9 KiB
Groovy
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 "org.elasticsearch.plugin:x-pack-core:${version}"
|
|
}
|
|
|
|
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)
|
|
}
|
|
}
|