This is an automated email from the ASF dual-hosted git repository. nnag pushed a commit to branch support/1.15 in repository https://gitbox.apache.org/repos/asf/geode.git
commit 3cb8cff3d8222f8706f47771406e746ddb9b4995 Author: Nabarun Nag <[email protected]> AuthorDate: Mon Jan 24 17:19:49 2022 -0800 GEODE-6751: Improved the tests for locator-gfsh compatibility (#7289) * Previously the tests only checked with 1.3.0 version of locator * The test now checks the behavior of the all the versions * New version gfsh could not connect with locators versions below 1.10.0 * New version gfsh are now able to connect with locators 1.10.0 and above. * This is now reflected in the test. * Previously a race condition between the execution of the two scripts caused the second script to be executed before the locator startup had completed. * Now the locator is started using the cluster startup rule. (cherry picked from commit 085b616dab895cdaa9f61f796405b11af82ffd80) --- .../cli/commands/ConnectCommandUpgradeTest.java | 57 +++++++++++++++++----- 1 file changed, 46 insertions(+), 11 deletions(-) diff --git a/geode-assembly/src/upgradeTest/java/org/apache/geode/management/internal/cli/commands/ConnectCommandUpgradeTest.java b/geode-assembly/src/upgradeTest/java/org/apache/geode/management/internal/cli/commands/ConnectCommandUpgradeTest.java index 98b0551..d99b86a 100644 --- a/geode-assembly/src/upgradeTest/java/org/apache/geode/management/internal/cli/commands/ConnectCommandUpgradeTest.java +++ b/geode-assembly/src/upgradeTest/java/org/apache/geode/management/internal/cli/commands/ConnectCommandUpgradeTest.java @@ -19,22 +19,44 @@ package org.apache.geode.management.internal.cli.commands; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assume.assumeFalse; +import java.util.Collection; +import java.util.List; + import org.apache.commons.lang3.JavaVersion; import org.apache.commons.lang3.SystemUtils; import org.junit.Rule; import org.junit.Test; import org.junit.experimental.categories.Category; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.apache.geode.test.dunit.rules.ClusterStartupRule; +import org.apache.geode.test.dunit.rules.MemberVM; import org.apache.geode.test.junit.categories.GfshTest; import org.apache.geode.test.junit.rules.gfsh.GfshExecution; import org.apache.geode.test.junit.rules.gfsh.GfshRule; import org.apache.geode.test.junit.rules.gfsh.GfshScript; +import org.apache.geode.test.version.TestVersion; +import org.apache.geode.test.version.VersionManager; @Category(GfshTest.class) +@RunWith(Parameterized.class) public class ConnectCommandUpgradeTest { + private String oldVersion; + + public ConnectCommandUpgradeTest(String oldVersion) { + this.oldVersion = oldVersion; + } + + @Parameterized.Parameters(name = "Locator Version: {0}") + public static Collection<String> data() { + List<String> result = VersionManager.getInstance().getVersionsWithoutCurrent(); + return result; + } + @Rule - public GfshRule gfsh130 = new GfshRule("1.3.0"); + public ClusterStartupRule clusterStartupRule = new ClusterStartupRule(); @Rule public GfshRule gfshDefault = new GfshRule(); @@ -45,22 +67,35 @@ public class ConnectCommandUpgradeTest { "this test can only be run with pre-9 jdk since it needs to run older version of gfsh", SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_9)); - GfshScript - .of("start locator") - .execute(gfsh130); + MemberVM oldVersionLocator = clusterStartupRule.startLocatorVM(0, oldVersion); - GfshExecution connect = GfshScript - .of("connect") - .expectFailure() - .execute(gfshDefault); + if (TestVersion.compare(oldVersion, "1.10.0") < 0) { // New version gfsh could not connect to + // locators with version below 1.10.0 + GfshExecution connect = GfshScript + .of("connect --locator=localhost[" + oldVersionLocator.getPort() + "]") + .expectFailure() + .execute(gfshDefault); - assertThat(connect.getOutputText()) - .contains("Cannot use a") - .contains("gfsh client to connect to this cluster."); + assertThat(connect.getOutputText()) + .contains("Cannot use a") + .contains("gfsh client to connect to") + .contains("cluster."); + + } else { // From 1.10.0 new version gfsh are able to connect to old version locators + GfshExecution connect = GfshScript + .of("connect --locator=localhost[" + oldVersionLocator.getPort() + "]") + .expectExitCode(0) + .execute(gfshDefault); + + assertThat(connect.getOutputText()) + .contains("Successfully connected to:"); + } } @Test public void invalidHostname() { + MemberVM oldVersionLocator = clusterStartupRule.startLocatorVM(0, oldVersion); + GfshExecution connect = GfshScript .of("connect --locator=\"invalid host name[52326]\"") .expectFailure()
