[7.x] Convert discovery-* from integTest to [yaml | java]RestTest or internalClusterTest (#60084) (#60344)

For OSS plugins that begin with discovery-*, the integTest
task is now a no-op and all of the tests are now executed via a test,
yamlRestTest, javaRestTest, or internalClusterTest.

related: #56841
related: #59444
This commit is contained in:
Jake Landis 2020-07-29 11:20:19 -05:00 committed by GitHub
parent 96b7122917
commit f6abd67029
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 44 additions and 36 deletions

View File

@ -19,7 +19,8 @@ import org.elasticsearch.gradle.info.BuildParams
* specific language governing permissions and limitations * specific language governing permissions and limitations
* under the License. * under the License.
*/ */
apply plugin: 'elasticsearch.rest-resources' apply plugin: 'elasticsearch.yaml-rest-test'
apply plugin: 'elasticsearch.internal-cluster-test'
esplugin { esplugin {
description 'The Azure Classic Discovery plugin allows to use Azure Classic API for the unicast discovery mechanism' description 'The Azure Classic Discovery plugin allows to use Azure Classic API for the unicast discovery mechanism'
@ -63,6 +64,7 @@ restResources {
includeCore '_common', 'cluster', 'nodes' includeCore '_common', 'cluster', 'nodes'
} }
} }
// needed to be consistent with ssl host checking // needed to be consistent with ssl host checking
String host = InetAddress.getLoopbackAddress().getHostAddress() String host = InetAddress.getLoopbackAddress().getHostAddress()
@ -88,9 +90,10 @@ task createKey(type: LoggedExec) {
'-keypass', 'keypass', '-keypass', 'keypass',
'-storepass', 'keypass' '-storepass', 'keypass'
} }
//no unit tests
test.enabled = false
// add keystore to test classpath: it expects it there // add keystore to test classpath: it expects it there
processTestResources { processInternalClusterTestResources {
from createKey from createKey
} }

View File

