You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by up...@apache.org on 2018/08/27 16:34:19 UTC

[geode] branch develop updated: GEODE-5623: Use Awaitility in StopLcoatorCommandDUnitTest (#2379)

This is an automated email from the ASF dual-hosted git repository.

upthewaterspout 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 a383053  GEODE-5623: Use Awaitility in StopLcoatorCommandDUnitTest (#2379)
a383053 is described below

commit a3830536834fa70dbf00bd70ce381c94bf264307
Author: Dan Smith <ds...@pivotal.io>
AuthorDate: Mon Aug 27 09:34:11 2018 -0700

    GEODE-5623: Use Awaitility in StopLcoatorCommandDUnitTest (#2379)
    
    Apparently members are not immmediately visible to stop after gfsh start
    locator. Changing the test to use awaitility to wait until the members
    can be stopped.
---
 .../cli/commands/StopLocatorCommandDUnitTest.java  | 29 +++++++++++++++++-----
 1 file changed, 23 insertions(+), 6 deletions(-)

diff --git a/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/cli/commands/StopLocatorCommandDUnitTest.java b/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/cli/commands/StopLocatorCommandDUnitTest.java
index 5903796..28c2829 100644
--- a/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/cli/commands/StopLocatorCommandDUnitTest.java
+++ b/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/cli/commands/StopLocatorCommandDUnitTest.java
@@ -15,6 +15,7 @@
 package org.apache.geode.management.internal.cli.commands;
 
 import static org.apache.geode.distributed.internal.DistributionConfig.GEMFIRE_PREFIX;
+import static org.apache.geode.management.MXBeanAwaitility.await;
 import static org.apache.geode.management.cli.Result.Status.ERROR;
 import static org.apache.geode.management.cli.Result.Status.OK;
 import static org.apache.geode.management.internal.cli.i18n.CliStrings.GROUP;
@@ -34,6 +35,7 @@ import java.io.File;
 import java.io.IOException;
 import java.util.Properties;
 import java.util.Set;
+import java.util.concurrent.TimeUnit;
 
 import javax.management.MBeanServerConnection;
 import javax.management.ObjectName;
@@ -154,27 +156,39 @@ public class StopLocatorCommandDUnitTest {
         .addOption(STOP_LOCATOR__MEMBER, memberName)
         .getCommandString();
 
-    CommandResult result = gfsh.executeCommand(command);
 
-    assertThat(result.getStatus()).isEqualTo(OK);
+    // The new locator is not immediately available to be stopped because its mbean
+    // has to be propagated to the existing locator that gfsh is connected to. Wait
+    // for the stop to work
+    waitForCommandToSucceed(command);
     gfsh.executeAndAssertThat("list members").doesNotContainOutput(memberName);
   }
 
   @Test
   public void testWithMemberID() {
     int port = jmxPort; // this assignment is needed to pass a local var into the invocation below
+
     final String memberID = locator.invoke(() -> getMemberId(port));
 
     final String command = new CommandStringBuilder(STOP_LOCATOR)
         .addOption(STOP_LOCATOR__MEMBER, memberID)
         .getCommandString();
 
-    CommandResult result = gfsh.executeCommand(command);
+    // The new locator is not immediately available to be stopped because its mbean
+    // has to be propagated to the existing locator that gfsh is connected to. Wait
+    // for the stop to work
+    waitForCommandToSucceed(command);
 
-    assertThat(result.getStatus()).isEqualTo(OK);
     gfsh.executeAndAssertThat("list members").doesNotContainOutput(memberName);
   }
 
+  private void waitForCommandToSucceed(String command) {
+    await().atMost(5, TimeUnit.MINUTES).untilAsserted(() -> {
+      CommandResult result = gfsh.executeCommand(command);
+      assertThat(result.getStatus()).isEqualTo(OK);
+    });
+  }
+
   @Test
   public void testWithDirOnline() throws IOException {
     final String command = new CommandStringBuilder(STOP_LOCATOR)
@@ -246,9 +260,12 @@ public class StopLocatorCommandDUnitTest {
       final MBeanServerConnection connection = conn.getMBeanServerConnection();
       assertThat(connection).isInstanceOf(MBeanServerConnection.class);
 
-      final Set<ObjectName> objectNames = connection.queryNames(objectNamePattern, query);
-      assertThat(objectNames).isNotNull().isNotEmpty().hasSize(1);
+      await().untilAsserted(() -> {
+        final Set<ObjectName> objectNames = connection.queryNames(objectNamePattern, query);
+        assertThat(objectNames).isNotNull().isNotEmpty().hasSize(1);
+      });
 
+      final Set<ObjectName> objectNames = connection.queryNames(objectNamePattern, query);
       final ObjectName objectName = objectNames.iterator().next();
       final Object memberId = connection.getAttribute(objectName, "Id");