From 7f3aa3aebd08158521e703687acf75ca37edc136 Mon Sep 17 00:00:00 2001 From: Vacha Date: Thu, 5 Aug 2021 14:02:02 -0700 Subject: [PATCH 1/3] Adding mixed cluster bwc tests Signed-off-by: Vacha --- build.gradle | 100 ++++++++++++++++++ .../ad/bwc/ADBackwardsCompatibilityIT.java | 89 ++++++++++++++++ .../opendistro-anomaly-detection-1.13.0.0.zip | Bin 0 -> 9133097 bytes .../opendistro-job-scheduler-1.13.0.0.zip | Bin 0 -> 974325 bytes 4 files changed, 189 insertions(+) create mode 100644 src/test/java/org/opensearch/ad/bwc/ADBackwardsCompatibilityIT.java create mode 100644 src/test/resources/org/opensearch/ad/bwc/anomaly-detection/1.13.0.0/opendistro-anomaly-detection-1.13.0.0.zip create mode 100644 src/test/resources/org/opensearch/ad/bwc/job-scheduler/1.13.0.0/opendistro-job-scheduler-1.13.0.0.zip diff --git a/build.gradle b/build.gradle index c7a60b2ac..c41caa793 100644 --- a/build.gradle +++ b/build.gradle @@ -26,6 +26,7 @@ import java.util.concurrent.Callable import org.opensearch.gradle.test.RestIntegTestTask +import org.opensearch.gradle.testclusters.StandaloneRestIntegTestTask buildscript { ext { @@ -184,6 +185,12 @@ integTest { } } + if (System.getProperty("tests.rest.suite") == null) { + filter { + excludeTestsMatching "org.opensearch.ad.bwc.*IT" + } + } + // The 'doFirst' delays till execution time. doFirst { // Tell the test JVM if the cluster JVM is running under a debugger so that tests can @@ -259,6 +266,99 @@ testClusters.integTest { } } +String bwcVersion = "1.13.0.0"; +String baseName = "adMixedCluster" +String bwcFilePath = "src/test/resources/org/opensearch/ad/bwc/" + +testClusters { + "${baseName}" { + testDistribution = "ARCHIVE" + versions = ["7.10.2","1.0.0"] + numberOfNodes = 3 + plugin(provider(new Callable(){ + @Override + RegularFile call() throws Exception { + return new RegularFile() { + @Override + File getAsFile() { + return fileTree(bwcFilePath + "job-scheduler/" + bwcVersion).getSingleFile() + } + } + } + })) + plugin(provider(new Callable(){ + @Override + RegularFile call() throws Exception { + return new RegularFile() { + @Override + File getAsFile() { + return fileTree(bwcFilePath + "anomaly-detection/" + bwcVersion).getSingleFile() + } + } + } + })) + setting 'repositories.url.allowed_urls', 'http://snapshot.test*' + setting 'path.repo', "${buildDir}/cluster/shared/repo/${baseName}" + setting 'http.content_type.required', 'true' + } +} + +task "${baseName}#oldVersionClusterTask"(type: StandaloneRestIntegTestTask) { + useCluster testClusters."${baseName}" + if (System.getProperty("mixedCluster") != null) { + filter { + includeTestsMatching "org.opensearch.ad.bwc.*IT" + } + } + systemProperty 'tests.rest.suite', 'old_cluster' + systemProperty 'tests.plugin_bwc_version', bwcVersion + systemProperty 'tests.cluster_name', baseName + nonInputProperties.systemProperty('tests.rest.cluster', "${-> testClusters."${baseName}".allHttpSocketURI.join(",")}") + nonInputProperties.systemProperty('tests.clustername', "${-> testClusters."${baseName}".getName()}") +} + +task "${baseName}#mixedClusterTask"(type: StandaloneRestIntegTestTask) { + dependsOn "${baseName}#oldVersionClusterTask" + useCluster testClusters."${baseName}" + List> plugins = [ + provider(new Callable(){ + @Override + RegularFile call() throws Exception { + return new RegularFile() { + @Override + File getAsFile() { + return fileTree(bwcFilePath + "job-scheduler/" + project.version).getSingleFile() + } + } + } + }), + provider(new Callable(){ + @Override + RegularFile call() throws Exception { + return new RegularFile() { + @Override + File getAsFile() { + return fileTree(bwcFilePath + "anomaly-detection/" + project.version).getSingleFile() + } + } + } + }) + ] + doFirst { + testClusters."${baseName}".upgradeNodeAndPluginToNextVersion(plugins) + } + if (System.getProperty("mixedCluster") != null) { + filter { + includeTestsMatching "org.opensearch.ad.bwc.*IT" + } + } + systemProperty 'tests.rest.suite', 'mixed_cluster' + systemProperty 'tests.plugin_bwc_version', bwcVersion + systemProperty 'tests.cluster_name', baseName + nonInputProperties.systemProperty('tests.rest.cluster', "${-> testClusters."${baseName}".allHttpSocketURI.join(",")}") + nonInputProperties.systemProperty('tests.clustername', "${-> testClusters."${baseName}".getName()}") +} + run { doFirst { // There seems to be an issue when running multi node run or integ tasks with unicast_hosts diff --git a/src/test/java/org/opensearch/ad/bwc/ADBackwardsCompatibilityIT.java b/src/test/java/org/opensearch/ad/bwc/ADBackwardsCompatibilityIT.java new file mode 100644 index 000000000..9747ea592 --- /dev/null +++ b/src/test/java/org/opensearch/ad/bwc/ADBackwardsCompatibilityIT.java @@ -0,0 +1,89 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ +package org.opensearch.ad.bwc; + +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +import org.junit.Assert; +import org.opensearch.ad.AnomalyDetectorRestTestCase; +import org.opensearch.common.settings.Settings; +import org.opensearch.test.rest.OpenSearchRestTestCase; + +public class ADBackwardsCompatibilityIT extends AnomalyDetectorRestTestCase { + + private static final ClusterType CLUSTER_TYPE = ClusterType.parse(System.getProperty("tests.rest.suite")); + private static final String CLUSTER_NAME = System.getProperty("tests.cluster_name"); + + @Override + protected final boolean preserveIndicesUponCompletion() { + return true; + } + + @Override + protected final boolean preserveReposUponCompletion() { + return true; + } + + @Override + protected boolean preserveTemplatesUponCompletion() { + return true; + } + + @Override + protected final Settings restClientSettings() { + return Settings + .builder() + .put(super.restClientSettings()) + // increase the timeout here to 90 seconds to handle long waits for a green + // cluster health. the waits for green need to be longer than a minute to + // account for delayed shards + .put(OpenSearchRestTestCase.CLIENT_SOCKET_TIMEOUT, "90s") + .build(); + } + + @SuppressWarnings("unchecked") + public void testPluginUpgradeInAMixedCluster() throws Exception { + Map> responseMap = (Map>) getAsMap("_nodes/" + CLUSTER_NAME + "-0/plugins") + .get("nodes"); + for (Map response : responseMap.values()) { + List> plugins = (List>) response.get("plugins"); + Set pluginNames = plugins.stream().map(map -> map.get("name")).collect(Collectors.toSet()); + switch (CLUSTER_TYPE) { + case OLD: + Assert.assertTrue(pluginNames.contains("opendistro-anomaly-detection")); + Assert.assertTrue(pluginNames.contains("opendistro-job-scheduler")); + break; + case MIXED: + Assert.assertTrue(pluginNames.contains("opensearch-anomaly-detection")); + Assert.assertTrue(pluginNames.contains("opensearch-job-scheduler")); + break; + } + break; + } + } + + private enum ClusterType { + OLD, + MIXED; + + public static ClusterType parse(String value) { + switch (value) { + case "old_cluster": + return OLD; + case "mixed_cluster": + return MIXED; + default: + throw new AssertionError("unknown cluster type: " + value); + } + } + } + +} diff --git a/src/test/resources/org/opensearch/ad/bwc/anomaly-detection/1.13.0.0/opendistro-anomaly-detection-1.13.0.0.zip b/src/test/resources/org/opensearch/ad/bwc/anomaly-detection/1.13.0.0/opendistro-anomaly-detection-1.13.0.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..a68b74704d0793c877a20ee4537da50c9d6231e5 GIT binary patch literal 9133097 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