@ -72,7 +72,6 @@ import java.util.concurrent.ExecutionException;
@ESIntegTestCase.ClusterScope(numDataNodes = 2, numClientNodes = 0) @ESIntegTestCase.ClusterScope(numDataNodes = 2, numClientNodes = 0)
@SuppressForbidden(reason = "use http server") @SuppressForbidden(reason = "use http server")
// TODO this should be a IT but currently all ITs in this project run against a real cluster
public class AzureDiscoveryClusterFormationTests extends ESIntegTestCase { public class AzureDiscoveryClusterFormationTests extends ESIntegTestCase {
public static class TestPlugin extends Plugin { public static class TestPlugin extends Plugin {

View File

@ -18,7 +18,8 @@ import org.elasticsearch.gradle.info.BuildParams
* specific language governing permissions and limitations * specific language governing permissions and limitations
* under the License. * under the License.
*/ */
apply plugin: 'elasticsearch.rest-resources' apply plugin: 'elasticsearch.yaml-rest-test'
apply plugin: 'elasticsearch.internal-cluster-test'
esplugin { esplugin {
description 'The EC2 discovery plugin allows to use AWS API for the unicast discovery mechanism.' description 'The EC2 discovery plugin allows to use AWS API for the unicast discovery mechanism.'

View File

@ -22,15 +22,14 @@ import org.elasticsearch.gradle.MavenFilteringHack
import org.elasticsearch.gradle.info.BuildParams import org.elasticsearch.gradle.info.BuildParams
import org.elasticsearch.gradle.test.AntFixture import org.elasticsearch.gradle.test.AntFixture
import org.elasticsearch.gradle.test.RestIntegTestTask import org.elasticsearch.gradle.test.RestIntegTestTask
import org.elasticsearch.gradle.test.rest.YamlRestTestPlugin
import static org.elasticsearch.gradle.PropertyNormalization.IGNORE_VALUE import static org.elasticsearch.gradle.PropertyNormalization.IGNORE_VALUE
apply plugin: 'elasticsearch.standalone-rest-test' apply plugin: 'elasticsearch.yaml-rest-test'
apply plugin: 'elasticsearch.rest-test'
apply plugin: 'elasticsearch.rest-resources'
dependencies { dependencies {
testImplementation project(':plugins:discovery-ec2') yamlRestTestImplementation project(':plugins:discovery-ec2')
} }
restResources { restResources {
@ -45,13 +44,13 @@ Map<String, Object> expansions = [
'expected_nodes': ec2NumberOfNodes 'expected_nodes': ec2NumberOfNodes
] ]
processTestResources { processYamlRestTestResources {
inputs.properties(expansions) inputs.properties(expansions)
MavenFilteringHack.filter(it, expansions) MavenFilteringHack.filter(it, expansions)
} }
// disable default test task, use spezialized ones below // disable default yamlRestTest task, use spezialized ones below
integTest.enabled = false yamlRestTest.enabled = false
/* /*
* Test using various credential providers (see also https://docs.aws.amazon.com/sdk-for-java/v2/developer-guide/credentials.html): * Test using various credential providers (see also https://docs.aws.amazon.com/sdk-for-java/v2/developer-guide/credentials.html):
@ -66,19 +65,26 @@ integTest.enabled = false
*/ */
['KeyStore', 'EnvVariables', 'SystemProperties', 'ContainerCredentials', 'InstanceProfile'].forEach { action -> ['KeyStore', 'EnvVariables', 'SystemProperties', 'ContainerCredentials', 'InstanceProfile'].forEach { action ->
AntFixture fixture = tasks.create(name: "ec2Fixture${action}", type: AntFixture) { AntFixture fixture = tasks.create(name: "ec2Fixture${action}", type: AntFixture) {
dependsOn compileTestJava dependsOn project.sourceSets.yamlRestTest.runtimeClasspath
env 'CLASSPATH', "${-> project.sourceSets.test.runtimeClasspath.asPath}" env 'CLASSPATH', "${-> project.sourceSets.yamlRestTest.runtimeClasspath.asPath}"
executable = "${BuildParams.runtimeJavaHome}/bin/java" executable = "${BuildParams.runtimeJavaHome}/bin/java"
args 'org.elasticsearch.discovery.ec2.AmazonEC2Fixture', baseDir, "${buildDir}/testclusters/integTest${action}-1/config/unicast_hosts.txt" args 'org.elasticsearch.discovery.ec2.AmazonEC2Fixture', baseDir, "${buildDir}/testclusters/yamlRestTest${action}-1/config/unicast_hosts.txt"
} }
tasks.create(name: "integTest${action}", type: RestIntegTestTask) { tasks.create(name: "yamlRestTest${action}", type: RestIntegTestTask) {
dependsOn fixture, project(':plugins:discovery-ec2').bundlePlugin dependsOn fixture, project(':plugins:discovery-ec2').bundlePlugin
} }
SourceSetContainer sourceSets = project.getExtensions().getByType(SourceSetContainer.class);
SourceSet yamlRestTestSourceSet = sourceSets.getByName(YamlRestTestPlugin.SOURCE_SET_NAME)
"yamlRestTest${action}" {
runner {
setTestClassesDirs(yamlRestTestSourceSet.getOutput().getClassesDirs())
setClasspath(yamlRestTestSourceSet.getRuntimeClasspath())
}
}
check.dependsOn("yamlRestTest${action}")
check.dependsOn("integTest${action}") testClusters."yamlRestTest${action}" {
testClusters."integTest${action}" {
numberOfNodes = ec2NumberOfNodes numberOfNodes = ec2NumberOfNodes
plugin project(':plugins:discovery-ec2').bundlePlugin.archiveFile plugin project(':plugins:discovery-ec2').bundlePlugin.archiveFile
@ -91,19 +97,19 @@ integTest.enabled = false
} }
// Extra config for KeyStore // Extra config for KeyStore
testClusters.integTestKeyStore { testClusters.yamlRestTestKeyStore {
keystore 'discovery.ec2.access_key', 'ec2_integration_test_access_key' keystore 'discovery.ec2.access_key', 'ec2_integration_test_access_key'
keystore 'discovery.ec2.secret_key', 'ec2_integration_test_secret_key' keystore 'discovery.ec2.secret_key', 'ec2_integration_test_secret_key'
} }
// Extra config for EnvVariables // Extra config for EnvVariables
testClusters.integTestEnvVariables { testClusters.yamlRestTestEnvVariables {
environment 'AWS_ACCESS_KEY_ID', 'ec2_integration_test_access_key' environment 'AWS_ACCESS_KEY_ID', 'ec2_integration_test_access_key'
environment 'AWS_SECRET_ACCESS_KEY', 'ec2_integration_test_secret_key' environment 'AWS_SECRET_ACCESS_KEY', 'ec2_integration_test_secret_key'
} }
// Extra config for SystemProperties // Extra config for SystemProperties
testClusters.integTestSystemProperties { testClusters.yamlRestTestSystemProperties {
systemProperty 'aws.accessKeyId', 'ec2_integration_test_access_key' systemProperty 'aws.accessKeyId', 'ec2_integration_test_access_key'
systemProperty 'aws.secretKey', 'ec2_integration_test_secret_key' systemProperty 'aws.secretKey', 'ec2_integration_test_secret_key'
} }
@ -111,7 +117,7 @@ testClusters.integTestSystemProperties {
// Extra config for ContainerCredentials // Extra config for ContainerCredentials
ec2FixtureContainerCredentials.env 'ACTIVATE_CONTAINER_CREDENTIALS', true ec2FixtureContainerCredentials.env 'ACTIVATE_CONTAINER_CREDENTIALS', true
testClusters.integTestContainerCredentials { testClusters.yamlRestTestContainerCredentials {
environment 'AWS_CONTAINER_CREDENTIALS_FULL_URI', environment 'AWS_CONTAINER_CREDENTIALS_FULL_URI',
{ "http://${-> tasks.findByName("ec2FixtureContainerCredentials").addressAndPort}/ecs_credentials_endpoint" }, IGNORE_VALUE { "http://${-> tasks.findByName("ec2FixtureContainerCredentials").addressAndPort}/ecs_credentials_endpoint" }, IGNORE_VALUE
} }

View File

@ -32,6 +32,6 @@ public class AmazonEC2DiscoveryClientYamlTestSuiteIT extends ESClientYamlSuiteTe
@ParametersFactory @ParametersFactory
public static Iterable<Object[]> parameters() throws Exception { public static Iterable<Object[]> parameters() throws Exception {
return ESClientYamlSuiteTestCase.createParameters(); return createParameters();
} }
} }

View File

@ -1,4 +1,5 @@
apply plugin: 'elasticsearch.rest-resources' apply plugin: 'elasticsearch.yaml-rest-test'
apply plugin: 'elasticsearch.internal-cluster-test'
esplugin { esplugin {
description 'The Google Compute Engine (GCE) Discovery plugin allows to use GCE API for the unicast discovery mechanism.' description 'The Google Compute Engine (GCE) Discovery plugin allows to use GCE API for the unicast discovery mechanism.'

View File

@ -24,14 +24,12 @@ import org.elasticsearch.gradle.test.AntFixture
import static org.elasticsearch.gradle.PropertyNormalization.IGNORE_VALUE import static org.elasticsearch.gradle.PropertyNormalization.IGNORE_VALUE
apply plugin: 'elasticsearch.standalone-rest-test' apply plugin: 'elasticsearch.yaml-rest-test'
apply plugin: 'elasticsearch.rest-test'
apply plugin: 'elasticsearch.rest-resources'
final int gceNumberOfNodes = 3 final int gceNumberOfNodes = 3
dependencies { dependencies {
testImplementation project(':plugins:discovery-gce') yamlRestTestImplementation project(':plugins:discovery-gce')
} }
restResources { restResources {
@ -42,26 +40,26 @@ restResources {
/** A task to start the GCEFixture which emulates a GCE service **/ /** A task to start the GCEFixture which emulates a GCE service **/
task gceFixture(type: AntFixture) { task gceFixture(type: AntFixture) {
dependsOn compileTestJava dependsOn project.sourceSets.yamlRestTest.runtimeClasspath
env 'CLASSPATH', "${-> project.sourceSets.test.runtimeClasspath.asPath}" env 'CLASSPATH', "${-> project.sourceSets.yamlRestTest.runtimeClasspath.asPath}"
executable = "${BuildParams.runtimeJavaHome}/bin/java" executable = "${BuildParams.runtimeJavaHome}/bin/java"
args 'org.elasticsearch.cloud.gce.GCEFixture', baseDir, "${buildDir}/testclusters/integTest-1/config/unicast_hosts.txt" args 'org.elasticsearch.cloud.gce.GCEFixture', baseDir, "${buildDir}/testclusters/yamlRestTest-1/config/unicast_hosts.txt"
} }
Map<String, Object> expansions = [ Map<String, Object> expansions = [
'expected_nodes': gceNumberOfNodes 'expected_nodes': gceNumberOfNodes
] ]
processTestResources { processYamlRestTestResources {
inputs.properties(expansions) inputs.properties(expansions)
MavenFilteringHack.filter(it, expansions) MavenFilteringHack.filter(it, expansions)
} }
integTest { yamlRestTest {
dependsOn gceFixture, project(':plugins:discovery-gce').bundlePlugin dependsOn gceFixture, project(':plugins:discovery-gce').bundlePlugin
} }
testClusters.integTest { testClusters.yamlRestTest {
numberOfNodes = gceNumberOfNodes numberOfNodes = gceNumberOfNodes
plugin project(':plugins:discovery-gce').bundlePlugin.archiveFile plugin project(':plugins:discovery-gce').bundlePlugin.archiveFile
// use gce fixture for Auth calls instead of http://metadata.google.internal // use gce fixture for Auth calls instead of http://metadata.google.internal