This is an automated email from the ASF dual-hosted git repository. khowe pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push: new 5367fa5 GEODE-5194: Relax Gfsh connection version check to exclude patch version (#1942) 5367fa5 is described below commit 5367fa520b4542b1f681dd6220e7625b68a82607 Author: Kenneth Howe <kh...@pivotal.io> AuthorDate: Thu May 10 06:56:12 2018 -0700 GEODE-5194: Relax Gfsh connection version check to exclude patch version (#1942) --- .../internal/cli/commands/ConnectCommand.java | 13 ++++++- .../internal/cli/commands/ConnectCommandTest.java | 45 +++++++++++++++++++++- 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ConnectCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ConnectCommand.java index e5e834a..bc672dd 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ConnectCommand.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ConnectCommand.java @@ -74,6 +74,9 @@ public class ConnectCommand extends InternalGfshCommand { // millis that connect --locator will wait for a response from the locator. static final int CONNECT_LOCATOR_TIMEOUT_MS = 60000; // see bug 45971 + private static final int VERSION_MAJOR = 0; + private static final int VERSION_MINOR = 1; + private static final UserInputProperty[] USER_INPUT_PROPERTIES = {UserInputProperty.KEYSTORE, UserInputProperty.KEYSTORE_PASSWORD, UserInputProperty.KEYSTORE_TYPE, UserInputProperty.TRUSTSTORE, @@ -169,7 +172,10 @@ public class ConnectCommand extends InternalGfshCommand { String remoteVersion = null; try { remoteVersion = invoker.getRemoteVersion(); - if (remoteVersion.equalsIgnoreCase(gfshVersion)) { + if (versionComponent(remoteVersion, VERSION_MAJOR) + .equalsIgnoreCase(versionComponent(gfshVersion, VERSION_MAJOR)) + && versionComponent(remoteVersion, VERSION_MINOR) + .equalsIgnoreCase(versionComponent(gfshVersion, VERSION_MINOR))) { return result; } } catch (Exception e) { @@ -187,6 +193,11 @@ public class ConnectCommand extends InternalGfshCommand { } } + private String versionComponent(String version, int component) { + String[] versionComponents = StringUtils.split(version, '.'); + return versionComponents.length >= component + 1 ? versionComponents[component] : ""; + } + /** * @param useSsl if true, and no files/options passed, we would still insist on prompting for ssl * config (considered only when the last three parameters are null) diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ConnectCommandTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ConnectCommandTest.java index 7d6eecf..ac5e152 100644 --- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ConnectCommandTest.java +++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ConnectCommandTest.java @@ -302,7 +302,17 @@ public class ConnectCommandTest { } @Test - public void connectToManagerWithDifferentVersion() { + public void connectToManagerWithDifferentMajorVersion() { + when(gfsh.getVersion()).thenReturn("2.2"); + when(operationInvoker.getRemoteVersion()).thenReturn("1.2"); + when(operationInvoker.isConnected()).thenReturn(true); + gfshParserRule.executeAndAssertThat(connectCommand, "connect --locator=localhost:4040") + .statusIsError() + .containsOutput("Cannot use a 2.2 gfsh client to connect to a 1.2 cluster."); + } + + @Test + public void connectToManagerWithDifferentMinorVersion() { when(gfsh.getVersion()).thenReturn("1.2"); when(operationInvoker.getRemoteVersion()).thenReturn("1.3"); when(operationInvoker.isConnected()).thenReturn(true); @@ -312,6 +322,39 @@ public class ConnectCommandTest { } @Test + public void connectToManagerWithGreaterPatchVersion() { + when(gfsh.getVersion()).thenReturn("1.5.1"); + when(operationInvoker.getRemoteVersion()).thenReturn("1.5.2"); + when(operationInvoker.isConnected()).thenReturn(true); + when(result.getStatus()).thenReturn(Result.Status.OK); + + gfshParserRule.executeAndAssertThat(connectCommand, "connect --locator=localhost:4040") + .statusIsSuccess(); + } + + @Test + public void connectToManagerWithNoPatchVersion() { + when(gfsh.getVersion()).thenReturn("1.5.1"); + when(operationInvoker.getRemoteVersion()).thenReturn("1.5"); + when(operationInvoker.isConnected()).thenReturn(true); + when(result.getStatus()).thenReturn(Result.Status.OK); + + gfshParserRule.executeAndAssertThat(connectCommand, "connect --locator=localhost:4040") + .statusIsSuccess(); + } + + @Test + public void connectToManagerWithLessorPatchVersion() { + when(gfsh.getVersion()).thenReturn("1.5.1"); + when(operationInvoker.getRemoteVersion()).thenReturn("1.5.0"); + when(operationInvoker.isConnected()).thenReturn(true); + when(result.getStatus()).thenReturn(Result.Status.OK); + + gfshParserRule.executeAndAssertThat(connectCommand, "connect --locator=localhost:4040") + .statusIsSuccess(); + } + + @Test public void connectToOlderManagerWithNewerGfsh() { when(gfsh.getVersion()).thenReturn("1.5"); when(operationInvoker.getRemoteVersion()) -- To stop receiving notification emails like this one, please contact kh...@apache.org.