You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by kl...@apache.org on 2018/03/16 22:13:46 UTC

[geode] branch develop updated (9655e40 -> 62f83e3)

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

klund pushed a change to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git.


    from 9655e40  GEODE-4622 Revert jna upgrade
     new 42ad145  GEODE-4846: fixup javadocs on ExecutorServiceRule
     new f8bab2a  GEODE-4845: make FieldSerializationUtils package-private
     new ae25c7b  GEODE-4789: upgrade system-rules from 1.16.1 to 1.17.1
     new 71d1d8a  GEODE-4789: add VM count constructor to ClusterStartupRule
     new 6b56b5f  GEODE-4789: fixup tests that use more than 4 VMs with ClusterStarterRule
     new 8863386  GEODE-4789: fix static usage of DistributedRestoreSystemProperties
     new 1298f76  GEODE-4821: rename RegisterInterestIntegrationTest as RegisterInterestDistributedTest
     new 62f83e3  GEODE-4820: use RestoreSystemProperties instead of DistributedRestoreSystemProperties

The 8 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../cache/ha/BlockingHARegionQueueJUnitTest.java   |  24 +-
 .../internal/cache/ha/HARegionQueueJUnitTest.java  | 220 ++++++------
 ...t.java => RegisterInterestDistributedTest.java} |  89 ++---
 .../apache/geode/management/MXBeanAwaitility.java  |  41 ++-
 ...niversalMembershipListenerAdapterDUnitTest.java |   6 +-
 .../management/internal/cli/CliUtilDUnitTest.java  |   2 +-
 .../cli/commands/DescribeRegionDUnitTest.java      |   2 +-
 .../ClusterConfigLocatorRestartDUnitTest.java      |   2 +-
 .../internal/security/MultiClientDUnitTest.java    |  15 +-
 .../geode/test/dunit/rules/ClusterStartupRule.java |  20 +-
 .../rules/DistributedRestoreSystemProperties.java  |  68 ++--
 ...utedRestoreSystemPropertiesDistributedTest.java | 138 ++++++++
 .../DistributedRestoreSystemPropertiesTest.java}   |  45 ++-
 geode-junit/build.gradle                           |   3 +
 .../test/junit/rules/ExecutorServiceRule.java      |  62 ++--
 .../AccessibleRestoreSystemProperties.java         |  21 +-
 .../serializable/FieldSerializationUtils.java      |  10 +-
 .../geode/test/junit/runners/TestRunner.java       |  20 ++
 .../geode/internal/cache/wan/WANTestBase.java      |  51 ++-
 .../cache/wan/misc/WANLocatorServerDUnitTest.java  |   8 +-
 ...lelGatewaySenderOperationsOffHeapDUnitTest.java |  12 +-
 .../ParallelGatewaySenderOperationsDUnitTest.java  | 383 +++++++++------------
 .../serial/SerialGatewaySenderQueueDUnitTest.java  |   4 +-
 ...CreateDestroyGatewaySenderCommandDUnitTest.java |  94 ++---
 .../CreateGatewayReceiverCommandDUnitTest.java     | 309 +++++++++--------
 .../PauseGatewaySenderCommandDUnitTest.java        | 154 +++++----
 .../ResumeGatewaySenderCommandDUnitTest.java       | 166 +++++----
 .../StartGatewayReceiverCommandDUnitTest.java      | 157 +++++----
 .../StartGatewaySenderCommandDUnitTest.java        | 203 ++++++-----
 .../StatusGatewayReceiverCommandDUnitTest.java     | 202 +++++------
 .../StatusGatewaySenderCommandDUnitTest.java       | 288 +++++++++-------
 .../StopGatewayReceiverCommandDUnitTest.java       | 149 ++++----
 .../StopGatewaySenderCommandDUnitTest.java         | 170 +++++----
 .../cache/wan/wancommand/WANCommandUtils.java      |  40 ++-
 .../wan/wancommand/WanCommandListDUnitTest.java    | 383 +++++++++++----------
 .../cli/commands/DescribeRegionDUnitTest.java      |   2 +-
 gradle/dependency-versions.properties              |   2 +-
 37 files changed, 1968 insertions(+), 1597 deletions(-)
 rename geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/{RegisterInterestIntegrationTest.java => RegisterInterestDistributedTest.java} (81%)
 create mode 100644 geode-core/src/test/java/org/apache/geode/test/dunit/rules/tests/DistributedRestoreSystemPropertiesDistributedTest.java
 copy geode-core/src/test/java/org/apache/geode/{internal/cache/DiskStoreMonitorTest.java => test/dunit/rules/tests/DistributedRestoreSystemPropertiesTest.java} (53%)
 copy geode-core/src/main/java/org/apache/geode/cache/query/internal/parse/ASTTrace.java => geode-junit/src/main/java/org/apache/geode/test/junit/rules/accessible/AccessibleRestoreSystemProperties.java (67%)

-- 
To stop receiving notification emails like this one, please contact
klund@apache.org.

[geode] 03/08: GEODE-4789: upgrade system-rules from 1.16.1 to 1.17.1

Posted by kl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

klund pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git

commit ae25c7b8f8db29f498c9c064a340d39200639209
Author: Kirk Lund <kl...@apache.org>
AuthorDate: Wed Mar 14 14:48:01 2018 -0700

    GEODE-4789: upgrade system-rules from 1.16.1 to 1.17.1
    
    Make DistributedRestoreSystemProperties delegate to RestoreSystemProperties
---
 .../rules/DistributedRestoreSystemProperties.java  |  68 +++++-----
 ...utedRestoreSystemPropertiesDistributedTest.java | 138 +++++++++++++++++++++
 .../DistributedRestoreSystemPropertiesTest.java    |  56 +++++++++
 geode-junit/build.gradle                           |   3 +
 .../AccessibleRestoreSystemProperties.java         |  33 +++++
 .../geode/test/junit/runners/TestRunner.java       |  20 +++
 gradle/dependency-versions.properties              |   2 +-
 7 files changed, 287 insertions(+), 33 deletions(-)

diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/DistributedRestoreSystemProperties.java b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/DistributedRestoreSystemProperties.java
index 592fe05..2fcf128 100755
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/DistributedRestoreSystemProperties.java
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/DistributedRestoreSystemProperties.java
@@ -14,26 +14,26 @@
  */
 package org.apache.geode.test.dunit.rules;
 
-import static java.lang.System.*;
+import static org.apache.geode.test.dunit.Host.getHost;
+import static org.assertj.core.api.Assertions.assertThat;
 
-import java.util.Properties;
-
-import org.junit.contrib.java.lang.system.RestoreSystemProperties;
-
-import org.apache.geode.test.dunit.SerializableRunnable;
+import org.apache.geode.test.junit.rules.accessible.AccessibleRestoreSystemProperties;
 import org.apache.geode.test.junit.rules.serializable.SerializableTestRule;
 
 /**
  * Distributed version of RestoreSystemProperties which affects all DUnit JVMs including the Locator
  * JVM.
  */
-public class DistributedRestoreSystemProperties extends RestoreSystemProperties
+public class DistributedRestoreSystemProperties extends AccessibleRestoreSystemProperties
     implements SerializableTestRule {
 
-  private static volatile Properties originalProperties;
+  private static final AccessibleRestoreSystemProperties restoreSystemProperties =
+      new AccessibleRestoreSystemProperties();
 
   private final RemoteInvoker invoker;
 
+  private volatile int beforeVmCount;
+
   public DistributedRestoreSystemProperties() {
     this(new RemoteInvoker());
   }
@@ -45,35 +45,39 @@ public class DistributedRestoreSystemProperties extends RestoreSystemProperties
 
   @Override
   public void before() throws Throwable {
-    super.before();
-    this.invoker.invokeInEveryVMAndController(new SerializableRunnable() {
-      @Override
-      public void run() {
-        if (originalProperties == null) {
-          originalProperties = getProperties();
-          setProperties(copyOf(originalProperties));
-        }
-      }
-    });
-  }
+    beforeVmCount = getVMCount();
 
-  private Properties copyOf(Properties source) {
-    Properties copy = new Properties();
-    copy.putAll(source);
-    return copy;
+    invoker.invokeInEveryVMAndController(() -> invokeBefore());
   }
 
   @Override
   public void after() {
-    super.after();
-    this.invoker.invokeInEveryVMAndController(new SerializableRunnable() {
-      @Override
-      public void run() {
-        if (originalProperties != null) {
-          setProperties(originalProperties);
-          originalProperties = null;
-        }
+    int afterVmCount = getVMCount();
+    assertThat(afterVmCount).isEqualTo(beforeVmCount);
+
+    invoker.invokeInEveryVMAndController(() -> invokeAfter());
+  }
+
+  private void invokeBefore() throws Exception {
+    try {
+      restoreSystemProperties.before();
+    } catch (Throwable throwable) {
+      if (throwable instanceof Exception) {
+        throw (Exception) throwable;
       }
-    });
+      throw new RuntimeException(throwable);
+    }
+  }
+
+  private void invokeAfter() {
+    restoreSystemProperties.after();
+  }
+
+  private int getVMCount() {
+    try {
+      return getHost(0).getVMCount();
+    } catch (IllegalArgumentException e) {
+      throw new IllegalStateException("DUnit VMs have not been launched");
+    }
   }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/tests/DistributedRestoreSystemPropertiesDistributedTest.java b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/tests/DistributedRestoreSystemPropertiesDistributedTest.java
new file mode 100644
index 0000000..5179644
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/tests/DistributedRestoreSystemPropertiesDistributedTest.java
@@ -0,0 +1,138 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License. You may obtain a
+ * copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.apache.geode.test.dunit.rules.tests;
+
+import static org.apache.geode.test.dunit.Host.getHost;
+import static org.apache.geode.test.junit.runners.TestRunner.runTestWithValidation;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.io.Serializable;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.ClassRule;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.test.dunit.rules.DistributedRestoreSystemProperties;
+import org.apache.geode.test.dunit.rules.DistributedTestRule;
+import org.apache.geode.test.junit.categories.DistributedTest;
+
+@Category(DistributedTest.class)
+public class DistributedRestoreSystemPropertiesDistributedTest {
+
+  private static final String NULL_PROPERTY = "NULL_PROPERTY";
+  private static final String PREEXISTING_PROPERTY = "PREEXISTING_PROPERTY";
+  private static final String PREEXISTING_VALUE = "PREEXISTING_VALUE";
+
+  @ClassRule
+  public static DistributedTestRule distributedTestRule = new DistributedTestRule();
+
+  @BeforeClass
+  public static void assertPreconditions() {
+    assertThat(System.getProperty(NULL_PROPERTY)).isNull();
+    assertThat(System.getProperty(PREEXISTING_PROPERTY)).isNull();
+    for (int i = 0; i < 4; i++) {
+      getHost(0).getVM(i).invoke(() -> {
+        assertThat(System.getProperty(NULL_PROPERTY)).isNull();
+        assertThat(System.getProperty(PREEXISTING_PROPERTY)).isNull();
+      });
+    }
+  }
+
+  @Before
+  public void setUp() {
+    System.setProperty(PREEXISTING_PROPERTY, PREEXISTING_VALUE);
+    for (int i = 0; i < 4; i++) {
+      getHost(0).getVM(i).invoke(() -> {
+        System.setProperty(PREEXISTING_PROPERTY, PREEXISTING_VALUE);
+      });
+    }
+  }
+
+  @After
+  public void tearDown() {
+    System.clearProperty(PREEXISTING_PROPERTY);
+    for (int i = 0; i < 4; i++) {
+      getHost(0).getVM(i).invoke(() -> {
+        System.clearProperty(PREEXISTING_PROPERTY);
+      });
+    }
+  }
+
+  @Test
+  public void nullPropertyWithDifferentValues() throws Exception {
+    runTestWithValidation(NullPropertyWithDifferentValues.class);
+
+    assertThat(System.getProperty(NULL_PROPERTY)).isNull();
+    for (int i = 0; i < 4; i++) {
+      getHost(0).getVM(i).invoke(() -> {
+        assertThat(System.getProperty(NULL_PROPERTY)).isNull();
+      });
+    }
+  }
+
+  @Test
+  public void preexistingPropertyWithDifferentValues() throws Exception {
+    runTestWithValidation(NullPropertyWithDifferentValues.class);
+
+    assertThat(System.getProperty(PREEXISTING_PROPERTY)).isEqualTo(PREEXISTING_VALUE);
+    for (int i = 0; i < 4; i++) {
+      getHost(0).getVM(i).invoke(() -> {
+        assertThat(System.getProperty(PREEXISTING_PROPERTY)).isEqualTo(PREEXISTING_VALUE);
+      });
+    }
+  }
+
+  /**
+   * Used by test {@link #nullPropertyWithDifferentValues()}.
+   */
+  public static class NullPropertyWithDifferentValues implements Serializable {
+
+    @Rule
+    public DistributedRestoreSystemProperties restoreSystemProperties =
+        new DistributedRestoreSystemProperties();
+
+    @Test
+    public void nullPropertyWithDifferentValues() throws Exception {
+      System.setProperty(NULL_PROPERTY, "controller");
+      getHost(0).getVM(0).invoke(() -> System.setProperty(NULL_PROPERTY, "vm0"));
+      getHost(0).getVM(1).invoke(() -> System.setProperty(NULL_PROPERTY, "vm1"));
+      getHost(0).getVM(2).invoke(() -> System.setProperty(NULL_PROPERTY, "vm2"));
+      getHost(0).getVM(3).invoke(() -> System.setProperty(NULL_PROPERTY, "vm3"));
+    }
+  }
+
+  /**
+   * Used by test {@link #preexistingPropertyWithDifferentValues()}.
+   */
+  public static class PreexistingPropertyWithDifferentValues implements Serializable {
+
+    @Rule
+    public DistributedRestoreSystemProperties restoreSystemProperties =
+        new DistributedRestoreSystemProperties();
+
+    @Test
+    public void preexistingPropertyWithDifferentValues() throws Exception {
+      System.setProperty(PREEXISTING_PROPERTY, "controller");
+      getHost(0).getVM(0).invoke(() -> System.setProperty(PREEXISTING_PROPERTY, "vm0"));
+      getHost(0).getVM(1).invoke(() -> System.setProperty(PREEXISTING_PROPERTY, "vm1"));
+      getHost(0).getVM(2).invoke(() -> System.setProperty(PREEXISTING_PROPERTY, "vm2"));
+      getHost(0).getVM(3).invoke(() -> System.setProperty(PREEXISTING_PROPERTY, "vm3"));
+    }
+  }
+}
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/tests/DistributedRestoreSystemPropertiesTest.java b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/tests/DistributedRestoreSystemPropertiesTest.java
new file mode 100644
index 0000000..01793e9
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/tests/DistributedRestoreSystemPropertiesTest.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License. You may obtain a
+ * copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.apache.geode.test.dunit.rules.tests;
+
+import static org.apache.geode.test.junit.runners.TestRunner.runTestWithExpectedFailure;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.contrib.java.lang.system.RestoreSystemProperties;
+import org.junit.experimental.categories.Category;
+import org.junit.runner.notification.Failure;
+
+import org.apache.geode.test.dunit.rules.DistributedRestoreSystemProperties;
+import org.apache.geode.test.junit.categories.UnitTest;
+
+@Category(UnitTest.class)
+public class DistributedRestoreSystemPropertiesTest {
+
+  @Test
+  public void withoutDUnitThrowsIllegalStateException() {
+    Failure failure = runTestWithExpectedFailure(WithoutDUnit.class);
+    assertThat(failure.getException()).isInstanceOf(IllegalStateException.class);
+    assertThat(failure.getMessage()).isEqualTo("DUnit VMs have not been launched");
+  }
+
+  @Test
+  public void isaRestoreSystemProperties() {
+    assertThat(new DistributedRestoreSystemProperties())
+        .isInstanceOf(RestoreSystemProperties.class);
+  }
+
+  public static class WithoutDUnit {
+
+    @Rule
+    public DistributedRestoreSystemProperties restoreSystemProperties =
+        new DistributedRestoreSystemProperties();
+
+    @Test
+    public void doTest() {
+      // nothing
+    }
+  }
+}
diff --git a/geode-junit/build.gradle b/geode-junit/build.gradle
index 7a7cb5e..9b7ba68 100755
--- a/geode-junit/build.gradle
+++ b/geode-junit/build.gradle
@@ -16,6 +16,9 @@
  */
 
 dependencies {
+  compile ('com.github.stefanbirkner:system-rules:' + project.'system-rules.version') {
+    exclude module: 'junit-dep'
+  }
   compile 'com.jayway.jsonpath:json-path:' + project.'json-path.version'
   testCompile 'commons-lang:commons-lang:' + project.'commons-lang.version'
   testCompile 'com.google.guava:guava:' + project.'guava.version'
diff --git a/geode-junit/src/main/java/org/apache/geode/test/junit/rules/accessible/AccessibleRestoreSystemProperties.java b/geode-junit/src/main/java/org/apache/geode/test/junit/rules/accessible/AccessibleRestoreSystemProperties.java
new file mode 100644
index 0000000..50f91f0
--- /dev/null
+++ b/geode-junit/src/main/java/org/apache/geode/test/junit/rules/accessible/AccessibleRestoreSystemProperties.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License. You may obtain a
+ * copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.apache.geode.test.junit.rules.accessible;
+
+import org.junit.contrib.java.lang.system.RestoreSystemProperties;
+
+/**
+ * Subclass RestoreSystemProperties in order to invoke protected methods from different package.
+ */
+public class AccessibleRestoreSystemProperties extends RestoreSystemProperties {
+
+  @Override
+  public void before() throws Throwable {
+    super.before();
+  }
+
+  @Override
+  public void after() {
+    super.after();
+  }
+}
diff --git a/geode-junit/src/main/java/org/apache/geode/test/junit/runners/TestRunner.java b/geode-junit/src/main/java/org/apache/geode/test/junit/runners/TestRunner.java
index 6d31f78..ca8a23f 100755
--- a/geode-junit/src/main/java/org/apache/geode/test/junit/runners/TestRunner.java
+++ b/geode-junit/src/main/java/org/apache/geode/test/junit/runners/TestRunner.java
@@ -49,4 +49,24 @@ public class TestRunner {
 
     return result;
   }
+
+  public static Failure runTestWithExpectedFailure(final Class<?> test) {
+    JUnitCore junitCore = new JUnitCore();
+    Result result = junitCore.run(Request.aClass(test).getRunner());
+
+    List<Failure> failures = result.getFailures();
+    assertThat(failures).hasSize(1);
+
+    return failures.get(0);
+  }
+
+  public static List<Failure> runTestWithExpectedFailures(final Class<?> test) {
+    JUnitCore junitCore = new JUnitCore();
+    Result result = junitCore.run(Request.aClass(test).getRunner());
+
+    List<Failure> failures = result.getFailures();
+    assertThat(failures).isNotEmpty();
+
+    return failures;
+  }
 }
diff --git a/gradle/dependency-versions.properties b/gradle/dependency-versions.properties
index e65d709..40cda59 100644
--- a/gradle/dependency-versions.properties
+++ b/gradle/dependency-versions.properties
@@ -94,7 +94,7 @@ springframework.version = 4.3.14.RELEASE
 spymemcached.version = 2.12.2
 springfox.version=2.8.0
 stephenc-findbugs.version = 1.3.9-1
-system-rules.version = 1.16.1
+system-rules.version = 1.17.1
 tempus-fugit.version = 1.1
 tomcat6.version = 6.0.37
 tomcat7.version = 7.0.73

-- 
To stop receiving notification emails like this one, please contact
klund@apache.org.

[geode] 02/08: GEODE-4845: make FieldSerializationUtils package-private

Posted by kl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

klund pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git

commit f8bab2a2d451be944baa802814e9f05e0807ed8b
Author: Kirk Lund <kl...@apache.org>
AuthorDate: Wed Mar 14 14:46:45 2018 -0700

    GEODE-4845: make FieldSerializationUtils package-private
---
 .../test/junit/rules/serializable/FieldSerializationUtils.java | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/geode-junit/src/main/java/org/apache/geode/test/junit/rules/serializable/FieldSerializationUtils.java b/geode-junit/src/main/java/org/apache/geode/test/junit/rules/serializable/FieldSerializationUtils.java
index 2244775..d456d01 100755
--- a/geode-junit/src/main/java/org/apache/geode/test/junit/rules/serializable/FieldSerializationUtils.java
+++ b/geode-junit/src/main/java/org/apache/geode/test/junit/rules/serializable/FieldSerializationUtils.java
@@ -19,11 +19,13 @@ import java.lang.reflect.Field;
 /**
  * Provides support for serialization of private fields by reflection.
  */
-public class FieldSerializationUtils {
+class FieldSerializationUtils {
 
-  protected FieldSerializationUtils() {}
+  FieldSerializationUtils() {
+    // nothing
+  }
 
-  public static Object readField(final Class targetClass, final Object targetInstance,
+  static Object readField(final Class targetClass, final Object targetInstance,
       final String fieldName) {
     try {
       Field field = targetClass.getDeclaredField(fieldName);
@@ -34,7 +36,7 @@ public class FieldSerializationUtils {
     }
   }
 
-  public static void writeField(final Class targetClass, final Object targetInstance,
+  static void writeField(final Class targetClass, final Object targetInstance,
       final String fieldName, final Object value) {
     try {
       Field field = targetClass.getDeclaredField(fieldName);

-- 
To stop receiving notification emails like this one, please contact
klund@apache.org.

[geode] 01/08: GEODE-4846: fixup javadocs on ExecutorServiceRule

Posted by kl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

klund pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git

commit 42ad145553fb1524528a2bac9b3df1bcc02acf6e
Author: Kirk Lund <kl...@apache.org>
AuthorDate: Wed Mar 14 14:46:06 2018 -0700

    GEODE-4846: fixup javadocs on ExecutorServiceRule
---
 .../test/junit/rules/ExecutorServiceRule.java      | 62 +++++++++++-----------
 1 file changed, 31 insertions(+), 31 deletions(-)

diff --git a/geode-junit/src/main/java/org/apache/geode/test/junit/rules/ExecutorServiceRule.java b/geode-junit/src/main/java/org/apache/geode/test/junit/rules/ExecutorServiceRule.java
index 21b2a80..934c3c1 100644
--- a/geode-junit/src/main/java/org/apache/geode/test/junit/rules/ExecutorServiceRule.java
+++ b/geode-junit/src/main/java/org/apache/geode/test/junit/rules/ExecutorServiceRule.java
@@ -34,7 +34,7 @@ import org.apache.geode.test.junit.rules.serializable.SerializableExternalResour
  *
  * <p>
  * By default, the {@code ExecutorService} is single-threaded. You can specify the thread count by
- * using {@link Builder#threadCount(int)} or {@link ExecutorServiceRule(int)}.
+ * using {@link Builder#threadCount(int)} or {@link #ExecutorServiceRule(int)}.
  *
  * <p>
  * Example with default configuration (single-threaded and does not assert that tasks are done):
@@ -73,7 +73,7 @@ import org.apache.geode.test.junit.rules.serializable.SerializableExternalResour
  * private CountDownLatch hangLatch = new CountDownLatch(1);
  *
  * {@literal @}Rule
- * public AsynchronousRule asynchronousRule = AsynchronousRule.builder().threadCount(10).awaitTermination(10, MILLISECONDS).build();
+ * public ExecutorServiceRule asynchronousRule = ExecutorServiceRule.builder().threadCount(10).awaitTermination(10, MILLISECONDS).build();
  *
  * {@literal @}Test
  * public void doTest() throws Exception {
@@ -110,13 +110,13 @@ public class ExecutorServiceRule extends SerializableExternalResource {
   }
 
   protected ExecutorServiceRule(Builder builder) {
-    this.threadCount = builder.threadCount;
-    this.enableAwaitTermination = builder.enableAwaitTermination;
-    this.awaitTerminationTimeout = builder.awaitTerminationTimeout;
-    this.awaitTerminationTimeUnit = builder.awaitTerminationTimeUnit;
-    this.awaitTerminationBeforeShutdown = builder.awaitTerminationBeforeShutdown;
-    this.useShutdown = builder.useShutdown;
-    this.useShutdownNow = builder.useShutdownNow;
+    threadCount = builder.threadCount;
+    enableAwaitTermination = builder.enableAwaitTermination;
+    awaitTerminationTimeout = builder.awaitTerminationTimeout;
+    awaitTerminationTimeUnit = builder.awaitTerminationTimeUnit;
+    awaitTerminationBeforeShutdown = builder.awaitTerminationBeforeShutdown;
+    useShutdown = builder.useShutdown;
+    useShutdownNow = builder.useShutdownNow;
   }
 
   /**
@@ -124,13 +124,13 @@ public class ExecutorServiceRule extends SerializableExternalResource {
    * {@code ExecutorService.shutdownNow()} during {@code tearDown}.
    */
   public ExecutorServiceRule() {
-    this.threadCount = 1;
-    this.enableAwaitTermination = false;
-    this.awaitTerminationTimeout = 0;
-    this.awaitTerminationTimeUnit = TimeUnit.NANOSECONDS;
-    this.awaitTerminationBeforeShutdown = false;
-    this.useShutdown = false;
-    this.useShutdownNow = true;
+    threadCount = 1;
+    enableAwaitTermination = false;
+    awaitTerminationTimeout = 0;
+    awaitTerminationTimeUnit = TimeUnit.NANOSECONDS;
+    awaitTerminationBeforeShutdown = false;
+    useShutdown = false;
+    useShutdownNow = true;
   }
 
   /**
@@ -139,12 +139,12 @@ public class ExecutorServiceRule extends SerializableExternalResource {
    */
   public ExecutorServiceRule(int threadCount) {
     this.threadCount = threadCount;
-    this.enableAwaitTermination = false;
-    this.awaitTerminationTimeout = 0;
-    this.awaitTerminationTimeUnit = TimeUnit.NANOSECONDS;
-    this.awaitTerminationBeforeShutdown = false;
-    this.useShutdown = false;
-    this.useShutdownNow = true;
+    enableAwaitTermination = false;
+    awaitTerminationTimeout = 0;
+    awaitTerminationTimeUnit = TimeUnit.NANOSECONDS;
+    awaitTerminationBeforeShutdown = false;
+    useShutdown = false;
+    useShutdownNow = true;
   }
 
   @Override
@@ -301,9 +301,9 @@ public class ExecutorServiceRule extends SerializableExternalResource {
      * @param unit the time unit of the timeout argument
      */
     public Builder awaitTermination(long timeout, TimeUnit unit) {
-      this.enableAwaitTermination = true;
-      this.awaitTerminationTimeout = timeout;
-      this.awaitTerminationTimeUnit = unit;
+      enableAwaitTermination = true;
+      awaitTerminationTimeout = timeout;
+      awaitTerminationTimeUnit = unit;
       return this;
     }
 
@@ -311,8 +311,8 @@ public class ExecutorServiceRule extends SerializableExternalResource {
      * Enables invocation of {@code shutdown} during {@code tearDown}. Default is disabled.
      */
     public Builder useShutdown() {
-      this.useShutdown = true;
-      this.useShutdownNow = false;
+      useShutdown = true;
+      useShutdownNow = false;
       return this;
     }
 
@@ -321,8 +321,8 @@ public class ExecutorServiceRule extends SerializableExternalResource {
      *
      */
     public Builder useShutdownNow() {
-      this.useShutdown = false;
-      this.useShutdownNow = true;
+      useShutdown = false;
+      useShutdownNow = true;
       return this;
     }
 
@@ -331,7 +331,7 @@ public class ExecutorServiceRule extends SerializableExternalResource {
      * {@code shutdownNow}.
      */
     public Builder awaitTerminationBeforeShutdown() {
-      this.awaitTerminationBeforeShutdown = true;
+      awaitTerminationBeforeShutdown = true;
       return this;
     }
 
@@ -340,7 +340,7 @@ public class ExecutorServiceRule extends SerializableExternalResource {
      * {@code shutdownNow}.
      */
     public Builder awaitTerminationAfterShutdown() {
-      this.awaitTerminationBeforeShutdown = false;
+      awaitTerminationBeforeShutdown = false;
       return this;
     }
 

-- 
To stop receiving notification emails like this one, please contact
klund@apache.org.

[geode] 07/08: GEODE-4821: rename RegisterInterestIntegrationTest as RegisterInterestDistributedTest

Posted by kl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

klund pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git

commit 1298f765b14cd7ea1747a14b8e873f0dea9de054
Author: Kirk Lund <kl...@apache.org>
AuthorDate: Fri Mar 16 10:08:39 2018 -0700

    GEODE-4821: rename RegisterInterestIntegrationTest as RegisterInterestDistributedTest
    
    * change category to DistributedTest
    * change from using old and new JUnit Assert to AssertJ
---
 ...t.java => RegisterInterestDistributedTest.java} | 89 ++++++++--------------
 1 file changed, 33 insertions(+), 56 deletions(-)

diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/RegisterInterestIntegrationTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/RegisterInterestDistributedTest.java
similarity index 81%
rename from geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/RegisterInterestIntegrationTest.java
rename to geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/RegisterInterestDistributedTest.java
index 58091f2..463a857 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/RegisterInterestIntegrationTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/RegisterInterestDistributedTest.java
@@ -14,22 +14,22 @@
  */
 package org.apache.geode.internal.cache.tier.sockets;
 
-import static junit.framework.TestCase.assertEquals;
-import static org.junit.Assert.fail;
+import static java.util.concurrent.TimeUnit.SECONDS;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatCode;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.awaitility.Awaitility.await;
 
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Properties;
 import java.util.Set;
-import java.util.concurrent.TimeUnit;
 
-import org.awaitility.Awaitility;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
-import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.InterestResultPolicy;
 import org.apache.geode.cache.Region;
 import org.apache.geode.cache.RegionShortcut;
@@ -39,10 +39,10 @@ import org.apache.geode.cache.client.ClientRegionShortcut;
 import org.apache.geode.test.dunit.rules.ClusterStartupRule;
 import org.apache.geode.test.dunit.rules.MemberVM;
 import org.apache.geode.test.junit.categories.ClientSubscriptionTest;
-import org.apache.geode.test.junit.categories.IntegrationTest;
+import org.apache.geode.test.junit.categories.DistributedTest;
 
-@Category({IntegrationTest.class, ClientSubscriptionTest.class})
-public class RegisterInterestIntegrationTest {
+@Category({DistributedTest.class, ClientSubscriptionTest.class})
+public class RegisterInterestDistributedTest {
 
   private MemberVM locator;
   private int locatorPort;
@@ -61,7 +61,6 @@ public class RegisterInterestIntegrationTest {
 
   @Test
   public void registerInterestAllKeysShouldRegisterForAllKeys() throws Exception {
-
     ClientCache clientCache = createClientCache(locatorPort);
 
     Region region =
@@ -75,12 +74,11 @@ public class RegisterInterestIntegrationTest {
       regionOnServer.put(1, 2);
     });
 
-    Awaitility.await().atMost(10, TimeUnit.SECONDS).until(() -> assertEquals(3, region.size()));
+    await().atMost(10, SECONDS).until(() -> assertThat(region.size()).isEqualTo(3));
   }
 
   @Test
   public void registerInterestAllKeysWithInterestPolicyShouldRegisterForAllKeys() throws Exception {
-
     ClientCache clientCache = createClientCache(locatorPort);
 
     Region region =
@@ -94,30 +92,25 @@ public class RegisterInterestIntegrationTest {
       regionOnServer.put(1, 2);
     });
 
-    Awaitility.await().atMost(10, TimeUnit.SECONDS)
-        .until(() -> assertEquals(3, region.keySet().size()));
+    await().atMost(10, SECONDS).until(() -> assertThat(region.size()).isEqualTo(3));
   }
 
   @Test
   public void nonDurableClientRegisterInterestForAllKeysWithDurableFlagShouldThrowException()
       throws Exception {
-
     ClientCache clientCache = createClientCache(locatorPort);
 
-    try {
-      Region region = clientCache.createClientRegionFactory(ClientRegionShortcut.CACHING_PROXY)
-          .create("region");
-      region.registerInterestForAllKeys(InterestResultPolicy.KEYS, true);
-      fail();
-    } catch (IllegalStateException e) {
-      assertEquals("Durable flag only applicable for durable clients.", e.getMessage());
-    }
+    Region region =
+        clientCache.createClientRegionFactory(ClientRegionShortcut.CACHING_PROXY).create("region");
+
+    assertThatThrownBy(() -> region.registerInterestForAllKeys(InterestResultPolicy.KEYS, true))
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Durable flag only applicable for durable clients.");
   }
 
   @Test
   public void durableClientRegisterInterestAllKeysWithDurableFlagShouldRegisterInterest()
       throws Exception {
-
     ClientCache clientCache = createClientCache(locatorPort, true);
 
     Region region =
@@ -132,14 +125,12 @@ public class RegisterInterestIntegrationTest {
       regionOnServer.put(1, 2);
     });
 
-    Awaitility.await().atMost(10, TimeUnit.SECONDS)
-        .until(() -> assertEquals(3, region.keySet().size()));
+    await().atMost(10, SECONDS).until(() -> assertThat(region.size()).isEqualTo(3));
   }
 
   @Test
   public void durableClientRegisterInterestAllKeysAndReceiveValuesFalseShouldRegisterForAllKeys()
       throws Exception {
-
     ClientCache clientCache = createClientCache(locatorPort, true);
 
     Region region =
@@ -154,15 +145,12 @@ public class RegisterInterestIntegrationTest {
       regionOnServer.put(1, 2);
     });
 
-    Awaitility.await().atMost(10, TimeUnit.SECONDS)
-        .until(() -> assertEquals(3, region.keySet().size()));
+    await().atMost(10, SECONDS).until(() -> assertThat(region.size()).isEqualTo(3));
   }
 
-
   @Test
   public void registerInterestForKeysShouldRegisterInterestForEachObjectInTheIterable()
       throws Exception {
-
     ClientCache clientCache = createClientCache(locatorPort);
 
     Set keysList = new HashSet();
@@ -180,13 +168,12 @@ public class RegisterInterestIntegrationTest {
       regionOnServer.put("should not be interested", "in this key/value");
     });
 
-    Awaitility.await().atMost(10, TimeUnit.SECONDS).until(() -> assertEquals(2, region.size()));
+    await().atMost(10, SECONDS).until(() -> assertThat(region.size()).isEqualTo(2));
   }
 
   @Test
   public void registerInterestForKeysWithInterestPolicyShouldRegisterInterestForEachObjectInTheIterable()
       throws Exception {
-
     ClientCache clientCache = createClientCache(locatorPort);
 
     Set keysList = new HashSet();
@@ -204,7 +191,7 @@ public class RegisterInterestIntegrationTest {
       regionOnServer.put("should not be interested", "in this key/value");
     });
 
-    Awaitility.await().atMost(10, TimeUnit.SECONDS).until(() -> assertEquals(2, region.size()));
+    await().atMost(10, SECONDS).until(() -> assertThat(region.size()).isEqualTo(2));
   }
 
   @Test
@@ -228,32 +215,29 @@ public class RegisterInterestIntegrationTest {
       regionOnServer.put("should not be interested", "in this key/value");
     });
 
-    Awaitility.await().atMost(10, TimeUnit.SECONDS).until(() -> assertEquals(2, region.size()));
+    await().atMost(10, SECONDS).until(() -> assertThat(region.size()).isEqualTo(2));
   }
 
   @Test
   public void nonDurableClientWhenRegisterInterestForKeysShouldThrowException() throws Exception {
-
     ClientCache clientCache = createClientCache(locatorPort);
 
     Set keysList = new HashSet();
     keysList.add("some key");
     keysList.add(1);
 
-    try {
-      Region region = clientCache.createClientRegionFactory(ClientRegionShortcut.CACHING_PROXY)
-          .create("region");
-      region.registerInterestForKeys(keysList, InterestResultPolicy.KEYS, true);
-      fail();
-    } catch (IllegalStateException e) {
-      assertEquals("Durable flag only applicable for durable clients.", e.getMessage());
-    }
+    Region region =
+        clientCache.createClientRegionFactory(ClientRegionShortcut.CACHING_PROXY).create("region");
+
+    assertThatThrownBy(
+        () -> region.registerInterestForKeys(keysList, InterestResultPolicy.KEYS, true))
+            .isInstanceOf(IllegalStateException.class)
+            .hasMessage("Durable flag only applicable for durable clients.");
   }
 
   @Test
   public void durableClientWhenRegisterInterestForKeyShouldCorrectlyRegisterInterest()
       throws Exception {
-
     ClientCache clientCache = createClientCache(locatorPort, true);
 
     Set keysList = new HashSet();
@@ -272,13 +256,12 @@ public class RegisterInterestIntegrationTest {
       regionOnServer.put("should not be interested", "in this key/value");
     });
 
-    Awaitility.await().atMost(10, TimeUnit.SECONDS).until(() -> assertEquals(2, region.size()));
+    await().atMost(10, SECONDS).until(() -> assertThat(region.size()).isEqualTo(2));
   }
 
   @Test
   public void durableClientWhenRegisterInterestForKeysAndReturnValueFalseShouldCorrectlyRegisterInterest()
       throws Exception {
-
     ClientCache clientCache = createClientCache(locatorPort, true);
 
     Set keysList = new HashSet();
@@ -297,26 +280,23 @@ public class RegisterInterestIntegrationTest {
       regionOnServer.put("should not be interested", "in this key/value");
     });
 
-    Awaitility.await().atMost(10, TimeUnit.SECONDS).until(() -> assertEquals(2, region.size()));
+    await().atMost(10, SECONDS).until(() -> assertThat(region.size()).isEqualTo(2));
   }
 
   @Test
   public void readyForEventsBeforeAnyPoolsAreCreatedShouldNotResultInIllegalStateException()
       throws Exception {
-
     ClientCache clientCache = createClientCache(locatorPort, true);
 
-    clientCache.readyForEvents();
-    // No exception should be thrown.
+    assertThatCode(() -> clientCache.readyForEvents()).doesNotThrowAnyException();
   }
 
   private ClientCache createClientCache(Integer locatorPort) {
     return createClientCache(locatorPort, false);
   }
 
-
   private ClientCache createClientCache(Integer locatorPort, boolean isDurable) {
-    ClientCacheFactory ccf = null;
+    ClientCacheFactory ccf;
     if (isDurable) {
       Properties props = new Properties();
       props.setProperty("durable-client-id", "31");
@@ -334,10 +314,7 @@ public class RegisterInterestIntegrationTest {
 
   private void createServerRegion(MemberVM server, RegionShortcut regionShortcut) {
     server.invoke(() -> {
-      Region regionOnServer =
-          ClusterStartupRule.getCache().createRegionFactory(regionShortcut).create("region");
+      ClusterStartupRule.getCache().createRegionFactory(regionShortcut).create("region");
     });
   }
-
-
 }

-- 
To stop receiving notification emails like this one, please contact
klund@apache.org.

[geode] 05/08: GEODE-4789: fixup tests that use more than 4 VMs with ClusterStarterRule

Posted by kl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

klund pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git

commit 6b56b5ff6d426cc0b42372c578b2dd85d85362a0
Author: Kirk Lund <kl...@apache.org>
AuthorDate: Wed Mar 14 14:51:26 2018 -0700

    GEODE-4789: fixup tests that use more than 4 VMs with ClusterStarterRule
    
    Cleanup some of these tests:
    * change to use AssertJ
    * change from using Thread sleeps to Awaitility
---
 .../apache/geode/management/MXBeanAwaitility.java  |  41 ++-
 .../management/internal/cli/CliUtilDUnitTest.java  |   2 +-
 .../cli/commands/DescribeRegionDUnitTest.java      |   2 +-
 .../ClusterConfigLocatorRestartDUnitTest.java      |   2 +-
 .../internal/security/MultiClientDUnitTest.java    |  15 +-
 .../geode/internal/cache/wan/WANTestBase.java      |  51 ++-
 .../cache/wan/misc/WANLocatorServerDUnitTest.java  |   8 +-
 ...lelGatewaySenderOperationsOffHeapDUnitTest.java |  12 +-
 .../ParallelGatewaySenderOperationsDUnitTest.java  | 383 +++++++++------------
 .../serial/SerialGatewaySenderQueueDUnitTest.java  |   4 +-
 ...CreateDestroyGatewaySenderCommandDUnitTest.java |  94 ++---
 .../CreateGatewayReceiverCommandDUnitTest.java     | 309 +++++++++--------
 .../PauseGatewaySenderCommandDUnitTest.java        | 154 +++++----
 .../ResumeGatewaySenderCommandDUnitTest.java       | 166 +++++----
 .../StartGatewayReceiverCommandDUnitTest.java      | 157 +++++----
 .../StartGatewaySenderCommandDUnitTest.java        | 203 ++++++-----
 .../StatusGatewayReceiverCommandDUnitTest.java     | 202 +++++------
 .../StatusGatewaySenderCommandDUnitTest.java       | 288 +++++++++-------
 .../StopGatewayReceiverCommandDUnitTest.java       | 149 ++++----
 .../StopGatewaySenderCommandDUnitTest.java         | 170 +++++----
 .../cache/wan/wancommand/WANCommandUtils.java      |  40 ++-
 .../wan/wancommand/WanCommandListDUnitTest.java    | 383 +++++++++++----------
 .../cli/commands/DescribeRegionDUnitTest.java      |   2 +-
 23 files changed, 1534 insertions(+), 1303 deletions(-)

diff --git a/geode-core/src/test/java/org/apache/geode/management/MXBeanAwaitility.java b/geode-core/src/test/java/org/apache/geode/management/MXBeanAwaitility.java
index 80add3f..8f0fe32 100644
--- a/geode-core/src/test/java/org/apache/geode/management/MXBeanAwaitility.java
+++ b/geode-core/src/test/java/org/apache/geode/management/MXBeanAwaitility.java
@@ -28,9 +28,9 @@ import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.internal.cache.GemFireCacheImpl;
 import org.apache.geode.management.internal.SystemManagementService;
 
-class MXBeanAwaitility {
+public class MXBeanAwaitility {
 
-  static LocatorMXBean awaitLocalLocatorMXBean() {
+  public static LocatorMXBean awaitLocalLocatorMXBean() {
     SystemManagementService service = getSystemManagementService();
 
     await().atMost(2, MINUTES).until(() -> assertThat(service.getLocalLocatorMXBean()).isNotNull());
@@ -38,7 +38,7 @@ class MXBeanAwaitility {
     return service.getLocalLocatorMXBean();
   }
 
-  static LocatorMXBean awaitLocatorMXBeanProxy(final DistributedMember member) {
+  public static LocatorMXBean awaitLocatorMXBeanProxy(final DistributedMember member) {
     SystemManagementService service = getSystemManagementService();
     ObjectName objectName = service.getLocatorMBeanName(member);
 
@@ -49,24 +49,49 @@ class MXBeanAwaitility {
     return service.getMBeanProxy(objectName, LocatorMXBean.class);
   }
 
-  static SystemManagementService getSystemManagementService() {
+  public static GatewaySenderMXBean awaitGatewaySenderMXBeanProxy(final DistributedMember member,
+      final String senderId) {
+    SystemManagementService service = getSystemManagementService();
+    ObjectName objectName = service.getGatewaySenderMBeanName(member, senderId);
+
+    String alias = "Awaiting GatewaySenderMXBean proxy for " + member;
+    await(alias).until(
+        () -> assertThat(service.getMBeanProxy(objectName, GatewaySenderMXBean.class)).isNotNull());
+
+    return service.getMBeanProxy(objectName, GatewaySenderMXBean.class);
+  }
+
+  public static GatewayReceiverMXBean awaitGatewayReceiverMXBeanProxy(
+      final DistributedMember member) {
+    SystemManagementService service = getSystemManagementService();
+    ObjectName objectName = service.getGatewayReceiverMBeanName(member);
+
+    String alias = "Awaiting GatewayReceiverMXBean proxy for " + member;
+    await(alias)
+        .until(() -> assertThat(service.getMBeanProxy(objectName, GatewayReceiverMXBean.class))
+            .isNotNull());
+
+    return service.getMBeanProxy(objectName, GatewayReceiverMXBean.class);
+  }
+
+  public static SystemManagementService getSystemManagementService() {
     Cache cache = GemFireCacheImpl.getInstance();
     return (SystemManagementService) ManagementService.getExistingManagementService(cache);
   }
 
-  static ConditionFactory await() {
+  public static ConditionFactory await() {
     return Awaitility.await().atMost(2, MINUTES);
   }
 
-  static ConditionFactory await(final String alias) {
+  public static ConditionFactory await(final String alias) {
     return Awaitility.await(alias).atMost(2, MINUTES);
   }
 
-  static MemberMXBean awaitMemberMXBeanProxy(final DistributedMember member) {
+  public static MemberMXBean awaitMemberMXBeanProxy(final DistributedMember member) {
     return awaitMemberMXBeanProxy(member, getSystemManagementService());
   }
 
-  static MemberMXBean awaitMemberMXBeanProxy(final DistributedMember member,
+  public static MemberMXBean awaitMemberMXBeanProxy(final DistributedMember member,
       final SystemManagementService managementService) {
     ObjectName objectName = managementService.getMemberMBeanName(member);
 
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/CliUtilDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/CliUtilDUnitTest.java
index 0eccaf2..8c1bf9c 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/CliUtilDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/CliUtilDUnitTest.java
@@ -42,7 +42,7 @@ import org.apache.geode.test.junit.rules.GfshCommandRule;
 public class CliUtilDUnitTest {
 
   @ClassRule
-  public static ClusterStartupRule lsRule = new ClusterStartupRule();
+  public static ClusterStartupRule lsRule = new ClusterStartupRule(5);
 
   @ClassRule
   public static GfshCommandRule gfsh = new GfshCommandRule();
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/DescribeRegionDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/DescribeRegionDUnitTest.java
index cbdf444..1fcacca 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/DescribeRegionDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/DescribeRegionDUnitTest.java
@@ -73,7 +73,7 @@ public class DescribeRegionDUnitTest {
   private static MemberVM accessor;
 
   @ClassRule
-  public static ClusterStartupRule lsRule = new ClusterStartupRule();
+  public static ClusterStartupRule lsRule = new ClusterStartupRule(6);
 
   @ClassRule
   public static GfshCommandRule gfsh = new GfshCommandRule();
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/configuration/ClusterConfigLocatorRestartDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/configuration/ClusterConfigLocatorRestartDUnitTest.java
index bcc5ae0..dae0547 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/configuration/ClusterConfigLocatorRestartDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/configuration/ClusterConfigLocatorRestartDUnitTest.java
@@ -35,7 +35,7 @@ import org.apache.geode.test.junit.rules.GfshCommandRule;
 public class ClusterConfigLocatorRestartDUnitTest {
 
   @Rule
-  public ClusterStartupRule rule = new ClusterStartupRule();
+  public ClusterStartupRule rule = new ClusterStartupRule(5);
 
   @Rule
   public GfshCommandRule gfsh = new GfshCommandRule();
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/security/MultiClientDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/security/MultiClientDUnitTest.java
index 47f4067..a549860 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/security/MultiClientDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/security/MultiClientDUnitTest.java
@@ -46,13 +46,18 @@ import org.apache.geode.test.junit.rules.VMProvider;
 
 @Category(DistributedTest.class)
 public class MultiClientDUnitTest {
-  private static int KEY_COUNT = 20;
+  private static final int KEY_COUNT = 20;
 
   @ClassRule
-  public static ClusterStartupRule lsRule = new ClusterStartupRule();
-
-  private static MemberVM locator, server1, server2;
-  private static ClientVM client3, client4, client5, client6;
+  public static ClusterStartupRule lsRule = new ClusterStartupRule(7);
+
+  private static MemberVM locator;
+  private static MemberVM server1;
+  private static MemberVM server2;
+  private static ClientVM client3;
+  private static ClientVM client4;
+  private static ClientVM client5;
+  private static ClientVM client6;
 
   @BeforeClass
   public static void beforeClass() throws Exception {
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/WANTestBase.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/WANTestBase.java
index c29d66e..e1011ad 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/WANTestBase.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/WANTestBase.java
@@ -35,6 +35,7 @@ import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
 import static org.apache.geode.distributed.ConfigurationProperties.OFF_HEAP_MEMORY_SIZE;
 import static org.apache.geode.distributed.ConfigurationProperties.REMOTE_LOCATORS;
 import static org.apache.geode.distributed.ConfigurationProperties.START_LOCATOR;
+import static org.apache.geode.test.dunit.Host.getHost;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
@@ -75,6 +76,8 @@ import javax.management.ObjectName;
 import org.apache.commons.io.FileUtils;
 import org.apache.logging.log4j.Logger;
 import org.awaitility.Awaitility;
+import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.experimental.categories.Category;
 
 import org.apache.geode.cache.AttributesFactory;
@@ -130,7 +133,6 @@ import org.apache.geode.internal.cache.CustomerIDPartitionResolver;
 import org.apache.geode.internal.cache.ForceReattemptException;
 import org.apache.geode.internal.cache.GemFireCacheImpl;
 import org.apache.geode.internal.cache.InternalRegion;
-import org.apache.geode.internal.cache.LocalRegion;
 import org.apache.geode.internal.cache.PartitionedRegion;
 import org.apache.geode.internal.cache.RegionQueue;
 import org.apache.geode.internal.cache.execute.data.CustId;
@@ -161,6 +163,7 @@ import org.apache.geode.pdx.SimpleClass;
 import org.apache.geode.pdx.SimpleClass1;
 import org.apache.geode.test.dunit.Assert;
 import org.apache.geode.test.dunit.AsyncInvocation;
+import org.apache.geode.test.dunit.DistributedTestCase;
 import org.apache.geode.test.dunit.Host;
 import org.apache.geode.test.dunit.IgnoredException;
 import org.apache.geode.test.dunit.Invoke;
@@ -174,7 +177,7 @@ import org.apache.geode.test.junit.categories.DistributedTest;
 import org.apache.geode.util.test.TestUtil;
 
 @Category(DistributedTest.class)
-public class WANTestBase extends JUnit4DistributedTestCase {
+public class WANTestBase extends DistributedTestCase {
 
   protected static Cache cache;
   protected static Region region;
@@ -212,34 +215,20 @@ public class WANTestBase extends JUnit4DistributedTestCase {
 
   private static final Logger logger = LogService.getLogger();
 
-  public WANTestBase() {
-    super();
+  @BeforeClass
+  public static void beforeClassWANTestBase() throws Exception {
+    vm0 = getHost(0).getVM(0);
+    vm1 = getHost(0).getVM(1);
+    vm2 = getHost(0).getVM(2);
+    vm3 = getHost(0).getVM(3);
+    vm4 = getHost(0).getVM(4);
+    vm5 = getHost(0).getVM(5);
+    vm6 = getHost(0).getVM(6);
+    vm7 = getHost(0).getVM(7);
   }
 
-  /**
-   * @deprecated Use the no arg constructor, or better yet, don't construct this class
-   */
-  @Deprecated
-  public WANTestBase(final String ignored) {}
-
-  @Override
-  public final void preSetUp() throws Exception {
-    final Host host = Host.getHost(0);
-    vm0 = host.getVM(0);
-    vm1 = host.getVM(1);
-    vm2 = host.getVM(2);
-    vm3 = host.getVM(3);
-    vm4 = host.getVM(4);
-    vm5 = host.getVM(5);
-    vm6 = host.getVM(6);
-    vm7 = host.getVM(7);
-    // Need to set the test name after the VMs are created
-  }
-
-  @Override
-  public final void postSetUp() throws Exception {
-    // this is done to vary the number of dispatchers for sender
-    // during every test method run
+  @Before
+  public void setUpWANTestBase() throws Exception {
     shuffleNumDispatcherThreads();
     Invoke.invokeInEveryVM(() -> setNumDispatcherThreadsForTheRun(dispatcherThreads.get(0)));
     IgnoredException.addIgnoredException("Connection refused");
@@ -248,7 +237,9 @@ public class WANTestBase extends JUnit4DistributedTestCase {
     postSetUpWANTestBase();
   }
 
-  protected void postSetUpWANTestBase() throws Exception {}
+  protected void postSetUpWANTestBase() throws Exception {
+    // nothing
+  }
 
   public static void shuffleNumDispatcherThreads() {
     Collections.shuffle(dispatcherThreads);
@@ -3674,7 +3665,7 @@ public class WANTestBase extends JUnit4DistributedTestCase {
   public final void preTearDown() throws Exception {
     cleanupVM();
     List<AsyncInvocation> invocations = new ArrayList<AsyncInvocation>();
-    final Host host = Host.getHost(0);
+    final Host host = getHost(0);
     for (int i = 0; i < host.getVMCount(); i++) {
       invocations.add(host.getVM(i).invokeAsync(() -> WANTestBase.cleanupVM()));
     }
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/misc/WANLocatorServerDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/misc/WANLocatorServerDUnitTest.java
index 78668f2..37caf3f 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/misc/WANLocatorServerDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/misc/WANLocatorServerDUnitTest.java
@@ -86,7 +86,7 @@ public class WANLocatorServerDUnitTest extends WANTestBase {
 
   public static void createLocator(Integer port1, Integer port2, Integer port3,
       Integer startingPort) {
-    WANTestBase test = new WANTestBase(getTestMethodName());
+    WANTestBase test = new WANTestBase();
     Properties props = test.getDistributedSystemProperties();
     props.setProperty(MCAST_PORT, "0");
     props.setProperty(DISTRIBUTED_SYSTEM_ID, "" + 1);
@@ -98,7 +98,7 @@ public class WANLocatorServerDUnitTest extends WANTestBase {
   }
 
   public static void createReceiver(Integer port1, Integer port2, Integer port3) {
-    WANTestBase test = new WANTestBase(getTestMethodName());
+    WANTestBase test = new WANTestBase();
     Properties props = test.getDistributedSystemProperties();
     props.setProperty(MCAST_PORT, "0");
     props.setProperty(LOCATORS,
@@ -120,7 +120,7 @@ public class WANLocatorServerDUnitTest extends WANTestBase {
   }
 
   public static void createServer(Integer port1, Integer port2, Integer port3) {
-    WANTestBase test = new WANTestBase(getTestMethodName());
+    WANTestBase test = new WANTestBase();
     Properties props = test.getDistributedSystemProperties();
     props.setProperty(MCAST_PORT, "0");
     props.setProperty(LOCATORS,
@@ -141,7 +141,7 @@ public class WANLocatorServerDUnitTest extends WANTestBase {
   }
 
   public static void disconnect() {
-    WANTestBase test = new WANTestBase(getTestMethodName());
+    WANTestBase test = new WANTestBase();
     test.getSystem().disconnect();
   }
 
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelGatewaySenderOperationsOffHeapDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelGatewaySenderOperationsOffHeapDUnitTest.java
index e788955..545e627 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelGatewaySenderOperationsOffHeapDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelGatewaySenderOperationsOffHeapDUnitTest.java
@@ -14,29 +14,19 @@
  */
 package org.apache.geode.internal.cache.wan.offheap;
 
-import static org.junit.Assert.*;
-
-import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 import org.apache.geode.internal.cache.wan.parallel.ParallelGatewaySenderOperationsDUnitTest;
-import org.apache.geode.test.dunit.cache.internal.JUnit4CacheTestCase;
-import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
 import org.apache.geode.test.junit.categories.DistributedTest;
 import org.apache.geode.test.junit.categories.WanTest;
 
-@SuppressWarnings("serial")
 @Category({DistributedTest.class, WanTest.class})
+@SuppressWarnings("serial")
 public class ParallelGatewaySenderOperationsOffHeapDUnitTest
     extends ParallelGatewaySenderOperationsDUnitTest {
 
-  public ParallelGatewaySenderOperationsOffHeapDUnitTest() {
-    super();
-  }
-
   @Override
   public boolean isOffHeap() {
     return true;
   }
-
 }
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderOperationsDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderOperationsDUnitTest.java
index 53d1508..eaef4f9 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderOperationsDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderOperationsDUnitTest.java
@@ -14,26 +14,25 @@
  */
 package org.apache.geode.internal.cache.wan.parallel;
 
+import static com.googlecode.catchexception.CatchException.catchException;
+import static com.googlecode.catchexception.CatchException.caughtException;
 import static org.apache.geode.internal.cache.tier.sockets.Message.MAX_MESSAGE_SIZE_PROPERTY;
-import static org.apache.geode.test.dunit.Assert.*;
+import static org.apache.geode.test.dunit.IgnoredException.addIgnoredException;
+import static org.assertj.core.api.Assertions.assertThat;
 
+import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 import org.apache.geode.GemFireIOException;
 import org.apache.geode.cache.wan.GatewaySender;
-import org.apache.geode.distributed.internal.DistributionConfig;
-import org.apache.geode.internal.cache.tier.sockets.Message;
 import org.apache.geode.internal.cache.tier.sockets.MessageTooLargeException;
 import org.apache.geode.internal.cache.wan.AbstractGatewaySender;
 import org.apache.geode.internal.cache.wan.GatewaySenderException;
 import org.apache.geode.internal.cache.wan.WANTestBase;
 import org.apache.geode.test.dunit.AsyncInvocation;
-import org.apache.geode.test.dunit.IgnoredException;
-import org.apache.geode.test.dunit.LogWriterUtils;
 import org.apache.geode.test.dunit.RMIException;
-import org.apache.geode.test.dunit.Wait;
 import org.apache.geode.test.dunit.rules.DistributedRestoreSystemProperties;
 import org.apache.geode.test.junit.categories.DistributedTest;
 import org.apache.geode.test.junit.categories.WanTest;
@@ -42,28 +41,29 @@ import org.apache.geode.test.junit.categories.WanTest;
  * DUnit test for operations on ParallelGatewaySender
  */
 @Category({DistributedTest.class, WanTest.class})
+@SuppressWarnings("serial")
 public class ParallelGatewaySenderOperationsDUnitTest extends WANTestBase {
 
   @Rule
   public DistributedRestoreSystemProperties restoreSystemProperties =
       new DistributedRestoreSystemProperties();
 
-  @Override
-  protected final void postSetUpWANTestBase() throws Exception {
-    IgnoredException.addIgnoredException("Broken pipe||Unexpected IOException");
+  @Before
+  public void setUp() throws Exception {
+    addIgnoredException("Broken pipe||Unexpected IOException");
   }
 
-  @Test(timeout = 300000)
-  public void testStopOneConcurrentGatewaySenderWithSSL() throws Throwable {
-    Integer lnPort = (Integer) vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId(1));
-    Integer nyPort = (Integer) vm1.invoke(() -> WANTestBase.createFirstRemoteLocator(2, lnPort));
+  @Test(timeout = 300_000)
+  public void testStopOneConcurrentGatewaySenderWithSSL() throws Exception {
+    Integer lnPort = vm0.invoke(() -> createFirstLocatorWithDSId(1));
+    Integer nyPort = vm1.invoke(() -> createFirstRemoteLocator(2, lnPort));
 
     createCacheInVMs(nyPort, vm2, vm3);
-    vm2.invoke(() -> WANTestBase.createReceiverWithSSL(nyPort));
-    vm3.invoke(() -> WANTestBase.createReceiverWithSSL(nyPort));
+    vm2.invoke(() -> createReceiverWithSSL(nyPort));
+    vm3.invoke(() -> createReceiverWithSSL(nyPort));
 
-    vm4.invoke(() -> WANTestBase.createCacheWithSSL(lnPort));
-    vm5.invoke(() -> WANTestBase.createCacheWithSSL(lnPort));
+    vm4.invoke(() -> createCacheWithSSL(lnPort));
+    vm5.invoke(() -> createCacheWithSSL(lnPort));
 
     vm4.invoke(() -> createConcurrentSender("ln", 2, true, 100, 10, false, true, null, true, 5,
         GatewaySender.OrderPolicy.KEY));
@@ -79,15 +79,15 @@ public class ParallelGatewaySenderOperationsDUnitTest extends WANTestBase {
 
     startSenderInVMs("ln", vm4, vm5);
 
-    vm4.invoke(() -> WANTestBase.doPuts(regionName, 10));
+    vm4.invoke(() -> doPuts(regionName, 10));
 
-    vm4.invoke(() -> WANTestBase.stopSender("ln"));
-    vm4.invoke(() -> WANTestBase.startSender("ln"));
+    vm4.invoke(() -> stopSender("ln"));
+    vm4.invoke(() -> startSender("ln"));
 
-    vm4.invoke(() -> WANTestBase.doPuts(regionName, 10));
+    vm4.invoke(() -> doPuts(regionName, 10));
 
-    vm5.invoke(() -> WANTestBase.stopSender("ln"));
-    vm5.invoke(() -> WANTestBase.startSender("ln"));
+    vm5.invoke(() -> stopSender("ln"));
+    vm5.invoke(() -> startSender("ln"));
   }
 
   @Test
@@ -98,18 +98,21 @@ public class ParallelGatewaySenderOperationsDUnitTest extends WANTestBase {
 
     createSendersReceiversAndPartitionedRegion(lnPort, nyPort, false, false);
 
-    vm4.invoke(() -> WANTestBase.doPuts(getTestMethodName() + "_PR", 1000));
+    vm4.invoke(() -> doPuts(getTestMethodName() + "_PR", 1000));
 
-    vm4.invoke(() -> WANTestBase.verifySenderStoppedState("ln"));
-    vm5.invoke(() -> WANTestBase.verifySenderStoppedState("ln"));
-    vm6.invoke(() -> WANTestBase.verifySenderStoppedState("ln"));
-    vm7.invoke(() -> WANTestBase.verifySenderStoppedState("ln"));
+    vm4.invoke(() -> verifySenderStoppedState("ln"));
+    vm5.invoke(() -> verifySenderStoppedState("ln"));
+    vm6.invoke(() -> verifySenderStoppedState("ln"));
+    vm7.invoke(() -> verifySenderStoppedState("ln"));
 
     validateRegionSizes(getTestMethodName() + "_PR", 0, vm2, vm3);
   }
 
   /**
-   * Defect 44323 (ParallelGatewaySender should not be started on Accessor node)
+   * ParallelGatewaySender should not be started on Accessor node
+   *
+   * <p>
+   * TRAC #44323: NewWan: ParallelGatewaySender should not be started on Accessor Node
    */
   @Test
   public void testParallelGatewaySenderStartOnAccessorNode() {
@@ -119,15 +122,13 @@ public class ParallelGatewaySenderOperationsDUnitTest extends WANTestBase {
 
     createSendersReceiversAndPartitionedRegion(lnPort, nyPort, true, true);
 
-    Wait.pause(2000);
-
-    vm6.invoke(() -> WANTestBase.waitForSenderRunningState("ln"));
-    vm7.invoke(() -> WANTestBase.waitForSenderRunningState("ln"));
+    vm6.invoke(() -> waitForSenderRunningState("ln"));
+    vm7.invoke(() -> waitForSenderRunningState("ln"));
 
-    vm4.invoke(() -> WANTestBase.doPuts(getTestMethodName() + "_PR", 10));
+    vm4.invoke(() -> doPuts(getTestMethodName() + "_PR", 10));
 
-    vm4.invoke(() -> WANTestBase.validateParallelSenderQueueAllBucketsDrained("ln"));
-    vm5.invoke(() -> WANTestBase.validateParallelSenderQueueAllBucketsDrained("ln"));
+    vm4.invoke(() -> validateParallelSenderQueueAllBucketsDrained("ln"));
+    vm5.invoke(() -> validateParallelSenderQueueAllBucketsDrained("ln"));
 
     validateRegionSizes(getTestMethodName() + "_PR", 10, vm2, vm3);
   }
@@ -147,20 +148,20 @@ public class ParallelGatewaySenderOperationsDUnitTest extends WANTestBase {
     waitForSendersRunning();
 
     // FIRST RUN: now, the senders are started. So, start the puts
-    vm4.invoke(() -> WANTestBase.doPuts(getTestMethodName() + "_PR", 100));
+    vm4.invoke(() -> doPuts(getTestMethodName() + "_PR", 100));
 
     // now, pause all of the senders
-    vm4.invoke(() -> WANTestBase.pauseSender("ln"));
-    vm5.invoke(() -> WANTestBase.pauseSender("ln"));
-    vm6.invoke(() -> WANTestBase.pauseSender("ln"));
-    vm7.invoke(() -> WANTestBase.pauseSender("ln"));
+    vm4.invoke(() -> pauseSender("ln"));
+    vm5.invoke(() -> pauseSender("ln"));
+    vm6.invoke(() -> pauseSender("ln"));
+    vm7.invoke(() -> pauseSender("ln"));
 
     // SECOND RUN: keep one thread doing puts to the region
-    vm4.invokeAsync(() -> WANTestBase.doPuts(getTestMethodName() + "_PR", 1000));
+    vm4.invokeAsync(() -> doPuts(getTestMethodName() + "_PR", 1000));
 
     // verify region size remains on remote vm and is restricted below a specified limit (i.e.
     // number of puts in the first run)
-    vm2.invoke(() -> WANTestBase.validateRegionSizeRemainsSame(getTestMethodName() + "_PR", 100));
+    vm2.invoke(() -> validateRegionSizeRemainsSame(getTestMethodName() + "_PR", 100));
   }
 
   /**
@@ -178,29 +179,24 @@ public class ParallelGatewaySenderOperationsDUnitTest extends WANTestBase {
     waitForSendersRunning();
 
     // now, the senders are started. So, start the puts
-    vm4.invokeAsync(() -> WANTestBase.doPuts(getTestMethodName() + "_PR", 1000));
+    vm4.invokeAsync(() -> doPuts(getTestMethodName() + "_PR", 1000));
 
     // now, pause all of the senders
-    vm4.invoke(() -> WANTestBase.pauseSender("ln"));
-    vm5.invoke(() -> WANTestBase.pauseSender("ln"));
-    vm6.invoke(() -> WANTestBase.pauseSender("ln"));
-    vm7.invoke(() -> WANTestBase.pauseSender("ln"));
-
-    // sleep for a second or two
-    Wait.pause(2000);
+    vm4.invoke(() -> pauseSender("ln"));
+    vm5.invoke(() -> pauseSender("ln"));
+    vm6.invoke(() -> pauseSender("ln"));
+    vm7.invoke(() -> pauseSender("ln"));
 
     // resume the senders
-    vm4.invoke(() -> WANTestBase.resumeSender("ln"));
-    vm5.invoke(() -> WANTestBase.resumeSender("ln"));
-    vm6.invoke(() -> WANTestBase.resumeSender("ln"));
-    vm7.invoke(() -> WANTestBase.resumeSender("ln"));
-
-    Wait.pause(2000);
+    vm4.invoke(() -> resumeSender("ln"));
+    vm5.invoke(() -> resumeSender("ln"));
+    vm6.invoke(() -> resumeSender("ln"));
+    vm7.invoke(() -> resumeSender("ln"));
 
     validateParallelSenderQueueAllBucketsDrained();
 
     // find the region size on remote vm
-    vm2.invoke(() -> WANTestBase.validateRegionSize(getTestMethodName() + "_PR", 1000));
+    vm2.invoke(() -> validateRegionSize(getTestMethodName() + "_PR", 1000));
   }
 
   /**
@@ -219,45 +215,45 @@ public class ParallelGatewaySenderOperationsDUnitTest extends WANTestBase {
 
     createCacheInVMs(lnPort, vm4, vm5);
 
-    vm4.invoke(() -> WANTestBase.createSender("ln", 2, true, 100, 10, false, false, null, true));
-    vm5.invoke(() -> WANTestBase.createSender("ln", 2, true, 100, 10, false, false, null, true));
+    vm4.invoke(() -> createSender("ln", 2, true, 100, 10, false, false, null, true));
+    vm5.invoke(() -> createSender("ln", 2, true, 100, 10, false, false, null, true));
 
-    vm4.invoke(() -> WANTestBase.createPartitionedRegion(getTestMethodName() + "_PR", "ln", 1, 100,
-        isOffHeap()));
-    vm5.invoke(() -> WANTestBase.createPartitionedRegion(getTestMethodName() + "_PR", "ln", 1, 100,
-        isOffHeap()));
+    vm4.invoke(
+        () -> createPartitionedRegion(getTestMethodName() + "_PR", "ln", 1, 100, isOffHeap()));
+    vm5.invoke(
+        () -> createPartitionedRegion(getTestMethodName() + "_PR", "ln", 1, 100, isOffHeap()));
 
-    vm2.invoke(() -> WANTestBase.createPartitionedRegion(getTestMethodName() + "_PR", null, 1, 100,
-        isOffHeap()));
-    vm3.invoke(() -> WANTestBase.createPartitionedRegion(getTestMethodName() + "_PR", null, 1, 100,
-        isOffHeap()));
+    vm2.invoke(
+        () -> createPartitionedRegion(getTestMethodName() + "_PR", null, 1, 100, isOffHeap()));
+    vm3.invoke(
+        () -> createPartitionedRegion(getTestMethodName() + "_PR", null, 1, 100, isOffHeap()));
 
     startSenderInVMs("ln", vm4, vm5);
 
     // wait till the senders are running
-    vm4.invoke(() -> WANTestBase.waitForSenderRunningState("ln"));
-    vm5.invoke(() -> WANTestBase.waitForSenderRunningState("ln"));
+    vm4.invoke(() -> waitForSenderRunningState("ln"));
+    vm5.invoke(() -> waitForSenderRunningState("ln"));
 
     // start the puts
-    vm4.invoke(() -> WANTestBase.doPuts(getTestMethodName() + "_PR", 100));
+    vm4.invoke(() -> doPuts(getTestMethodName() + "_PR", 100));
 
     // let the queue drain completely
-    vm4.invoke(() -> WANTestBase.validateQueueContents("ln", 0));
+    vm4.invoke(() -> validateQueueContents("ln", 0));
 
     // stop the senders
-    vm4.invoke(() -> WANTestBase.stopSender("ln"));
-    vm5.invoke(() -> WANTestBase.stopSender("ln"));
+    vm4.invoke(() -> stopSender("ln"));
+    vm5.invoke(() -> stopSender("ln"));
 
     // now, try to resume a stopped sender
-    vm4.invoke(() -> WANTestBase.resumeSender("ln"));
-    vm5.invoke(() -> WANTestBase.resumeSender("ln"));
+    vm4.invoke(() -> resumeSender("ln"));
+    vm5.invoke(() -> resumeSender("ln"));
 
     // do more puts
-    vm4.invoke(() -> WANTestBase.doPuts(getTestMethodName() + "_PR", 1000));
+    vm4.invoke(() -> doPuts(getTestMethodName() + "_PR", 1000));
 
     // validate region size on remote vm to contain only the events put in local site
     // before the senders are stopped.
-    vm2.invoke(() -> WANTestBase.validateRegionSize(getTestMethodName() + "_PR", 100));
+    vm2.invoke(() -> validateRegionSize(getTestMethodName() + "_PR", 100));
   }
 
   /**
@@ -265,7 +261,7 @@ public class ParallelGatewaySenderOperationsDUnitTest extends WANTestBase {
    */
   @Test
   public void testParallelPropagationSenderStop() throws Exception {
-    IgnoredException.addIgnoredException("Broken pipe");
+    addIgnoredException("Broken pipe");
     Integer[] locatorPorts = createLNAndNYLocators();
     Integer lnPort = locatorPorts[0];
     Integer nyPort = locatorPorts[1];
@@ -276,17 +272,17 @@ public class ParallelGatewaySenderOperationsDUnitTest extends WANTestBase {
     waitForSendersRunning();
 
     // FIRST RUN: now, the senders are started. So, do some of the puts
-    vm4.invoke(() -> WANTestBase.doPuts(getTestMethodName() + "_PR", 100));
+    vm4.invoke(() -> doPuts(getTestMethodName() + "_PR", 100));
 
     // now, stop all of the senders
     stopSenders();
 
     // SECOND RUN: keep one thread doing puts
-    vm4.invokeAsync(() -> WANTestBase.doPuts(getTestMethodName() + "_PR", 1000));
+    vm4.invokeAsync(() -> doPuts(getTestMethodName() + "_PR", 1000));
 
     // verify region size remains on remote vm and is restricted below a specified limit (number of
     // puts in the first run)
-    vm2.invoke(() -> WANTestBase.validateRegionSizeRemainsSame(getTestMethodName() + "_PR", 100));
+    vm2.invoke(() -> validateRegionSizeRemainsSame(getTestMethodName() + "_PR", 100));
   }
 
   /**
@@ -294,13 +290,12 @@ public class ParallelGatewaySenderOperationsDUnitTest extends WANTestBase {
    */
   @Test
   public void testParallelPropagationSenderStartAfterStop() throws Exception {
-    IgnoredException.addIgnoredException("Broken pipe");
+    addIgnoredException("Broken pipe");
     Integer[] locatorPorts = createLNAndNYLocators();
     Integer lnPort = locatorPorts[0];
     Integer nyPort = locatorPorts[1];
     String regionName = getTestMethodName() + "_PR";
 
-
     createCacheInVMs(nyPort, vm2, vm3);
     createCacheInVMs(lnPort, vm4, vm5, vm6, vm7);
 
@@ -328,7 +323,7 @@ public class ParallelGatewaySenderOperationsDUnitTest extends WANTestBase {
     vm7.invoke(() -> waitForSenderRunningState("ln"));
 
     // FIRST RUN: now, the senders are started. So, do some of the puts
-    vm4.invoke(() -> WANTestBase.doPuts(regionName, 200));
+    vm4.invoke(() -> doPuts(regionName, 200));
 
     // now, stop all of the senders
     vm4.invoke(() -> stopSender("ln"));
@@ -338,14 +333,14 @@ public class ParallelGatewaySenderOperationsDUnitTest extends WANTestBase {
 
     // Region size on remote site should remain same and below the number of puts done in the FIRST
     // RUN
-    vm2.invoke(() -> WANTestBase.validateRegionSizeRemainsSame(regionName, 200));
+    vm2.invoke(() -> validateRegionSizeRemainsSame(regionName, 200));
 
     // SECOND RUN: do some of the puts after the senders are stopped
-    vm4.invoke(() -> WANTestBase.doPuts(regionName, 1000));
+    vm4.invoke(() -> doPuts(regionName, 1000));
 
     // Region size on remote site should remain same and below the number of puts done in the FIRST
     // RUN
-    vm2.invoke(() -> WANTestBase.validateRegionSizeRemainsSame(regionName, 200));
+    vm2.invoke(() -> validateRegionSizeRemainsSame(regionName, 200));
 
     // start the senders again
     startSenderInVMs("ln", vm4, vm5, vm6, vm7);
@@ -357,22 +352,21 @@ public class ParallelGatewaySenderOperationsDUnitTest extends WANTestBase {
 
     // Region size on remote site should remain same and below the number of puts done in the FIRST
     // RUN
-    vm2.invoke(() -> WANTestBase.validateRegionSizeRemainsSame(regionName, 200));
+    vm2.invoke(() -> validateRegionSizeRemainsSame(regionName, 200));
 
     // SECOND RUN: do some more puts
-    AsyncInvocation async = vm4.invokeAsync(() -> WANTestBase.doPuts(regionName, 1000));
-    async.join();
+    vm4.invoke(() -> doPuts(regionName, 1000));
 
     // verify all the buckets on all the sender nodes are drained
     validateParallelSenderQueueAllBucketsDrained();
 
     // verify the events propagate to remote site
-    vm2.invoke(() -> WANTestBase.validateRegionSize(regionName, 1000));
+    vm2.invoke(() -> validateRegionSize(regionName, 1000));
 
-    vm4.invoke(() -> WANTestBase.validateQueueSizeStat("ln", 0));
-    vm5.invoke(() -> WANTestBase.validateQueueSizeStat("ln", 0));
-    vm6.invoke(() -> WANTestBase.validateQueueSizeStat("ln", 0));
-    vm7.invoke(() -> WANTestBase.validateQueueSizeStat("ln", 0));
+    vm4.invoke(() -> validateQueueSizeStat("ln", 0));
+    vm5.invoke(() -> validateQueueSizeStat("ln", 0));
+    vm6.invoke(() -> validateQueueSizeStat("ln", 0));
+    vm7.invoke(() -> validateQueueSizeStat("ln", 0));
   }
 
   /**
@@ -382,7 +376,7 @@ public class ParallelGatewaySenderOperationsDUnitTest extends WANTestBase {
    */
   @Test
   public void testParallelPropagationSenderStartAfterStop_Scenario2() throws Exception {
-    IgnoredException.addIgnoredException("Broken pipe");
+    addIgnoredException("Broken pipe");
     Integer[] locatorPorts = createLNAndNYLocators();
     Integer lnPort = locatorPorts[0];
     Integer nyPort = locatorPorts[1];
@@ -392,43 +386,32 @@ public class ParallelGatewaySenderOperationsDUnitTest extends WANTestBase {
     // make sure all the senders are running before doing any puts
     waitForSendersRunning();
 
-    LogWriterUtils.getLogWriter().info("All the senders are now started");
-
     // FIRST RUN: now, the senders are started. So, do some of the puts
-    vm4.invoke(() -> WANTestBase.doPuts(getTestMethodName() + "_PR", 200));
-
-    LogWriterUtils.getLogWriter().info("Done few puts");
+    vm4.invoke(() -> doPuts(getTestMethodName() + "_PR", 200));
 
     // Make sure the puts make it to the remote side
-    vm2.invoke(() -> WANTestBase.validateRegionSize(getTestMethodName() + "_PR", 200, 120000));
-    vm3.invoke(() -> WANTestBase.validateRegionSize(getTestMethodName() + "_PR", 200, 120000));
+    vm2.invoke(() -> validateRegionSize(getTestMethodName() + "_PR", 200, 120000));
+    vm3.invoke(() -> validateRegionSize(getTestMethodName() + "_PR", 200, 120000));
 
     // now, stop all of the senders
     stopSenders();
 
-    LogWriterUtils.getLogWriter().info("All the senders are stopped");
-    vm2.invoke(() -> WANTestBase.validateRegionSize(getTestMethodName() + "_PR", 200, 120000));
-    vm3.invoke(() -> WANTestBase.validateRegionSize(getTestMethodName() + "_PR", 200, 120000));
+    vm2.invoke(() -> validateRegionSize(getTestMethodName() + "_PR", 200, 120000));
+    vm3.invoke(() -> validateRegionSize(getTestMethodName() + "_PR", 200, 120000));
 
     // SECOND RUN: do some of the puts after the senders are stopped
-    vm4.invoke(() -> WANTestBase.doPuts(getTestMethodName() + "_PR", 1000));
-    LogWriterUtils.getLogWriter().info("Done some more puts in second run");
+    vm4.invoke(() -> doPuts(getTestMethodName() + "_PR", 1000));
 
     // Region size on remote site should remain same and below the number of puts done in the FIRST
     // RUN
-    vm2.invoke(() -> WANTestBase.validateRegionSizeRemainsSame(getTestMethodName() + "_PR", 200));
+    vm2.invoke(() -> validateRegionSizeRemainsSame(getTestMethodName() + "_PR", 200));
 
     // SECOND RUN: start async puts on region
-    AsyncInvocation async =
-        vm4.invokeAsync(() -> WANTestBase.doPuts(getTestMethodName() + "_PR", 5000));
-    LogWriterUtils.getLogWriter().info("Started high number of puts by async thread");
+    AsyncInvocation async = vm4.invokeAsync(() -> doPuts(getTestMethodName() + "_PR", 5000));
 
-    LogWriterUtils.getLogWriter().info("Starting the senders at the same time");
     // when puts are happening by another thread, start the senders
     startSenderInVMsAsync("ln", vm4, vm5, vm6, vm7);
 
-    LogWriterUtils.getLogWriter().info("All the senders are started");
-
     async.join();
 
     // verify all the buckets on all the sender nodes are drained
@@ -436,7 +419,7 @@ public class ParallelGatewaySenderOperationsDUnitTest extends WANTestBase {
 
     // verify that the queue size ultimately becomes zero. That means all the events propagate to
     // remote site.
-    vm4.invoke(() -> WANTestBase.validateQueueContents("ln", 0));
+    vm4.invoke(() -> validateQueueContents("ln", 0));
   }
 
   /**
@@ -444,9 +427,9 @@ public class ParallelGatewaySenderOperationsDUnitTest extends WANTestBase {
    */
   @Test
   public void testParallelPropagationSenderStartAfterStopOnAccessorNode() throws Exception {
-    IgnoredException.addIgnoredException("Broken pipe");
-    IgnoredException.addIgnoredException("Connection reset");
-    IgnoredException.addIgnoredException("Unexpected IOException");
+    addIgnoredException("Broken pipe");
+    addIgnoredException("Connection reset");
+    addIgnoredException("Unexpected IOException");
     Integer[] locatorPorts = createLNAndNYLocators();
     Integer lnPort = locatorPorts[0];
     Integer nyPort = locatorPorts[1];
@@ -457,39 +440,34 @@ public class ParallelGatewaySenderOperationsDUnitTest extends WANTestBase {
     waitForSendersRunning();
 
     // FIRST RUN: now, the senders are started. So, do some of the puts
-    vm4.invoke(() -> WANTestBase.doPuts(getTestMethodName() + "_PR", 200));
+    vm4.invoke(() -> doPuts(getTestMethodName() + "_PR", 200));
 
     // now, stop all of the senders
     stopSenders();
 
-    Wait.pause(2000);
-
     // SECOND RUN: do some of the puts after the senders are stopped
-    vm4.invoke(() -> WANTestBase.doPuts(getTestMethodName() + "_PR", 1000));
+    vm4.invoke(() -> doPuts(getTestMethodName() + "_PR", 1000));
 
     // Region size on remote site should remain same and below the number of puts done in the FIRST
     // RUN
-    vm2.invoke(() -> WANTestBase.validateRegionSizeRemainsSame(getTestMethodName() + "_PR", 200));
+    vm2.invoke(() -> validateRegionSizeRemainsSame(getTestMethodName() + "_PR", 200));
 
     // start the senders again
     startSenderInVMs("ln", vm4, vm5, vm6, vm7);
 
     // Region size on remote site should remain same and below the number of puts done in the FIRST
     // RUN
-    vm2.invoke(() -> WANTestBase.validateRegionSizeRemainsSame(getTestMethodName() + "_PR", 200));
+    vm2.invoke(() -> validateRegionSizeRemainsSame(getTestMethodName() + "_PR", 200));
 
     // SECOND RUN: do some more puts
-    AsyncInvocation async =
-        vm4.invokeAsync(() -> WANTestBase.doPuts(getTestMethodName() + "_PR", 1000));
-    async.join();
-    Wait.pause(5000);
+    vm4.invoke(() -> doPuts(getTestMethodName() + "_PR", 1000));
 
     // verify all buckets drained only on non-accessor nodes.
-    vm4.invoke(() -> WANTestBase.validateParallelSenderQueueAllBucketsDrained("ln"));
-    vm5.invoke(() -> WANTestBase.validateParallelSenderQueueAllBucketsDrained("ln"));
+    vm4.invoke(() -> validateParallelSenderQueueAllBucketsDrained("ln"));
+    vm5.invoke(() -> validateParallelSenderQueueAllBucketsDrained("ln"));
 
     // verify the events propagate to remote site
-    vm2.invoke(() -> WANTestBase.validateRegionSize(getTestMethodName() + "_PR", 1000));
+    vm2.invoke(() -> validateRegionSize(getTestMethodName() + "_PR", 1000));
   }
 
   /**
@@ -503,8 +481,7 @@ public class ParallelGatewaySenderOperationsDUnitTest extends WANTestBase {
 
     createSendersReceiversAndPartitionedRegion(lnPort, nyPort, false, true);
 
-    vm4.invoke(() -> WANTestBase.doPuts(getTestMethodName() + "_PR", 1000));
-    LogWriterUtils.getLogWriter().info("Done 1000 puts on local site");
+    vm4.invoke(() -> doPuts(getTestMethodName() + "_PR", 1000));
 
     // Since puts are already done on userPR, it will have the buckets created.
     // During sender start, it will wait until those buckets are created for shadowPR as well.
@@ -514,42 +491,31 @@ public class ParallelGatewaySenderOperationsDUnitTest extends WANTestBase {
 
     waitForSendersRunning();
 
-    LogWriterUtils.getLogWriter().info("Started senders on local site");
-
-    vm4.invoke(() -> WANTestBase.doPuts(getTestMethodName() + "_PR", 5000));
-    LogWriterUtils.getLogWriter().info("Done 5000 puts on local site");
-
-    vm4.invoke(() -> WANTestBase.pauseSender("ln"));
-    vm5.invoke(() -> WANTestBase.pauseSender("ln"));
-    vm6.invoke(() -> WANTestBase.pauseSender("ln"));
-    vm7.invoke(() -> WANTestBase.pauseSender("ln"));
-    LogWriterUtils.getLogWriter().info("Paused senders on local site");
-
-    vm4.invoke(() -> WANTestBase.verifySenderPausedState("ln"));
-    vm5.invoke(() -> WANTestBase.verifySenderPausedState("ln"));
-    vm6.invoke(() -> WANTestBase.verifySenderPausedState("ln"));
-    vm7.invoke(() -> WANTestBase.verifySenderPausedState("ln"));
-
-    AsyncInvocation inv1 =
-        vm4.invokeAsync(() -> WANTestBase.doPuts(getTestMethodName() + "_PR", 1000));
-    LogWriterUtils.getLogWriter().info("Started 1000 async puts on local site");
-
-    vm4.invoke(() -> WANTestBase.resumeSender("ln"));
-    vm5.invoke(() -> WANTestBase.resumeSender("ln"));
-    vm6.invoke(() -> WANTestBase.resumeSender("ln"));
-    vm7.invoke(() -> WANTestBase.resumeSender("ln"));
-    LogWriterUtils.getLogWriter().info("Resumed senders on local site");
-
-    vm4.invoke(() -> WANTestBase.verifySenderResumedState("ln"));
-    vm5.invoke(() -> WANTestBase.verifySenderResumedState("ln"));
-    vm6.invoke(() -> WANTestBase.verifySenderResumedState("ln"));
-    vm7.invoke(() -> WANTestBase.verifySenderResumedState("ln"));
-
-    try {
-      inv1.join();
-    } catch (InterruptedException e) {
-      fail("Interrupted the async invocation.", e);
-    }
+    vm4.invoke(() -> doPuts(getTestMethodName() + "_PR", 5000));
+
+    vm4.invoke(() -> pauseSender("ln"));
+    vm5.invoke(() -> pauseSender("ln"));
+    vm6.invoke(() -> pauseSender("ln"));
+    vm7.invoke(() -> pauseSender("ln"));
+
+    vm4.invoke(() -> verifySenderPausedState("ln"));
+    vm5.invoke(() -> verifySenderPausedState("ln"));
+    vm6.invoke(() -> verifySenderPausedState("ln"));
+    vm7.invoke(() -> verifySenderPausedState("ln"));
+
+    AsyncInvocation async = vm4.invokeAsync(() -> doPuts(getTestMethodName() + "_PR", 1000));
+
+    vm4.invoke(() -> resumeSender("ln"));
+    vm5.invoke(() -> resumeSender("ln"));
+    vm6.invoke(() -> resumeSender("ln"));
+    vm7.invoke(() -> resumeSender("ln"));
+
+    vm4.invoke(() -> verifySenderResumedState("ln"));
+    vm5.invoke(() -> verifySenderResumedState("ln"));
+    vm6.invoke(() -> verifySenderResumedState("ln"));
+    vm7.invoke(() -> verifySenderResumedState("ln"));
+
+    async.await();
 
     // verify all buckets drained on all sender nodes.
     validateParallelSenderQueueAllBucketsDrained();
@@ -572,23 +538,22 @@ public class ParallelGatewaySenderOperationsDUnitTest extends WANTestBase {
     // make sure all the senders are running before doing any puts
     waitForSendersRunning();
 
-    vm4.invoke(() -> WANTestBase.doPuts(getTestMethodName() + "_PR", 1000));
+    vm4.invoke(() -> doPuts(getTestMethodName() + "_PR", 1000));
 
     // try destroying on couple of nodes
-    try {
-      vm4.invoke(() -> WANTestBase.destroySender("ln"));
-    } catch (RMIException e) {
-      assertTrue("Cause of the exception should be GatewaySenderException",
-          e.getCause() instanceof GatewaySenderException);
-    }
-    try {
-      vm5.invoke(() -> WANTestBase.destroySender("ln"));
-    } catch (RMIException e) {
-      assertTrue("Cause of the exception should be GatewaySenderException",
-          e.getCause() instanceof GatewaySenderException);
-    }
+    catchException(vm4).invoke(() -> destroySender("ln"));
+
+    Exception caughtException = caughtException();
+    assertThat(caughtException).isInstanceOf(RMIException.class);
+    assertThat(caughtException.getCause()).isInstanceOf(GatewaySenderException.class);
+
+    catchException(vm5).invoke(() -> destroySender("ln"));
 
-    vm2.invoke(() -> WANTestBase.validateRegionSize(getTestMethodName() + "_PR", 1000));
+    caughtException = caughtException();
+    assertThat(caughtException).isInstanceOf(RMIException.class);
+    assertThat(caughtException.getCause()).isInstanceOf(GatewaySenderException.class);
+
+    vm2.invoke(() -> validateRegionSize(getTestMethodName() + "_PR", 1000));
   }
 
   @Test
@@ -602,27 +567,25 @@ public class ParallelGatewaySenderOperationsDUnitTest extends WANTestBase {
     // make sure all the senders are running
     waitForSendersRunning();
 
-    vm4.invoke(() -> WANTestBase.doPuts(getTestMethodName() + "_PR", 1000));
-
-    Wait.pause(2000);
+    vm4.invoke(() -> doPuts(getTestMethodName() + "_PR", 1000));
 
     // stop the sender and remove from region before calling destroy on it
     stopSenders();
 
-    vm4.invoke(() -> WANTestBase.removeSenderFromTheRegion("ln", getTestMethodName() + "_PR"));
-    vm5.invoke(() -> WANTestBase.removeSenderFromTheRegion("ln", getTestMethodName() + "_PR"));
-    vm6.invoke(() -> WANTestBase.removeSenderFromTheRegion("ln", getTestMethodName() + "_PR"));
-    vm7.invoke(() -> WANTestBase.removeSenderFromTheRegion("ln", getTestMethodName() + "_PR"));
+    vm4.invoke(() -> removeSenderFromTheRegion("ln", getTestMethodName() + "_PR"));
+    vm5.invoke(() -> removeSenderFromTheRegion("ln", getTestMethodName() + "_PR"));
+    vm6.invoke(() -> removeSenderFromTheRegion("ln", getTestMethodName() + "_PR"));
+    vm7.invoke(() -> removeSenderFromTheRegion("ln", getTestMethodName() + "_PR"));
 
-    vm4.invoke(() -> WANTestBase.destroySender("ln"));
-    vm5.invoke(() -> WANTestBase.destroySender("ln"));
-    vm6.invoke(() -> WANTestBase.destroySender("ln"));
-    vm7.invoke(() -> WANTestBase.destroySender("ln"));
+    vm4.invoke(() -> destroySender("ln"));
+    vm5.invoke(() -> destroySender("ln"));
+    vm6.invoke(() -> destroySender("ln"));
+    vm7.invoke(() -> destroySender("ln"));
 
-    vm4.invoke(() -> WANTestBase.verifySenderDestroyed("ln", true));
-    vm5.invoke(() -> WANTestBase.verifySenderDestroyed("ln", true));
-    vm6.invoke(() -> WANTestBase.verifySenderDestroyed("ln", true));
-    vm7.invoke(() -> WANTestBase.verifySenderDestroyed("ln", true));
+    vm4.invoke(() -> verifySenderDestroyed("ln", true));
+    vm5.invoke(() -> verifySenderDestroyed("ln", true));
+    vm6.invoke(() -> verifySenderDestroyed("ln", true));
+    vm7.invoke(() -> verifySenderDestroyed("ln", true));
   }
 
   @Test
@@ -646,27 +609,23 @@ public class ParallelGatewaySenderOperationsDUnitTest extends WANTestBase {
     validateRegionSizes(regionName, numPuts, vm4);
 
     // Start receiver
-    IgnoredException ignoredMTLE =
-        IgnoredException.addIgnoredException(MessageTooLargeException.class.getName(), vm4);
-    IgnoredException ignoredGIOE =
-        IgnoredException.addIgnoredException(GemFireIOException.class.getName(), vm4);
+    addIgnoredException(MessageTooLargeException.class.getName(), vm4);
+    addIgnoredException(GemFireIOException.class.getName(), vm4);
+
     vm2.invoke(() -> createCache(nyPort));
     vm2.invoke(() -> createPartitionedRegion(regionName, null, 0, 100, isOffHeap()));
     vm2.invoke(() -> createReceiver());
+
     validateRegionSizes(regionName, numPuts, vm2);
 
     vm4.invoke(() -> {
-      final AbstractGatewaySender sender = (AbstractGatewaySender) cache.getGatewaySender("ln");
-      assertTrue(sender.getStatistics().getBatchesResized() > 0);
+      AbstractGatewaySender sender = (AbstractGatewaySender) cache.getGatewaySender("ln");
+      assertThat(sender.getStatistics().getBatchesResized()).isGreaterThan(0);
     });
-    ignoredMTLE.remove();
-    ignoredGIOE.remove();
   }
 
   private void createSendersReceiversAndPartitionedRegion(Integer lnPort, Integer nyPort,
       boolean createAccessors, boolean startSenders) {
-    // Note: This is a test-specific method used by several test to create
-    // receivers, senders and partitioned regions.
     createSendersAndReceivers(lnPort, nyPort);
 
     createPartitionedRegions(createAccessors);
@@ -677,8 +636,6 @@ public class ParallelGatewaySenderOperationsDUnitTest extends WANTestBase {
   }
 
   private void createSendersAndReceivers(Integer lnPort, Integer nyPort) {
-    // Note: This is a test-specific method used by several test to create
-    // receivers and senders.
     createCacheInVMs(nyPort, vm2, vm3);
     createReceiverInVMs(vm2, vm3);
 
@@ -691,8 +648,6 @@ public class ParallelGatewaySenderOperationsDUnitTest extends WANTestBase {
   }
 
   private void createPartitionedRegions(boolean createAccessors) {
-    // Note: This is a test-specific method used by several test to create
-    // partitioned regions.
     String regionName = getTestMethodName() + "_PR";
     vm4.invoke(() -> createPartitionedRegion(regionName, "ln", 1, 100, isOffHeap()));
     vm5.invoke(() -> createPartitionedRegion(regionName, "ln", 1, 100, isOffHeap()));
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/serial/SerialGatewaySenderQueueDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/serial/SerialGatewaySenderQueueDUnitTest.java
index ab673e6..63c715b 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/serial/SerialGatewaySenderQueueDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/serial/SerialGatewaySenderQueueDUnitTest.java
@@ -214,7 +214,7 @@ public class SerialGatewaySenderQueueDUnitTest extends WANTestBase {
     Integer remoteLocPort =
         (Integer) vm1.invoke(() -> WANTestBase.createFirstRemoteLocator(2, localLocPort));
 
-    WANTestBase test = new WANTestBase(getTestMethodName());
+    WANTestBase test = new WANTestBase();
     Properties props = test.getDistributedSystemProperties();
     props.setProperty(MCAST_PORT, "0");
     props.setProperty(LOCATORS, "localhost[" + localLocPort + "]");
@@ -276,7 +276,7 @@ public class SerialGatewaySenderQueueDUnitTest extends WANTestBase {
     Integer remoteLocPort =
         (Integer) vm1.invoke(() -> WANTestBase.createFirstRemoteLocator(2, localLocPort));
 
-    WANTestBase test = new WANTestBase(getTestMethodName());
+    WANTestBase test = new WANTestBase();
     Properties props = test.getDistributedSystemProperties();
     props.setProperty(MCAST_PORT, "0");
     props.setProperty(LOCATORS, "localhost[" + localLocPort + "]");
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateDestroyGatewaySenderCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateDestroyGatewaySenderCommandDUnitTest.java
index fa2d719..f98c4c0 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateDestroyGatewaySenderCommandDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateDestroyGatewaySenderCommandDUnitTest.java
@@ -21,6 +21,7 @@ import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.ver
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.verifySenderState;
 import static org.assertj.core.api.Assertions.assertThat;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Properties;
@@ -43,14 +44,19 @@ import org.apache.geode.test.junit.rules.GfshCommandRule;
 import org.apache.geode.test.junit.rules.VMProvider;
 
 @Category({DistributedTest.class, WanTest.class})
-public class CreateDestroyGatewaySenderCommandDUnitTest {
+@SuppressWarnings("serial")
+public class CreateDestroyGatewaySenderCommandDUnitTest implements Serializable {
 
-  public static final String CREATE =
+  private static final String SERVER_3 = "server-3";
+  private static final String SERVER_4 = "server-4";
+  private static final String SERVER_5 = "server-5";
+
+  private static final String CREATE =
       "create gateway-sender --id=ln " + "--remote-distributed-system-id=2";
-  public static final String DESTROY = "destroy gateway-sender --id=ln ";
+  private static final String DESTROY = "destroy gateway-sender --id=ln ";
 
   @ClassRule
-  public static ClusterStartupRule clusterStartupRule = new ClusterStartupRule();
+  public static ClusterStartupRule clusterStartupRule = new ClusterStartupRule(8);
 
   @Rule
   public GfshCommandRule gfsh = new GfshCommandRule();
@@ -91,9 +97,9 @@ public class CreateDestroyGatewaySenderCommandDUnitTest {
   @Test
   public void testCreateDestroyGatewaySenderWithDefault() throws Exception {
     gfsh.executeAndAssertThat(CREATE).statusIsSuccess().tableHasColumnWithExactValuesInAnyOrder(
-        "Status", "GatewaySender \"ln\" created on \"server-3\"",
-        "GatewaySender \"ln\" created on \"server-4\"",
-        "GatewaySender \"ln\" created on \"server-5\"");
+        "Status", "GatewaySender \"ln\" created on \"" + SERVER_3 + "\"",
+        "GatewaySender \"ln\" created on \"" + SERVER_4 + "\"",
+        "GatewaySender \"ln\" created on \"" + SERVER_5 + "\"");
 
     VMProvider.invokeInEveryMember(() -> verifySenderState("ln", true, false), server1, server2,
         server3);
@@ -106,9 +112,9 @@ public class CreateDestroyGatewaySenderCommandDUnitTest {
 
     // destroy gateway sender and verify AEQs cleaned up
     gfsh.executeAndAssertThat(DESTROY).statusIsSuccess().tableHasColumnWithExactValuesInAnyOrder(
-        "Status", "GatewaySender \"ln\" destroyed on \"server-3\"",
-        "GatewaySender \"ln\" destroyed on \"server-4\"",
-        "GatewaySender \"ln\" destroyed on \"server-5\"");
+        "Status", "GatewaySender \"ln\" destroyed on \"" + SERVER_3 + "\"",
+        "GatewaySender \"ln\" destroyed on \"" + SERVER_4 + "\"",
+        "GatewaySender \"ln\" destroyed on \"" + SERVER_5 + "\"");
 
     VMProvider.invokeInEveryMember(() -> verifySenderDoesNotExist("ln", false), server1, server2,
         server3);
@@ -118,11 +124,10 @@ public class CreateDestroyGatewaySenderCommandDUnitTest {
           .getConfiguration("cluster").getCacheXmlContent();
       assertThat(xml).doesNotContain("gateway-sender id=\"ln\"");
     });
-
   }
 
   /**
-   * + * GatewaySender with given attribute values +
+   * GatewaySender with given attribute values +
    */
   @Test
   public void testCreateDestroyGatewaySender() throws Exception {
@@ -143,10 +148,9 @@ public class CreateDestroyGatewaySenderCommandDUnitTest {
         + CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS + "=2" + " --"
         + CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY + "=THREAD";
     gfsh.executeAndAssertThat(command).statusIsSuccess().tableHasColumnWithExactValuesInAnyOrder(
-        "Status", "GatewaySender \"ln\" created on \"server-3\"",
-        "GatewaySender \"ln\" created on \"server-4\"",
-        "GatewaySender \"ln\" created on \"server-5\"");
-
+        "Status", "GatewaySender \"ln\" created on \"" + SERVER_3 + "\"",
+        "GatewaySender \"ln\" created on \"" + SERVER_4 + "\"",
+        "GatewaySender \"ln\" created on \"" + SERVER_5 + "\"");
 
     VMProvider.invokeInEveryMember(() -> {
       verifySenderState("ln", false, false);
@@ -156,9 +160,9 @@ public class CreateDestroyGatewaySenderCommandDUnitTest {
 
     // destroy gateway sender and verify AEQs cleaned up
     gfsh.executeAndAssertThat(DESTROY).statusIsSuccess().tableHasColumnWithExactValuesInAnyOrder(
-        "Status", "GatewaySender \"ln\" destroyed on \"server-3\"",
-        "GatewaySender \"ln\" destroyed on \"server-4\"",
-        "GatewaySender \"ln\" destroyed on \"server-5\"");
+        "Status", "GatewaySender \"ln\" destroyed on \"" + SERVER_3 + "\"",
+        "GatewaySender \"ln\" destroyed on \"" + SERVER_4 + "\"",
+        "GatewaySender \"ln\" destroyed on \"" + SERVER_5 + "\"");
 
     VMProvider.invokeInEveryMember(() -> verifySenderDoesNotExist("ln", false), server1, server2,
         server3);
@@ -189,11 +193,11 @@ public class CreateDestroyGatewaySenderCommandDUnitTest {
         + "=org.apache.geode.cache30.MyGatewayEventFilter1,org.apache.geode.cache30.MyGatewayEventFilter2";
 
     gfsh.executeAndAssertThat(command).statusIsSuccess().tableHasColumnWithExactValuesInAnyOrder(
-        "Status", "GatewaySender \"ln\" created on \"server-3\"",
-        "GatewaySender \"ln\" created on \"server-4\"",
-        "GatewaySender \"ln\" created on \"server-5\"");
+        "Status", "GatewaySender \"ln\" created on \"" + SERVER_3 + "\"",
+        "GatewaySender \"ln\" created on \"" + SERVER_4 + "\"",
+        "GatewaySender \"ln\" created on \"" + SERVER_5 + "\"");
 
-    List<String> eventFilters = new ArrayList<String>();
+    List<String> eventFilters = new ArrayList<>();
     eventFilters.add("org.apache.geode.cache30.MyGatewayEventFilter1");
     eventFilters.add("org.apache.geode.cache30.MyGatewayEventFilter2");
 
@@ -203,12 +207,11 @@ public class CreateDestroyGatewaySenderCommandDUnitTest {
           false, 1000, 100, 2, GatewaySender.OrderPolicy.THREAD, eventFilters, null);
     }, server1, server2, server3);
 
-
     // destroy gateway sender and verify AEQs cleaned up
     gfsh.executeAndAssertThat(DESTROY).statusIsSuccess().tableHasColumnWithExactValuesInAnyOrder(
-        "Status", "GatewaySender \"ln\" destroyed on \"server-3\"",
-        "GatewaySender \"ln\" destroyed on \"server-4\"",
-        "GatewaySender \"ln\" destroyed on \"server-5\"");
+        "Status", "GatewaySender \"ln\" destroyed on \"" + SERVER_3 + "\"",
+        "GatewaySender \"ln\" destroyed on \"" + SERVER_4 + "\"",
+        "GatewaySender \"ln\" destroyed on \"" + SERVER_5 + "\"");
 
     VMProvider.invokeInEveryMember(() -> verifySenderDoesNotExist("ln", false), server1, server2,
         server3);
@@ -238,11 +241,11 @@ public class CreateDestroyGatewaySenderCommandDUnitTest {
         + CliStrings.CREATE_GATEWAYSENDER__GATEWAYTRANSPORTFILTER
         + "=org.apache.geode.cache30.MyGatewayTransportFilter1";
     gfsh.executeAndAssertThat(command).statusIsSuccess().tableHasColumnWithExactValuesInAnyOrder(
-        "Status", "GatewaySender \"ln\" created on \"server-3\"",
-        "GatewaySender \"ln\" created on \"server-4\"",
-        "GatewaySender \"ln\" created on \"server-5\"");
+        "Status", "GatewaySender \"ln\" created on \"" + SERVER_3 + "\"",
+        "GatewaySender \"ln\" created on \"" + SERVER_4 + "\"",
+        "GatewaySender \"ln\" created on \"" + SERVER_5 + "\"");
 
-    List<String> transportFilters = new ArrayList<String>();
+    List<String> transportFilters = new ArrayList<>();
     transportFilters.add("org.apache.geode.cache30.MyGatewayTransportFilter1");
 
     VMProvider.invokeInEveryMember(() -> {
@@ -251,12 +254,11 @@ public class CreateDestroyGatewaySenderCommandDUnitTest {
           false, 1000, 100, 2, GatewaySender.OrderPolicy.THREAD, null, transportFilters);
     }, server1, server2, server3);
 
-
     // destroy gateway sender and verify AEQs cleaned up
     gfsh.executeAndAssertThat(DESTROY).statusIsSuccess().tableHasColumnWithExactValuesInAnyOrder(
-        "Status", "GatewaySender \"ln\" destroyed on \"server-3\"",
-        "GatewaySender \"ln\" destroyed on \"server-4\"",
-        "GatewaySender \"ln\" destroyed on \"server-5\"");
+        "Status", "GatewaySender \"ln\" destroyed on \"" + SERVER_3 + "\"",
+        "GatewaySender \"ln\" destroyed on \"" + SERVER_4 + "\"",
+        "GatewaySender \"ln\" destroyed on \"" + SERVER_5 + "\"");
 
     VMProvider.invokeInEveryMember(() -> verifySenderDoesNotExist("ln", false), server1, server2,
         server3);
@@ -269,7 +271,7 @@ public class CreateDestroyGatewaySenderCommandDUnitTest {
   public void testCreateDestroyGatewaySender_OnMember() throws Exception {
     gfsh.executeAndAssertThat(CREATE + " --member=" + server1.getName()).statusIsSuccess()
         .tableHasColumnWithExactValuesInAnyOrder("Status",
-            "GatewaySender \"ln\" created on \"server-3\"");
+            "GatewaySender \"ln\" created on \"" + SERVER_3 + "\"");
 
     server1.invoke(() -> {
       verifySenderState("ln", true, false);
@@ -279,7 +281,7 @@ public class CreateDestroyGatewaySenderCommandDUnitTest {
 
     gfsh.executeAndAssertThat(DESTROY + " --member=" + server1.getName()).statusIsSuccess()
         .tableHasColumnWithExactValuesInAnyOrder("Status",
-            "GatewaySender \"ln\" destroyed on \"server-3\"");
+            "GatewaySender \"ln\" destroyed on \"" + SERVER_3 + "\"");
 
     VMProvider.invokeInEveryMember(() -> verifySenderDoesNotExist("ln", false), server1);
   }
@@ -291,7 +293,7 @@ public class CreateDestroyGatewaySenderCommandDUnitTest {
   public void testCreateDestroyGatewaySender_Group() throws Exception {
     gfsh.executeAndAssertThat(CREATE + " --group=senderGroup1").statusIsSuccess()
         .tableHasColumnWithExactValuesInAnyOrder("Status",
-            "GatewaySender \"ln\" created on \"server-3\"");
+            "GatewaySender \"ln\" created on \"" + SERVER_3 + "\"");
 
     server1.invoke(() -> {
       verifySenderState("ln", true, false);
@@ -301,27 +303,27 @@ public class CreateDestroyGatewaySenderCommandDUnitTest {
 
     gfsh.executeAndAssertThat(DESTROY + " --group=senderGroup1").statusIsSuccess()
         .tableHasColumnWithExactValuesInAnyOrder("Status",
-            "GatewaySender \"ln\" destroyed on \"server-3\"");
+            "GatewaySender \"ln\" destroyed on \"" + SERVER_3 + "\"");
 
     VMProvider.invokeInEveryMember(() -> verifySenderDoesNotExist("ln", false), server1);
   }
 
   /**
-   * + * Parallel GatewaySender with given attribute values +
+   * Parallel GatewaySender with given attribute values +
    */
   @Test
   public void testCreateDestroyParallelGatewaySender() throws Exception {
     gfsh.executeAndAssertThat(CREATE + " --parallel").statusIsSuccess()
         .tableHasColumnWithExactValuesInAnyOrder("Status",
-            "GatewaySender \"ln\" created on \"server-3\"",
-            "GatewaySender \"ln\" created on \"server-4\"",
-            "GatewaySender \"ln\" created on \"server-5\"");
+            "GatewaySender \"ln\" created on \"" + SERVER_3 + "\"",
+            "GatewaySender \"ln\" created on \"" + SERVER_4 + "\"",
+            "GatewaySender \"ln\" created on \"" + SERVER_5 + "\"");
 
     // destroy gateway sender and verify AEQs cleaned up
     gfsh.executeAndAssertThat(DESTROY).statusIsSuccess().tableHasColumnWithExactValuesInAnyOrder(
-        "Status", "GatewaySender \"ln\" destroyed on \"server-3\"",
-        "GatewaySender \"ln\" destroyed on \"server-4\"",
-        "GatewaySender \"ln\" destroyed on \"server-5\"");
+        "Status", "GatewaySender \"ln\" destroyed on \"" + SERVER_3 + "\"",
+        "GatewaySender \"ln\" destroyed on \"" + SERVER_4 + "\"",
+        "GatewaySender \"ln\" destroyed on \"" + SERVER_5 + "\"");
 
     VMProvider.invokeInEveryMember(() -> verifySenderDoesNotExist("ln", false), server1, server2,
         server3);
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateGatewayReceiverCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateGatewayReceiverCommandDUnitTest.java
index 7f09f61..ef2b822 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateGatewayReceiverCommandDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateGatewayReceiverCommandDUnitTest.java
@@ -18,11 +18,12 @@ import static org.apache.geode.distributed.ConfigurationProperties.BIND_ADDRESS;
 import static org.apache.geode.distributed.ConfigurationProperties.DISTRIBUTED_SYSTEM_ID;
 import static org.apache.geode.distributed.ConfigurationProperties.GROUPS;
 import static org.apache.geode.distributed.ConfigurationProperties.SERVER_BIND_ADDRESS;
-import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.getMemberIdCallable;
+import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.getMember;
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.verifyGatewayReceiverProfile;
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.verifyGatewayReceiverServerLocations;
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.verifyReceiverCreationWithAttributes;
 import static org.apache.geode.management.internal.cli.i18n.CliStrings.GROUP;
+import static org.apache.geode.test.junit.rules.VMProvider.invokeInEveryMember;
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.net.InetAddress;
@@ -45,18 +46,24 @@ import org.apache.geode.test.dunit.rules.MemberVM;
 import org.apache.geode.test.junit.categories.DistributedTest;
 import org.apache.geode.test.junit.categories.WanTest;
 import org.apache.geode.test.junit.rules.GfshCommandRule;
-import org.apache.geode.test.junit.rules.VMProvider;
 
 /**
  * DUnit tests for 'create gateway-receiver' command.
  */
 @Category({DistributedTest.class, WanTest.class})
 public class CreateGatewayReceiverCommandDUnitTest {
+
+  private static final String SERVER_1 = "server-1";
+  private static final String SERVER_2 = "server-2";
+  private static final String SERVER_3 = "server-3";
+
   private MemberVM locatorSite1;
-  private MemberVM server1, server2, server3;
+  private MemberVM server1;
+  private MemberVM server2;
+  private MemberVM server3;
 
   @Rule
-  public ClusterStartupRule clusterStartupRule = new ClusterStartupRule();
+  public ClusterStartupRule clusterStartupRule = new ClusterStartupRule(4);
 
   @Rule
   public GfshCommandRule gfsh = new GfshCommandRule();
@@ -65,26 +72,12 @@ public class CreateGatewayReceiverCommandDUnitTest {
   public void before() throws Exception {
     Properties props = new Properties();
     props.setProperty(DISTRIBUTED_SYSTEM_ID, "" + 1);
-    locatorSite1 = clusterStartupRule.startLocatorVM(1, props);
+    locatorSite1 = clusterStartupRule.startLocatorVM(0, props);
 
     // Connect Gfsh to locator.
     gfsh.connectAndVerify(locatorSite1);
   }
 
-  private String getHostName() throws Exception {
-    return SocketCreator.getLocalHost().getCanonicalHostName();
-  }
-
-  private String getBindAddress() throws Exception {
-    return InetAddress.getLocalHost().getHostAddress();
-  }
-
-  private MemberVM startServerWithGroups(int index, String groups, int locPort) throws Exception {
-    Properties props = new Properties();
-    props.setProperty(GROUPS, groups);
-    return clusterStartupRule.startServerVM(index, props, locPort);
-  }
-
   /**
    * GatewayReceiver with given attributes. Error scenario where the user tries to create more than
    * one receiver per member.
@@ -92,9 +85,9 @@ public class CreateGatewayReceiverCommandDUnitTest {
   @Test
   public void testCreateGatewayReceiverErrorWhenGatewayReceiverAlreadyExists() throws Exception {
     Integer locator1Port = locatorSite1.getPort();
-    server1 = clusterStartupRule.startServerVM(3, locator1Port);
-    server2 = clusterStartupRule.startServerVM(4, locator1Port);
-    server3 = clusterStartupRule.startServerVM(5, locator1Port);
+    server1 = clusterStartupRule.startServerVM(1, locator1Port);
+    server2 = clusterStartupRule.startServerVM(2, locator1Port);
+    server3 = clusterStartupRule.startServerVM(3, locator1Port);
 
     // Initial Creation should succeed
     String command =
@@ -104,20 +97,20 @@ public class CreateGatewayReceiverCommandDUnitTest {
             + CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS + "=100000" + " --"
             + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000";
     gfsh.executeAndAssertThat(command).statusIsSuccess()
-        .tableHasColumnWithExactValuesInAnyOrder("Member", "server-3", "server-4", "server-5")
+        .tableHasColumnWithExactValuesInAnyOrder("Member", SERVER_1, SERVER_2, SERVER_3)
         .tableHasColumnWithValuesContaining("Status",
-            "GatewayReceiver created on member \"server-3\"",
-            "GatewayReceiver created on member \"server-4\"",
-            "GatewayReceiver created on member \"server-5\"");
+            "GatewayReceiver created on member \"" + SERVER_1 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_2 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_3 + "\"");
 
-    VMProvider.invokeInEveryMember(() -> {
+    invokeInEveryMember(() -> {
       verifyReceiverCreationWithAttributes(!GatewayReceiver.DEFAULT_MANUAL_START, 10000, 11000,
           "localhost", 100000, 512000, null, GatewayReceiver.DEFAULT_HOSTNAME_FOR_SENDERS);
     }, server1, server2, server3);
 
     // This should fail as there's already a gateway receiver created on the member.
     gfsh.executeAndAssertThat(command).statusIsError()
-        .tableHasColumnWithExactValuesInAnyOrder("Member", "server-3", "server-4", "server-5")
+        .tableHasColumnWithExactValuesInAnyOrder("Member", SERVER_1, SERVER_2, SERVER_3)
         .tableHasColumnWithExactValuesInAnyOrder("Status",
             "ERROR: java.lang.IllegalStateException: A Gateway Receiver already exists on this member.",
             "ERROR: java.lang.IllegalStateException: A Gateway Receiver already exists on this member.",
@@ -130,25 +123,25 @@ public class CreateGatewayReceiverCommandDUnitTest {
   @Test
   public void testCreateGatewayReceiverWithDefault() throws Exception {
     Integer locator1Port = locatorSite1.getPort();
-    server1 = clusterStartupRule.startServerVM(3, locator1Port);
-    server2 = clusterStartupRule.startServerVM(4, locator1Port);
-    server3 = clusterStartupRule.startServerVM(5, locator1Port);
+    server1 = clusterStartupRule.startServerVM(1, locator1Port);
+    server2 = clusterStartupRule.startServerVM(2, locator1Port);
+    server3 = clusterStartupRule.startServerVM(3, locator1Port);
 
     // Default attributes.
     String command = CliStrings.CREATE_GATEWAYRECEIVER;
     gfsh.executeAndAssertThat(command).statusIsSuccess()
-        .tableHasColumnWithExactValuesInAnyOrder("Member", "server-3", "server-4", "server-5")
+        .tableHasColumnWithExactValuesInAnyOrder("Member", SERVER_1, SERVER_2, SERVER_3)
         .tableHasColumnWithValuesContaining("Status",
-            "GatewayReceiver created on member \"server-3\"",
-            "GatewayReceiver created on member \"server-4\"",
-            "GatewayReceiver created on member \"server-5\"");
+            "GatewayReceiver created on member \"" + SERVER_1 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_2 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_3 + "\"");
 
     // If neither bind-address or hostname-for-senders is set, profile
     // uses AcceptorImpl.getExternalAddress() to derive canonical hostname
     // when the Profile (and ServerLocation) are created
     String hostname = getHostName();
 
-    VMProvider.invokeInEveryMember(() -> {
+    invokeInEveryMember(() -> {
       verifyGatewayReceiverProfile(hostname);
       verifyGatewayReceiverServerLocations(locator1Port, hostname);
       verifyReceiverCreationWithAttributes(!GatewayReceiver.DEFAULT_MANUAL_START,
@@ -165,9 +158,9 @@ public class CreateGatewayReceiverCommandDUnitTest {
   @Test
   public void testCreateGatewayReceiver() throws Exception {
     Integer locator1Port = locatorSite1.getPort();
-    server1 = clusterStartupRule.startServerVM(3, locator1Port);
-    server2 = clusterStartupRule.startServerVM(4, locator1Port);
-    server3 = clusterStartupRule.startServerVM(5, locator1Port);
+    server1 = clusterStartupRule.startServerVM(1, locator1Port);
+    server2 = clusterStartupRule.startServerVM(2, locator1Port);
+    server3 = clusterStartupRule.startServerVM(3, locator1Port);
 
     String command =
         CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
@@ -177,13 +170,13 @@ public class CreateGatewayReceiverCommandDUnitTest {
             + CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS + "=100000" + " --"
             + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000";
     gfsh.executeAndAssertThat(command).statusIsSuccess()
-        .tableHasColumnWithExactValuesInAnyOrder("Member", "server-3", "server-4", "server-5")
+        .tableHasColumnWithExactValuesInAnyOrder("Member", SERVER_1, SERVER_2, SERVER_3)
         .tableHasColumnWithValuesContaining("Status",
-            "GatewayReceiver created on member \"server-3\"",
-            "GatewayReceiver created on member \"server-4\"",
-            "GatewayReceiver created on member \"server-5\"");
+            "GatewayReceiver created on member \"" + SERVER_1 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_2 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_3 + "\"");
 
-    VMProvider.invokeInEveryMember(() -> {
+    invokeInEveryMember(() -> {
       verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000, 512000, null,
           GatewayReceiver.DEFAULT_HOSTNAME_FOR_SENDERS);
     }, server1, server2, server3);
@@ -195,9 +188,9 @@ public class CreateGatewayReceiverCommandDUnitTest {
   @Test
   public void testCreateGatewayReceiverWithHostnameForSenders() throws Exception {
     Integer locator1Port = locatorSite1.getPort();
-    server1 = clusterStartupRule.startServerVM(3, locator1Port);
-    server2 = clusterStartupRule.startServerVM(4, locator1Port);
-    server3 = clusterStartupRule.startServerVM(5, locator1Port);
+    server1 = clusterStartupRule.startServerVM(1, locator1Port);
+    server2 = clusterStartupRule.startServerVM(2, locator1Port);
+    server3 = clusterStartupRule.startServerVM(3, locator1Port);
 
     String hostnameForSenders = getHostName();
     String command =
@@ -208,13 +201,13 @@ public class CreateGatewayReceiverCommandDUnitTest {
             + CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS + "=100000" + " --"
             + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000";
     gfsh.executeAndAssertThat(command).statusIsSuccess()
-        .tableHasColumnWithExactValuesInAnyOrder("Member", "server-3", "server-4", "server-5")
+        .tableHasColumnWithExactValuesInAnyOrder("Member", SERVER_1, SERVER_2, SERVER_3)
         .tableHasColumnWithValuesContaining("Status",
-            "GatewayReceiver created on member \"server-3\"",
-            "GatewayReceiver created on member \"server-4\"",
-            "GatewayReceiver created on member \"server-5\"");
+            "GatewayReceiver created on member \"" + SERVER_1 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_2 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_3 + "\"");
 
-    VMProvider.invokeInEveryMember(() -> {
+    invokeInEveryMember(() -> {
       // verify hostname-for-senders is used when configured
       verifyGatewayReceiverProfile(hostnameForSenders);
       verifyGatewayReceiverServerLocations(locator1Port, hostnameForSenders);
@@ -236,19 +229,19 @@ public class CreateGatewayReceiverCommandDUnitTest {
     props.setProperty(GROUPS, receiverGroup);
     props.setProperty(BIND_ADDRESS, expectedBindAddress);
 
-    server1 = clusterStartupRule.startServerVM(3, props, locator1Port);
-    server2 = clusterStartupRule.startServerVM(4, props, locator1Port);
-    server3 = clusterStartupRule.startServerVM(5, props, locator1Port);
+    server1 = clusterStartupRule.startServerVM(1, props, locator1Port);
+    server2 = clusterStartupRule.startServerVM(2, props, locator1Port);
+    server3 = clusterStartupRule.startServerVM(3, props, locator1Port);
 
     String command = CliStrings.CREATE_GATEWAYRECEIVER + " --" + GROUP + "=" + receiverGroup;
     gfsh.executeAndAssertThat(command).statusIsSuccess()
-        .tableHasColumnWithExactValuesInAnyOrder("Member", "server-3", "server-4", "server-5")
+        .tableHasColumnWithExactValuesInAnyOrder("Member", SERVER_1, SERVER_2, SERVER_3)
         .tableHasColumnWithValuesContaining("Status",
-            "GatewayReceiver created on member \"server-3\"",
-            "GatewayReceiver created on member \"server-4\"",
-            "GatewayReceiver created on member \"server-5\"");
+            "GatewayReceiver created on member \"" + SERVER_1 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_2 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_3 + "\"");
 
-    VMProvider.invokeInEveryMember(() -> {
+    invokeInEveryMember(() -> {
       // verify bind-address used when provided as a gemfire property
       verifyGatewayReceiverProfile(expectedBindAddress);
       verifyGatewayReceiverServerLocations(locator1Port, expectedBindAddress);
@@ -273,19 +266,19 @@ public class CreateGatewayReceiverCommandDUnitTest {
     props.setProperty(GROUPS, receiverGroup);
     props.setProperty(SERVER_BIND_ADDRESS, expectedBindAddress);
 
-    server1 = clusterStartupRule.startServerVM(3, props, locator1Port);
-    server2 = clusterStartupRule.startServerVM(4, props, locator1Port);
-    server3 = clusterStartupRule.startServerVM(5, props, locator1Port);
+    server1 = clusterStartupRule.startServerVM(1, props, locator1Port);
+    server2 = clusterStartupRule.startServerVM(2, props, locator1Port);
+    server3 = clusterStartupRule.startServerVM(3, props, locator1Port);
 
     String command = CliStrings.CREATE_GATEWAYRECEIVER + " --" + GROUP + "=" + receiverGroup;
     gfsh.executeAndAssertThat(command).statusIsSuccess()
-        .tableHasColumnWithExactValuesInAnyOrder("Member", "server-3", "server-4", "server-5")
+        .tableHasColumnWithExactValuesInAnyOrder("Member", SERVER_1, SERVER_2, SERVER_3)
         .tableHasColumnWithValuesContaining("Status",
-            "GatewayReceiver created on member \"server-3\"",
-            "GatewayReceiver created on member \"server-4\"",
-            "GatewayReceiver created on member \"server-5\"");
+            "GatewayReceiver created on member \"" + SERVER_1 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_2 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_3 + "\"");
 
-    VMProvider.invokeInEveryMember(() -> {
+    invokeInEveryMember(() -> {
       // verify server-bind-address used if provided as a gemfire property
       verifyGatewayReceiverProfile(expectedBindAddress);
       verifyGatewayReceiverServerLocations(locator1Port, expectedBindAddress);
@@ -313,19 +306,19 @@ public class CreateGatewayReceiverCommandDUnitTest {
     props.setProperty(BIND_ADDRESS, extraBindAddress);
     props.setProperty(SERVER_BIND_ADDRESS, expectedBindAddress);
 
-    server1 = clusterStartupRule.startServerVM(3, props, locator1Port);
-    server2 = clusterStartupRule.startServerVM(4, props, locator1Port);
-    server3 = clusterStartupRule.startServerVM(5, props, locator1Port);
+    server1 = clusterStartupRule.startServerVM(1, props, locator1Port);
+    server2 = clusterStartupRule.startServerVM(2, props, locator1Port);
+    server3 = clusterStartupRule.startServerVM(3, props, locator1Port);
 
     String command = CliStrings.CREATE_GATEWAYRECEIVER + " --" + GROUP + "=" + receiverGroup;
     gfsh.executeAndAssertThat(command).statusIsSuccess()
-        .tableHasColumnWithExactValuesInAnyOrder("Member", "server-3", "server-4", "server-5")
+        .tableHasColumnWithExactValuesInAnyOrder("Member", SERVER_1, SERVER_2, SERVER_3)
         .tableHasColumnWithValuesContaining("Status",
-            "GatewayReceiver created on member \"server-3\"",
-            "GatewayReceiver created on member \"server-4\"",
-            "GatewayReceiver created on member \"server-5\"");
+            "GatewayReceiver created on member \"" + SERVER_1 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_2 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_3 + "\"");
 
-    VMProvider.invokeInEveryMember(() -> {
+    invokeInEveryMember(() -> {
       // verify server-bind-address used if provided as a gemfire property
       verifyGatewayReceiverProfile(expectedBindAddress);
       verifyGatewayReceiverServerLocations(locator1Port, expectedBindAddress);
@@ -352,9 +345,9 @@ public class CreateGatewayReceiverCommandDUnitTest {
     props.setProperty(GROUPS, receiverGroup);
     props.setProperty(SERVER_BIND_ADDRESS, serverBindAddress);
 
-    server1 = clusterStartupRule.startServerVM(3, props, locator1Port);
-    server2 = clusterStartupRule.startServerVM(4, props, locator1Port);
-    server3 = clusterStartupRule.startServerVM(5, props, locator1Port);
+    server1 = clusterStartupRule.startServerVM(1, props, locator1Port);
+    server2 = clusterStartupRule.startServerVM(2, props, locator1Port);
+    server3 = clusterStartupRule.startServerVM(3, props, locator1Port);
 
     String command =
         CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
@@ -365,13 +358,13 @@ public class CreateGatewayReceiverCommandDUnitTest {
             + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000" + " --" + GROUP + "="
             + receiverGroup;
     gfsh.executeAndAssertThat(command).statusIsSuccess()
-        .tableHasColumnWithExactValuesInAnyOrder("Member", "server-3", "server-4", "server-5")
+        .tableHasColumnWithExactValuesInAnyOrder("Member", SERVER_1, SERVER_2, SERVER_3)
         .tableHasColumnWithValuesContaining("Status",
-            "GatewayReceiver created on member \"server-3\"",
-            "GatewayReceiver created on member \"server-4\"",
-            "GatewayReceiver created on member \"server-5\"");
+            "GatewayReceiver created on member \"" + SERVER_1 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_2 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_3 + "\"");
 
-    VMProvider.invokeInEveryMember(() -> {
+    invokeInEveryMember(() -> {
       // verify server-bind-address takes precedence over hostname-for-senders
       verifyGatewayReceiverProfile(hostnameForSenders);
       verifyGatewayReceiverServerLocations(locator1Port, hostnameForSenders);
@@ -395,9 +388,9 @@ public class CreateGatewayReceiverCommandDUnitTest {
     props.setProperty(GROUPS, receiverGroup);
     props.setProperty(BIND_ADDRESS, expectedBindAddress);
 
-    server1 = clusterStartupRule.startServerVM(3, props, locator1Port);
-    server2 = clusterStartupRule.startServerVM(4, props, locator1Port);
-    server3 = clusterStartupRule.startServerVM(5, props, locator1Port);
+    server1 = clusterStartupRule.startServerVM(1, props, locator1Port);
+    server2 = clusterStartupRule.startServerVM(2, props, locator1Port);
+    server3 = clusterStartupRule.startServerVM(3, props, locator1Port);
 
     String command =
         CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
@@ -408,13 +401,13 @@ public class CreateGatewayReceiverCommandDUnitTest {
             + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000" + " --" + GROUP + "="
             + receiverGroup;
     gfsh.executeAndAssertThat(command).statusIsSuccess()
-        .tableHasColumnWithExactValuesInAnyOrder("Member", "server-3", "server-4", "server-5")
+        .tableHasColumnWithExactValuesInAnyOrder("Member", SERVER_1, SERVER_2, SERVER_3)
         .tableHasColumnWithValuesContaining("Status",
-            "GatewayReceiver created on member \"server-3\"",
-            "GatewayReceiver created on member \"server-4\"",
-            "GatewayReceiver created on member \"server-5\"");
+            "GatewayReceiver created on member \"" + SERVER_1 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_2 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_3 + "\"");
 
-    VMProvider.invokeInEveryMember(() -> {
+    invokeInEveryMember(() -> {
       verifyGatewayReceiverProfile(hostnameForSenders);
       verifyGatewayReceiverServerLocations(locator1Port, hostnameForSenders);
       verifyReceiverCreationWithAttributes(true, 10000, 11000, "", 100000, 512000, null,
@@ -428,9 +421,9 @@ public class CreateGatewayReceiverCommandDUnitTest {
   @Test
   public void testCreateGatewayReceiverWithGatewayTransportFilter() throws Exception {
     Integer locator1Port = locatorSite1.getPort();
-    server1 = clusterStartupRule.startServerVM(3, locator1Port);
-    server2 = clusterStartupRule.startServerVM(4, locator1Port);
-    server3 = clusterStartupRule.startServerVM(5, locator1Port);
+    server1 = clusterStartupRule.startServerVM(1, locator1Port);
+    server2 = clusterStartupRule.startServerVM(2, locator1Port);
+    server3 = clusterStartupRule.startServerVM(3, locator1Port);
 
     String command =
         CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
@@ -442,15 +435,15 @@ public class CreateGatewayReceiverCommandDUnitTest {
             + CliStrings.CREATE_GATEWAYRECEIVER__GATEWAYTRANSPORTFILTER
             + "=org.apache.geode.cache30.MyGatewayTransportFilter1";
     gfsh.executeAndAssertThat(command).statusIsSuccess()
-        .tableHasColumnWithExactValuesInAnyOrder("Member", "server-3", "server-4", "server-5")
+        .tableHasColumnWithExactValuesInAnyOrder("Member", SERVER_1, SERVER_2, SERVER_3)
         .tableHasColumnWithValuesContaining("Status",
-            "GatewayReceiver created on member \"server-3\"",
-            "GatewayReceiver created on member \"server-4\"",
-            "GatewayReceiver created on member \"server-5\"");
+            "GatewayReceiver created on member \"" + SERVER_1 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_2 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_3 + "\"");
 
     List<String> transportFilters = new ArrayList<>();
     transportFilters.add("org.apache.geode.cache30.MyGatewayTransportFilter1");
-    VMProvider.invokeInEveryMember(() -> {
+    invokeInEveryMember(() -> {
       verifyReceiverCreationWithAttributes(true, 10000, 11000, "localhost", 100000, 512000,
           transportFilters, GatewayReceiver.DEFAULT_HOSTNAME_FOR_SENDERS);
     }, server1, server2, server3);
@@ -462,9 +455,9 @@ public class CreateGatewayReceiverCommandDUnitTest {
   @Test
   public void testCreateGatewayReceiverWithMultipleGatewayTransportFilters() throws Exception {
     Integer locator1Port = locatorSite1.getPort();
-    server1 = clusterStartupRule.startServerVM(3, locator1Port);
-    server2 = clusterStartupRule.startServerVM(4, locator1Port);
-    server3 = clusterStartupRule.startServerVM(5, locator1Port);
+    server1 = clusterStartupRule.startServerVM(1, locator1Port);
+    server2 = clusterStartupRule.startServerVM(2, locator1Port);
+    server3 = clusterStartupRule.startServerVM(3, locator1Port);
 
     String command = CliStrings.CREATE_GATEWAYRECEIVER + " --"
         + CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS + "=localhost" + " --"
@@ -475,17 +468,17 @@ public class CreateGatewayReceiverCommandDUnitTest {
         + CliStrings.CREATE_GATEWAYRECEIVER__GATEWAYTRANSPORTFILTER
         + "=org.apache.geode.cache30.MyGatewayTransportFilter1,org.apache.geode.cache30.MyGatewayTransportFilter2";
     gfsh.executeAndAssertThat(command).statusIsSuccess()
-        .tableHasColumnWithExactValuesInAnyOrder("Member", "server-3", "server-4", "server-5")
+        .tableHasColumnWithExactValuesInAnyOrder("Member", SERVER_1, SERVER_2, SERVER_3)
         .tableHasColumnWithValuesContaining("Status",
-            "GatewayReceiver created on member \"server-3\"",
-            "GatewayReceiver created on member \"server-4\"",
-            "GatewayReceiver created on member \"server-5\"");
+            "GatewayReceiver created on member \"" + SERVER_1 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_2 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_3 + "\"");
 
     List<String> transportFilters = new ArrayList<>();
     transportFilters.add("org.apache.geode.cache30.MyGatewayTransportFilter1");
     transportFilters.add("org.apache.geode.cache30.MyGatewayTransportFilter2");
 
-    VMProvider.invokeInEveryMember(() -> {
+    invokeInEveryMember(() -> {
       verifyReceiverCreationWithAttributes(!GatewayReceiver.DEFAULT_MANUAL_START, 10000, 11000,
           "localhost", 100000, 512000, transportFilters,
           GatewayReceiver.DEFAULT_HOSTNAME_FOR_SENDERS);
@@ -498,10 +491,11 @@ public class CreateGatewayReceiverCommandDUnitTest {
   @Test
   public void testCreateGatewayReceiverOnSingleMember() throws Exception {
     Integer locator1Port = locatorSite1.getPort();
-    server1 = clusterStartupRule.startServerVM(3, locator1Port);
-    server2 = clusterStartupRule.startServerVM(4, locator1Port);
-    server3 = clusterStartupRule.startServerVM(5, locator1Port);
-    final DistributedMember server1Member = server1.invoke(getMemberIdCallable());
+    server1 = clusterStartupRule.startServerVM(1, locator1Port);
+    server2 = clusterStartupRule.startServerVM(2, locator1Port);
+    server3 = clusterStartupRule.startServerVM(3, locator1Port);
+
+    DistributedMember server1Member = getMember(server1.getVM());
 
     String command =
         CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
@@ -512,16 +506,16 @@ public class CreateGatewayReceiverCommandDUnitTest {
             + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000" + " --"
             + CliStrings.MEMBER + "=" + server1Member.getId();
     gfsh.executeAndAssertThat(command).statusIsSuccess()
-        .tableHasColumnWithExactValuesInAnyOrder("Member", "server-3")
+        .tableHasColumnWithExactValuesInAnyOrder("Member", SERVER_1)
         .tableHasColumnWithValuesContaining("Status",
-            "GatewayReceiver created on member \"server-3\"");
+            "GatewayReceiver created on member \"" + SERVER_1 + "\"");
 
-    VMProvider.invokeInEveryMember(() -> {
+    invokeInEveryMember(() -> {
       verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000, 512000, null,
           GatewayReceiver.DEFAULT_HOSTNAME_FOR_SENDERS);
     }, server1);
 
-    VMProvider.invokeInEveryMember(() -> {
+    invokeInEveryMember(() -> {
       Cache cache = ClusterStartupRule.getCache();
       assertThat(cache.getGatewayReceivers()).isEmpty();
     }, server2, server3);
@@ -533,11 +527,12 @@ public class CreateGatewayReceiverCommandDUnitTest {
   @Test
   public void testCreateGatewayReceiverOnMultipleMembers() throws Exception {
     Integer locator1Port = locatorSite1.getPort();
-    server1 = clusterStartupRule.startServerVM(3, locator1Port);
-    server2 = clusterStartupRule.startServerVM(4, locator1Port);
-    server3 = clusterStartupRule.startServerVM(5, locator1Port);
-    final DistributedMember server1Member = server1.invoke(getMemberIdCallable());
-    final DistributedMember server2Member = server2.invoke(getMemberIdCallable());
+    server1 = clusterStartupRule.startServerVM(1, locator1Port);
+    server2 = clusterStartupRule.startServerVM(2, locator1Port);
+    server3 = clusterStartupRule.startServerVM(3, locator1Port);
+
+    DistributedMember server1Member = getMember(server1.getVM());
+    DistributedMember server2Member = getMember(server2.getVM());
 
     String command =
         CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
@@ -548,17 +543,17 @@ public class CreateGatewayReceiverCommandDUnitTest {
             + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000" + " --"
             + CliStrings.MEMBER + "=" + server1Member.getId() + "," + server2Member.getId();
     gfsh.executeAndAssertThat(command).statusIsSuccess()
-        .tableHasColumnWithExactValuesInAnyOrder("Member", "server-3", "server-4")
+        .tableHasColumnWithExactValuesInAnyOrder("Member", SERVER_1, SERVER_2)
         .tableHasColumnWithValuesContaining("Status",
-            "GatewayReceiver created on member \"server-3\"",
-            "GatewayReceiver created on member \"server-4\"");
+            "GatewayReceiver created on member \"" + SERVER_1 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_2 + "\"");
 
-    VMProvider.invokeInEveryMember(() -> {
+    invokeInEveryMember(() -> {
       verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000, 512000, null,
           GatewayReceiver.DEFAULT_HOSTNAME_FOR_SENDERS);
     }, server1, server2);
 
-    VMProvider.invokeInEveryMember(() -> {
+    invokeInEveryMember(() -> {
       Cache cache = ClusterStartupRule.getCache();
       assertThat(cache.getGatewayReceivers()).isEmpty();
     }, server3);
@@ -571,9 +566,9 @@ public class CreateGatewayReceiverCommandDUnitTest {
   public void testCreateGatewayReceiverOnGroup() throws Exception {
     String groups = "receiverGroup1";
     Integer locator1Port = locatorSite1.getPort();
-    server1 = startServerWithGroups(3, groups, locator1Port);
-    server2 = startServerWithGroups(4, groups, locator1Port);
-    server3 = startServerWithGroups(5, groups, locator1Port);
+    server1 = startServerWithGroups(1, groups, locator1Port);
+    server2 = startServerWithGroups(2, groups, locator1Port);
+    server3 = startServerWithGroups(3, groups, locator1Port);
 
     String command =
         CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
@@ -584,13 +579,13 @@ public class CreateGatewayReceiverCommandDUnitTest {
             + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000" + " --" + GROUP
             + "=receiverGroup1";
     gfsh.executeAndAssertThat(command).statusIsSuccess()
-        .tableHasColumnWithExactValuesInAnyOrder("Member", "server-3", "server-4", "server-5")
+        .tableHasColumnWithExactValuesInAnyOrder("Member", SERVER_1, SERVER_2, SERVER_3)
         .tableHasColumnWithValuesContaining("Status",
-            "GatewayReceiver created on member \"server-3\"",
-            "GatewayReceiver created on member \"server-4\"",
-            "GatewayReceiver created on member \"server-5\"");
+            "GatewayReceiver created on member \"" + SERVER_1 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_2 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_3 + "\"");
 
-    VMProvider.invokeInEveryMember(() -> {
+    invokeInEveryMember(() -> {
       verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000, 512000, null,
           GatewayReceiver.DEFAULT_HOSTNAME_FOR_SENDERS);
     }, server1, server2, server3);
@@ -605,9 +600,9 @@ public class CreateGatewayReceiverCommandDUnitTest {
     String group1 = "receiverGroup1";
     String group2 = "receiverGroup2";
     Integer locator1Port = locatorSite1.getPort();
-    server1 = startServerWithGroups(3, group1, locator1Port);
-    server2 = startServerWithGroups(4, group1, locator1Port);
-    server3 = startServerWithGroups(5, group2, locator1Port);
+    server1 = startServerWithGroups(1, group1, locator1Port);
+    server2 = startServerWithGroups(2, group1, locator1Port);
+    server3 = startServerWithGroups(3, group2, locator1Port);
 
     String command =
         CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
@@ -618,17 +613,17 @@ public class CreateGatewayReceiverCommandDUnitTest {
             + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000" + " --" + GROUP
             + "=receiverGroup1";
     gfsh.executeAndAssertThat(command).statusIsSuccess()
-        .tableHasColumnWithExactValuesInAnyOrder("Member", "server-3", "server-4")
+        .tableHasColumnWithExactValuesInAnyOrder("Member", SERVER_1, SERVER_2)
         .tableHasColumnWithValuesContaining("Status",
-            "GatewayReceiver created on member \"server-3\"",
-            "GatewayReceiver created on member \"server-4\"");
+            "GatewayReceiver created on member \"" + SERVER_1 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_2 + "\"");
 
-    VMProvider.invokeInEveryMember(() -> {
+    invokeInEveryMember(() -> {
       verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000, 512000, null,
           GatewayReceiver.DEFAULT_HOSTNAME_FOR_SENDERS);
     }, server1, server2);
 
-    VMProvider.invokeInEveryMember(() -> {
+    invokeInEveryMember(() -> {
       Cache cache = ClusterStartupRule.getCache();
       assertThat(cache.getGatewayReceivers()).isEmpty();
     }, server3);
@@ -640,9 +635,9 @@ public class CreateGatewayReceiverCommandDUnitTest {
   @Test
   public void testCreateGatewayReceiverOnMultipleGroups() throws Exception {
     Integer locator1Port = locatorSite1.getPort();
-    server1 = startServerWithGroups(3, "receiverGroup1", locator1Port);
-    server2 = startServerWithGroups(4, "receiverGroup1", locator1Port);
-    server3 = startServerWithGroups(5, "receiverGroup2", locator1Port);
+    server1 = startServerWithGroups(1, "receiverGroup1", locator1Port);
+    server2 = startServerWithGroups(2, "receiverGroup1", locator1Port);
+    server3 = startServerWithGroups(3, "receiverGroup2", locator1Port);
 
     String command =
         CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
@@ -653,15 +648,29 @@ public class CreateGatewayReceiverCommandDUnitTest {
             + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000" + " --" + GROUP
             + "=receiverGroup1,receiverGroup2";
     gfsh.executeAndAssertThat(command).statusIsSuccess()
-        .tableHasColumnWithExactValuesInAnyOrder("Member", "server-3", "server-4", "server-5")
+        .tableHasColumnWithExactValuesInAnyOrder("Member", SERVER_1, SERVER_2, SERVER_3)
         .tableHasColumnWithValuesContaining("Status",
-            "GatewayReceiver created on member \"server-3\"",
-            "GatewayReceiver created on member \"server-4\"",
-            "GatewayReceiver created on member \"server-5\"");
+            "GatewayReceiver created on member \"" + SERVER_1 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_2 + "\"",
+            "GatewayReceiver created on member \"" + SERVER_3 + "\"");
 
-    VMProvider.invokeInEveryMember(() -> {
+    invokeInEveryMember(() -> {
       verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000, 512000, null,
           GatewayReceiver.DEFAULT_HOSTNAME_FOR_SENDERS);
     }, server1, server2, server3);
   }
+
+  private String getHostName() throws Exception {
+    return SocketCreator.getLocalHost().getCanonicalHostName();
+  }
+
+  private String getBindAddress() throws Exception {
+    return InetAddress.getLocalHost().getHostAddress();
+  }
+
+  private MemberVM startServerWithGroups(int index, String groups, int locPort) throws Exception {
+    Properties props = new Properties();
+    props.setProperty(GROUPS, groups);
+    return clusterStartupRule.startServerVM(index, props, locPort);
+  }
 }
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/PauseGatewaySenderCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/PauseGatewaySenderCommandDUnitTest.java
index 3e6cec9..eb3edcc 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/PauseGatewaySenderCommandDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/PauseGatewaySenderCommandDUnitTest.java
@@ -18,16 +18,13 @@ import static org.apache.geode.distributed.ConfigurationProperties.DISTRIBUTED_S
 import static org.apache.geode.distributed.ConfigurationProperties.GROUPS;
 import static org.apache.geode.distributed.ConfigurationProperties.REMOTE_LOCATORS;
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.createSender;
-import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.getMemberIdCallable;
+import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.getMember;
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.startSender;
+import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.validateGatewaySenderMXBeanProxy;
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.verifySenderState;
-import static org.apache.geode.test.dunit.Assert.assertEquals;
-import static org.apache.geode.test.dunit.Assert.assertFalse;
-import static org.apache.geode.test.dunit.Assert.assertTrue;
-import static org.apache.geode.test.dunit.Assert.fail;
-import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
-import static org.apache.geode.test.dunit.Wait.pause;
+import static org.assertj.core.api.Assertions.assertThat;
 
+import java.io.Serializable;
 import java.util.List;
 import java.util.Properties;
 
@@ -48,13 +45,14 @@ import org.apache.geode.test.junit.categories.WanTest;
 import org.apache.geode.test.junit.rules.GfshCommandRule;
 
 @Category({DistributedTest.class, WanTest.class})
-public class PauseGatewaySenderCommandDUnitTest {
+@SuppressWarnings("serial")
+public class PauseGatewaySenderCommandDUnitTest implements Serializable {
 
   @Rule
-  public ClusterStartupRule clusterStartupRule = new ClusterStartupRule();
+  public ClusterStartupRule clusterStartupRule = new ClusterStartupRule(8);
 
   @Rule
-  public GfshCommandRule gfsh = new GfshCommandRule();
+  public transient GfshCommandRule gfsh = new GfshCommandRule();
 
   private MemberVM locatorSite1;
   private MemberVM locatorSite2;
@@ -81,7 +79,7 @@ public class PauseGatewaySenderCommandDUnitTest {
   @Test
   public void testPauseGatewaySender_ErrorConditions() throws Exception {
     server1 = clusterStartupRule.startServerVM(3, locatorSite1.getPort());
-    final DistributedMember vm1Member = server1.invoke(getMemberIdCallable());
+    DistributedMember vm1Member = getMember(server1.getVM());
     String command = CliStrings.PAUSE_GATEWAYSENDER + " --" + CliStrings.PAUSE_GATEWAYSENDER__ID
         + "=ln --" + CliStrings.MEMBER + "=" + vm1Member.getId() + " --" + CliStrings.GROUP
         + "=SenderGroup1";
@@ -105,20 +103,22 @@ public class PauseGatewaySenderCommandDUnitTest {
     server1.invoke(() -> startSender("ln"));
     server1.invoke(() -> verifySenderState("ln", true, false));
 
-    final DistributedMember vm1Member = server1.invoke(getMemberIdCallable());
-    pause(10000);
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", true, false));
+
+    DistributedMember vm1Member = getMember(server1.getVM());
     String command = CliStrings.PAUSE_GATEWAYSENDER + " --" + CliStrings.PAUSE_GATEWAYSENDER__ID
         + "=ln --" + CliStrings.MEMBER + "=" + vm1Member.getId();
     CommandResult cmdResult = gfsh.executeCommand(command);
+    assertThat(cmdResult).isNotNull();
+
+    String strCmdResult = cmdResult.toString();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+    assertThat(strCmdResult).contains("is paused on member");
+
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", true, true));
 
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testPauseGatewaySender stringResult : " + strCmdResult + ">>>>");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-      assertTrue(strCmdResult.contains("is paused on member"));
-    } else {
-      fail("testPauseGatewaySender failed as did not get CommandResult");
-    }
     server1.invoke(() -> verifySenderState("ln", true, true));
   }
 
@@ -143,22 +143,31 @@ public class PauseGatewaySenderCommandDUnitTest {
     server2.invoke(() -> verifySenderState("ln", true, false));
     server3.invoke(() -> verifySenderState("ln", true, false));
 
-    pause(10000);
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()), "ln", true, false));
+
     String command =
         CliStrings.PAUSE_GATEWAYSENDER + " --" + CliStrings.PAUSE_GATEWAYSENDER__ID + "=ln";
     CommandResult cmdResult = gfsh.executeCommand(command);
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+    List<String> status = resultData.retrieveAllValues("Result");
+    assertThat(status).hasSize(3);
+    assertThat(status).contains("OK");
+
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", true, true));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()), "ln", true, true));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()), "ln", true, true));
 
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testPauseGatewaySender stringResult : " + strCmdResult + ">>>>");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-      TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
-      List<String> status = resultData.retrieveAllValues("Result");
-      assertEquals(3, status.size());
-      assertTrue(status.contains("OK"));
-    } else {
-      fail("testPauseGatewaySender failed as did not get CommandResult");
-    }
     server1.invoke(() -> verifySenderState("ln", true, true));
     server2.invoke(() -> verifySenderState("ln", true, true));
     server3.invoke(() -> verifySenderState("ln", true, true));
@@ -189,23 +198,32 @@ public class PauseGatewaySenderCommandDUnitTest {
     server2.invoke(() -> verifySenderState("ln", true, false));
     server3.invoke(() -> verifySenderState("ln", true, false));
 
-    pause(10000);
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()), "ln", true, false));
+
     String command = CliStrings.PAUSE_GATEWAYSENDER + " --" + CliStrings.PAUSE_GATEWAYSENDER__ID
         + "=ln --" + CliStrings.GROUP + "=SenderGroup1";
     CommandResult cmdResult = gfsh.executeCommand(command);
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+    List<String> status = resultData.retrieveAllValues("Result");
+    assertThat(status).hasSize(3);
+    assertThat(status).doesNotContain("Error");
+    assertThat(status).contains("OK");
+
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", true, true));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()), "ln", true, true));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()), "ln", true, true));
 
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testPauseGatewaySender_Group stringResult : " + strCmdResult + ">>>>");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-      TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
-      List<String> status = resultData.retrieveAllValues("Result");
-      assertEquals(3, status.size());
-      assertFalse(status.contains("Error"));
-      assertTrue(status.contains("OK"));
-    } else {
-      fail("testPauseGatewaySender failed as did not get CommandResult");
-    }
     server1.invoke(() -> verifySenderState("ln", true, true));
     server2.invoke(() -> verifySenderState("ln", true, true));
     server3.invoke(() -> verifySenderState("ln", true, true));
@@ -217,7 +235,6 @@ public class PauseGatewaySenderCommandDUnitTest {
    */
   @Test
   public void testPauseGatewaySender_MultipleGroup() throws Exception {
-
     Integer locator1Port = locatorSite1.getPort();
 
     // setup servers in Site #1
@@ -245,23 +262,40 @@ public class PauseGatewaySenderCommandDUnitTest {
     server4.invoke(() -> verifySenderState("ln", true, false));
     server5.invoke(() -> verifySenderState("ln", true, false));
 
-    pause(10000);
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server4.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server5.getVM()), "ln", true, false));
+
     String command = CliStrings.PAUSE_GATEWAYSENDER + " --" + CliStrings.PAUSE_GATEWAYSENDER__ID
         + "=ln --" + CliStrings.GROUP + "=SenderGroup1,SenderGroup2";
     CommandResult cmdResult = gfsh.executeCommand(command);
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+    List<String> status = resultData.retrieveAllValues("Result");
+    assertThat(status).hasSize(4);
+    assertThat(status).doesNotContain("Error");
+    assertThat(status).contains("OK");
+
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", true, true));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()), "ln", true, true));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()), "ln", true, true));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server4.getVM()), "ln", true, true));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server5.getVM()), "ln", true, false));
 
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testPauseGatewaySender_Group stringResult : " + strCmdResult + ">>>>");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-      TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
-      List<String> status = resultData.retrieveAllValues("Result");
-      assertEquals(4, status.size());
-      assertFalse(status.contains("Error"));
-      assertTrue(status.contains("OK"));
-    } else {
-      fail("testPauseGatewaySender failed as did not get CommandResult");
-    }
     server1.invoke(() -> verifySenderState("ln", true, true));
     server2.invoke(() -> verifySenderState("ln", true, true));
     server3.invoke(() -> verifySenderState("ln", true, true));
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/ResumeGatewaySenderCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/ResumeGatewaySenderCommandDUnitTest.java
index 379c96b..8a4f5c0 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/ResumeGatewaySenderCommandDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/ResumeGatewaySenderCommandDUnitTest.java
@@ -12,24 +12,20 @@
  * or implied. See the License for the specific language governing permissions and limitations under
  * the License.
  */
-
 package org.apache.geode.internal.cache.wan.wancommand;
 
 import static org.apache.geode.distributed.ConfigurationProperties.DISTRIBUTED_SYSTEM_ID;
 import static org.apache.geode.distributed.ConfigurationProperties.GROUPS;
 import static org.apache.geode.distributed.ConfigurationProperties.REMOTE_LOCATORS;
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.createSender;
-import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.getMemberIdCallable;
+import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.getMember;
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.pauseSender;
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.startSender;
+import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.validateGatewaySenderMXBeanProxy;
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.verifySenderState;
-import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
-import static org.apache.geode.test.dunit.Wait.pause;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.assertj.core.api.Assertions.assertThat;
 
+import java.io.Serializable;
 import java.util.List;
 import java.util.Properties;
 
@@ -50,13 +46,14 @@ import org.apache.geode.test.junit.categories.WanTest;
 import org.apache.geode.test.junit.rules.GfshCommandRule;
 
 @Category({DistributedTest.class, WanTest.class})
-public class ResumeGatewaySenderCommandDUnitTest {
+@SuppressWarnings("serial")
+public class ResumeGatewaySenderCommandDUnitTest implements Serializable {
 
   @Rule
-  public ClusterStartupRule clusterStartupRule = new ClusterStartupRule();
+  public ClusterStartupRule clusterStartupRule = new ClusterStartupRule(8);
 
   @Rule
-  public GfshCommandRule gfsh = new GfshCommandRule();
+  public transient GfshCommandRule gfsh = new GfshCommandRule();
 
   private MemberVM locatorSite1;
   private MemberVM locatorSite2;
@@ -82,7 +79,6 @@ public class ResumeGatewaySenderCommandDUnitTest {
 
   @Test
   public void testResumeGatewaySender_ErrorConditions() throws Exception {
-
     Integer locator1Port = locatorSite1.getPort();
 
     // setup servers in Site #1
@@ -90,7 +86,7 @@ public class ResumeGatewaySenderCommandDUnitTest {
 
     server1.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
 
-    final DistributedMember vm1Member = server1.invoke(getMemberIdCallable());
+    DistributedMember vm1Member = getMember(server1.getVM());
     String command = CliStrings.RESUME_GATEWAYSENDER + " --" + CliStrings.RESUME_GATEWAYSENDER__ID
         + "=ln --" + CliStrings.MEMBER + "=" + vm1Member.getId() + " --" + CliStrings.GROUP
         + "=SenderGroup1";
@@ -100,7 +96,6 @@ public class ResumeGatewaySenderCommandDUnitTest {
 
   @Test
   public void testResumeGatewaySender() throws Exception {
-
     Integer locator1Port = locatorSite1.getPort();
 
     // setup servers in Site #1
@@ -128,22 +123,31 @@ public class ResumeGatewaySenderCommandDUnitTest {
     server2.invoke(() -> verifySenderState("ln", true, true));
     server3.invoke(() -> verifySenderState("ln", true, true));
 
-    pause(10000);
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", true, true));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()), "ln", true, true));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()), "ln", true, true));
+
     String command =
         CliStrings.RESUME_GATEWAYSENDER + " --" + CliStrings.RESUME_GATEWAYSENDER__ID + "=ln";
     CommandResult cmdResult = gfsh.executeCommand(command);
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+    List<String> status = resultData.retrieveAllValues("Result");
+    assertThat(status).hasSize(3);
+    assertThat(status).contains("OK");
+
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()), "ln", true, false));
 
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testResumeGatewaySender stringResult : " + strCmdResult + ">>>>");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-      TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
-      List<String> status = resultData.retrieveAllValues("Result");
-      assertEquals(3, status.size());
-      assertTrue(status.contains("OK"));
-    } else {
-      fail("testResumeGatewaySender failed as did not get CommandResult");
-    }
     server1.invoke(() -> verifySenderState("ln", true, false));
     server2.invoke(() -> verifySenderState("ln", true, false));
     server3.invoke(() -> verifySenderState("ln", true, false));
@@ -167,19 +171,22 @@ public class ResumeGatewaySenderCommandDUnitTest {
     server1.invoke(() -> pauseSender("ln"));
     server1.invoke(() -> verifySenderState("ln", true, true));
 
-    final DistributedMember vm1Member = (DistributedMember) server1.invoke(getMemberIdCallable());
-    pause(10000);
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", true, true));
+
+    DistributedMember vm1Member = getMember(server1.getVM());
     String command = CliStrings.RESUME_GATEWAYSENDER + " --" + CliStrings.RESUME_GATEWAYSENDER__ID
         + "=ln --" + CliStrings.MEMBER + "=" + vm1Member.getId();
     CommandResult cmdResult = gfsh.executeCommand(command);
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testResumeGatewaySender stringResult : " + strCmdResult + ">>>>");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-      assertTrue(strCmdResult.contains("is resumed on member"));
-    } else {
-      fail("testResumeGatewaySender failed as did not get CommandResult");
-    }
+    assertThat(cmdResult).isNotNull();
+
+    String strCmdResult = cmdResult.toString();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+    assertThat(strCmdResult).contains("is resumed on member");
+
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", true, false));
+
     server1.invoke(() -> verifySenderState("ln", true, false));
   }
 
@@ -188,16 +195,9 @@ public class ResumeGatewaySenderCommandDUnitTest {
    */
   @Test
   public void testResumeGatewaySender_Group() throws Exception {
-
     Integer locator1Port = locatorSite1.getPort();
 
     // setup servers in Site #1
-    /*
-     * String group = "SenderGroup1"; Properties props = new Properties(); props.setProperty(GROUPS,
-     * group); server1 = locatorServerStartupRule.startServerVM(3, props, locator1Port); server2 =
-     * locatorServerStartupRule.startServerVM(4, props, locator1Port); server3 =
-     * locatorServerStartupRule.startServerVM(5, props, locator1Port);
-     */
     server1 = startServerWithGroups(3, "SenderGroup1", locator1Port);
     server2 = startServerWithGroups(4, "SenderGroup1", locator1Port);
     server3 = startServerWithGroups(5, "SenderGroup1", locator1Port);
@@ -222,24 +222,32 @@ public class ResumeGatewaySenderCommandDUnitTest {
     server2.invoke(() -> verifySenderState("ln", true, true));
     server3.invoke(() -> verifySenderState("ln", true, true));
 
-    pause(10000);
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", true, true));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()), "ln", true, true));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()), "ln", true, true));
+
     String command = CliStrings.RESUME_GATEWAYSENDER + " --" + CliStrings.RESUME_GATEWAYSENDER__ID
         + "=ln --" + CliStrings.GROUP + "=SenderGroup1";
     CommandResult cmdResult = gfsh.executeCommand(command);
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+    List<String> status = resultData.retrieveAllValues("Result");
+    assertThat(status).hasSize(3);
+    assertThat(status).doesNotContain("Error");
+    assertThat(status).contains("OK");
+
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()), "ln", true, false));
 
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testResumeGatewaySender stringResult : " + strCmdResult + ">>>>");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-
-      TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
-      List<String> status = resultData.retrieveAllValues("Result");
-      assertEquals(3, status.size());
-      assertFalse(status.contains("Error"));
-      assertTrue(status.contains("OK"));
-    } else {
-      fail("testResumeGatewaySender failed as did not get CommandResult");
-    }
     server1.invoke(() -> verifySenderState("ln", true, false));
     server2.invoke(() -> verifySenderState("ln", true, false));
     server3.invoke(() -> verifySenderState("ln", true, false));
@@ -251,7 +259,6 @@ public class ResumeGatewaySenderCommandDUnitTest {
    */
   @Test
   public void testResumeGatewaySender_MultipleGroup() throws Exception {
-
     Integer locator1Port = locatorSite1.getPort();
 
     server1 = startServerWithGroups(3, "SenderGroup1", locator1Port);
@@ -290,23 +297,40 @@ public class ResumeGatewaySenderCommandDUnitTest {
     server4.invoke(() -> verifySenderState("ln", true, true));
     server5.invoke(() -> verifySenderState("ln", true, true));
 
-    pause(10000);
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", true, true));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()), "ln", true, true));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()), "ln", true, true));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server4.getVM()), "ln", true, true));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server5.getVM()), "ln", true, true));
+
     String command = CliStrings.RESUME_GATEWAYSENDER + " --" + CliStrings.RESUME_GATEWAYSENDER__ID
         + "=ln --" + CliStrings.GROUP + "=SenderGroup1,SenderGroup2";
     CommandResult cmdResult = gfsh.executeCommand(command);
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+    List<String> status = resultData.retrieveAllValues("Result");
+    assertThat(status).hasSize(4);
+    assertThat(status).doesNotContain("Error");
+    assertThat(status).contains("OK");
+
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server4.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server5.getVM()), "ln", true, true));
 
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testResumeGatewaySender stringResult : " + strCmdResult + ">>>>");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-      TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
-      List<String> status = resultData.retrieveAllValues("Result");
-      assertEquals(4, status.size());
-      assertFalse(status.contains("Error"));
-      assertTrue(status.contains("OK"));
-    } else {
-      fail("testResumeGatewaySender failed as did not get CommandResult");
-    }
     server1.invoke(() -> verifySenderState("ln", true, false));
     server2.invoke(() -> verifySenderState("ln", true, false));
     server3.invoke(() -> verifySenderState("ln", true, false));
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StartGatewayReceiverCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StartGatewayReceiverCommandDUnitTest.java
index efb2300..e60ac3e 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StartGatewayReceiverCommandDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StartGatewayReceiverCommandDUnitTest.java
@@ -18,15 +18,12 @@ import static org.apache.geode.distributed.ConfigurationProperties.DISTRIBUTED_S
 import static org.apache.geode.distributed.ConfigurationProperties.GROUPS;
 import static org.apache.geode.distributed.ConfigurationProperties.REMOTE_LOCATORS;
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.createReceiver;
-import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.getMemberIdCallable;
+import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.getMember;
+import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.validateGatewayReceiverMXBeanProxy;
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.verifyReceiverState;
-import static org.apache.geode.test.dunit.Assert.assertEquals;
-import static org.apache.geode.test.dunit.Assert.assertFalse;
-import static org.apache.geode.test.dunit.Assert.assertTrue;
-import static org.apache.geode.test.dunit.Assert.fail;
-import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
-import static org.apache.geode.test.dunit.Wait.pause;
+import static org.assertj.core.api.Assertions.assertThat;
 
+import java.io.Serializable;
 import java.util.List;
 import java.util.Properties;
 
@@ -47,13 +44,14 @@ import org.apache.geode.test.junit.categories.WanTest;
 import org.apache.geode.test.junit.rules.GfshCommandRule;
 
 @Category({DistributedTest.class, WanTest.class})
-public class StartGatewayReceiverCommandDUnitTest {
+@SuppressWarnings("serial")
+public class StartGatewayReceiverCommandDUnitTest implements Serializable {
 
   @Rule
-  public ClusterStartupRule clusterStartupRule = new ClusterStartupRule();
+  public ClusterStartupRule clusterStartupRule = new ClusterStartupRule(8);
 
   @Rule
-  public GfshCommandRule gfsh = new GfshCommandRule();
+  public transient GfshCommandRule gfsh = new GfshCommandRule();
 
   private MemberVM locatorSite1;
   private MemberVM locatorSite2;
@@ -83,13 +81,12 @@ public class StartGatewayReceiverCommandDUnitTest {
    */
   @Test
   public void testStartGatewayReceiver_ErrorConditions() throws Exception {
-
     Integer locator1Port = locatorSite1.getPort();
 
     // setup servers in Site #1
     server1 = clusterStartupRule.startServerVM(3, locator1Port);
 
-    final DistributedMember vm1Member = (DistributedMember) server1.invoke(getMemberIdCallable());
+    DistributedMember vm1Member = getMember(server1.getVM());
     String command = CliStrings.START_GATEWAYRECEIVER + " --" + CliStrings.MEMBER + "="
         + vm1Member.getId() + " --" + CliStrings.GROUP + "=RG1";
     gfsh.executeAndAssertThat(command).statusIsError()
@@ -98,7 +95,6 @@ public class StartGatewayReceiverCommandDUnitTest {
 
   @Test
   public void testStartGatewayReceiver() throws Exception {
-
     Integer locator1Port = locatorSite1.getPort();
 
     // setup servers in Site #1
@@ -114,21 +110,27 @@ public class StartGatewayReceiverCommandDUnitTest {
     server2.invoke(() -> verifyReceiverState(false));
     server3.invoke(() -> verifyReceiverState(false));
 
-    pause(10000);
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server1.getVM()), false));
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server2.getVM()), false));
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server3.getVM()), false));
+
     String command = CliStrings.START_GATEWAYRECEIVER;
     CommandResult cmdResult = gfsh.executeCommand(command);
+    assertThat(cmdResult).isNotNull();
+
+    TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+    List<String> status = resultData.retrieveAllValues("Result");
+    assertThat(status).hasSize(3);
+    assertThat(status).doesNotContain("Error");
+    assertThat(status).contains("OK");
+
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server1.getVM()), true));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server2.getVM()), true));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server3.getVM()), true));
 
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testStartGatewayReceiver stringResult : " + strCmdResult + ">>>>");
-      TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
-      List<String> status = resultData.retrieveAllValues("Result");
-      assertEquals(3, status.size());
-      assertFalse(status.contains("Error"));
-      assertTrue(status.contains("OK"));
-    } else {
-      fail("testStartGatewayReceiver failed as did not get CommandResult");
-    }
     server1.invoke(() -> verifyReceiverState(true));
     server2.invoke(() -> verifyReceiverState(true));
     server3.invoke(() -> verifyReceiverState(true));
@@ -139,7 +141,6 @@ public class StartGatewayReceiverCommandDUnitTest {
    */
   @Test
   public void testStartGatewayReceiver_onMember() throws Exception {
-
     Integer locator1Port = locatorSite1.getPort();
 
     // setup servers in Site #1
@@ -155,21 +156,29 @@ public class StartGatewayReceiverCommandDUnitTest {
     server2.invoke(() -> verifyReceiverState(false));
     server3.invoke(() -> verifyReceiverState(false));
 
-    final DistributedMember vm1Member = (DistributedMember) server1.invoke(getMemberIdCallable());
-    pause(10000);
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server1.getVM()), false));
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server2.getVM()), false));
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server3.getVM()), false));
+
+    DistributedMember vm1Member = getMember(server1.getVM());
     String command =
         CliStrings.START_GATEWAYRECEIVER + " --" + CliStrings.MEMBER + "=" + vm1Member.getId();
     CommandResult cmdResult = gfsh.executeCommand(command);
+    assertThat(cmdResult).isNotNull();
+
+    String strCmdResult = cmdResult.toString();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+    assertThat(strCmdResult).contains("is started on member");
+
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server1.getVM()), true));
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server2.getVM()), false));
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server3.getVM()), false));
 
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter()
-          .info("testStartGatewayReceiver_onMember stringResult : " + strCmdResult + ">>>>");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-      assertTrue(strCmdResult.contains("is started on member"));
-    } else {
-      fail("testStartGatewayReceiver failed as did not get CommandResult");
-    }
     server1.invoke(() -> verifyReceiverState(true));
     server2.invoke(() -> verifyReceiverState(false));
     server3.invoke(() -> verifyReceiverState(false));
@@ -180,7 +189,6 @@ public class StartGatewayReceiverCommandDUnitTest {
    */
   @Test
   public void testStartGatewayReceiver_Group() throws Exception {
-
     Integer locator1Port = locatorSite1.getPort();
 
     // setup servers in Site #1
@@ -196,22 +204,28 @@ public class StartGatewayReceiverCommandDUnitTest {
     server2.invoke(() -> verifyReceiverState(false));
     server3.invoke(() -> verifyReceiverState(false));
 
-    pause(10000);
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server1.getVM()), false));
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server2.getVM()), false));
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server3.getVM()), false));
+
     String command = CliStrings.START_GATEWAYRECEIVER + " --" + CliStrings.GROUP + "=RG1";
     CommandResult cmdResult = gfsh.executeCommand(command);
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+    List<String> status = resultData.retrieveAllValues("Result");
+    assertThat(status).hasSize(3);
+    assertThat(status).doesNotContain("Error");
+    assertThat(status).contains("OK");
+
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server1.getVM()), true));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server2.getVM()), true));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server3.getVM()), true));
 
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testStartGatewayReceiver_Group stringResult : " + strCmdResult + ">>>>");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-      TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
-      List<String> status = resultData.retrieveAllValues("Result");
-      assertEquals(3, status.size());
-      assertFalse(status.contains("Error"));
-      assertTrue(status.contains("OK"));
-    } else {
-      fail("testStartGatewayReceiver_Group failed as did not get CommandResult");
-    }
     server1.invoke(() -> verifyReceiverState(true));
     server2.invoke(() -> verifyReceiverState(true));
     server3.invoke(() -> verifyReceiverState(true));
@@ -220,11 +234,9 @@ public class StartGatewayReceiverCommandDUnitTest {
   /**
    * Test to validate the scenario gateway sender is started when one or more sender members belongs
    * to multiple groups
-   *
    */
   @Test
   public void testStartGatewayReceiver_MultipleGroup() throws Exception {
-
     Integer locator1Port = locatorSite1.getPort();
 
     // setup servers in Site #1
@@ -246,22 +258,35 @@ public class StartGatewayReceiverCommandDUnitTest {
     server4.invoke(() -> verifyReceiverState(false));
     server5.invoke(() -> verifyReceiverState(false));
 
-    pause(10000);
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server1.getVM()), false));
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server2.getVM()), false));
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server3.getVM()), false));
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server4.getVM()), false));
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server5.getVM()), false));
+
     String command = CliStrings.START_GATEWAYRECEIVER + " --" + CliStrings.GROUP + "=RG1,RG2";
     CommandResult cmdResult = gfsh.executeCommand(command);
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+    List<String> status = resultData.retrieveAllValues("Result");
+    assertThat(status).hasSize(4);
+    assertThat(status).doesNotContain("Error");
+    assertThat(status).contains("OK");
+
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server1.getVM()), true));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server2.getVM()), true));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server3.getVM()), true));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server4.getVM()), true));
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server5.getVM()), false));
 
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testStartGatewayReceiver_Group stringResult : " + strCmdResult + ">>>>");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-      TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
-      List<String> status = resultData.retrieveAllValues("Result");
-      assertEquals(4, status.size());
-      assertFalse(status.contains("Error"));
-      assertTrue(status.contains("OK"));
-    } else {
-      fail("testStartGatewayReceiver failed as did not get CommandResult");
-    }
     server1.invoke(() -> verifyReceiverState(true));
     server2.invoke(() -> verifyReceiverState(true));
     server3.invoke(() -> verifyReceiverState(true));
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StartGatewaySenderCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StartGatewaySenderCommandDUnitTest.java
index c30bc65..3c5b16f 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StartGatewaySenderCommandDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StartGatewaySenderCommandDUnitTest.java
@@ -18,15 +18,12 @@ import static org.apache.geode.distributed.ConfigurationProperties.DISTRIBUTED_S
 import static org.apache.geode.distributed.ConfigurationProperties.GROUPS;
 import static org.apache.geode.distributed.ConfigurationProperties.REMOTE_LOCATORS;
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.createSender;
-import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.getMemberIdCallable;
+import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.getMember;
+import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.validateGatewaySenderMXBeanProxy;
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.verifySenderState;
-import static org.apache.geode.test.dunit.Assert.assertEquals;
-import static org.apache.geode.test.dunit.Assert.assertFalse;
-import static org.apache.geode.test.dunit.Assert.assertTrue;
-import static org.apache.geode.test.dunit.Assert.fail;
-import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
-import static org.apache.geode.test.dunit.Wait.pause;
+import static org.assertj.core.api.Assertions.assertThat;
 
+import java.io.Serializable;
 import java.util.List;
 import java.util.Properties;
 
@@ -48,13 +45,14 @@ import org.apache.geode.test.junit.categories.WanTest;
 import org.apache.geode.test.junit.rules.GfshCommandRule;
 
 @Category({DistributedTest.class, WanTest.class})
-public class StartGatewaySenderCommandDUnitTest {
+@SuppressWarnings("serial")
+public class StartGatewaySenderCommandDUnitTest implements Serializable {
 
   @Rule
-  public ClusterStartupRule clusterStartupRule = new ClusterStartupRule();
+  public ClusterStartupRule clusterStartupRule = new ClusterStartupRule(8);
 
   @Rule
-  public GfshCommandRule gfsh = new GfshCommandRule();
+  public transient GfshCommandRule gfsh = new GfshCommandRule();
 
   private MemberVM locatorSite1;
   private MemberVM locatorSite2;
@@ -84,7 +82,6 @@ public class StartGatewaySenderCommandDUnitTest {
    */
   @Test
   public void testStartGatewaySender_ErrorConditions() throws Exception {
-
     Integer locator1Port = locatorSite1.getPort();
 
     // setup servers in Site #1
@@ -92,7 +89,7 @@ public class StartGatewaySenderCommandDUnitTest {
 
     server1.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
 
-    final DistributedMember vm1Member = (DistributedMember) server1.invoke(getMemberIdCallable());
+    DistributedMember vm1Member = getMember(server1.getVM());
     String command = CliStrings.START_GATEWAYSENDER + " --" + CliStrings.START_GATEWAYSENDER__ID
         + "=ln --" + CliStrings.MEMBER + "=" + vm1Member.getId() + " --" + CliStrings.GROUP
         + "=SenserGroup1";
@@ -102,7 +99,6 @@ public class StartGatewaySenderCommandDUnitTest {
 
   @Test
   public void testStartGatewaySender() throws Exception {
-
     Integer locator1Port = locatorSite1.getPort();
 
     // setup servers in Site #1
@@ -118,22 +114,31 @@ public class StartGatewaySenderCommandDUnitTest {
     server2.invoke(() -> verifySenderState("ln", false, false));
     server3.invoke(() -> verifySenderState("ln", false, false));
 
-    pause(10000);
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", false, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()), "ln", false, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()), "ln", false, false));
+
     String command =
         CliStrings.START_GATEWAYSENDER + " --" + CliStrings.START_GATEWAYSENDER__ID + "=ln";
     CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+    List<String> status = resultData.retrieveAllValues("Result");
+    assertThat(status).hasSize(3);
+    assertThat(status).contains("OK");
+
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()), "ln", true, false));
 
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testStartGatewaySender stringResult : " + strCmdResult + ">>>>");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-      TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
-      List<String> status = resultData.retrieveAllValues("Result");
-      assertEquals(3, status.size());
-      assertTrue(status.contains("OK"));
-    } else {
-      fail("testStartGatewaySender failed as did not get CommandResult");
-    }
     server1.invoke(() -> verifySenderState("ln", true, false));
     server2.invoke(() -> verifySenderState("ln", true, false));
     server3.invoke(() -> verifySenderState("ln", true, false));
@@ -144,7 +149,6 @@ public class StartGatewaySenderCommandDUnitTest {
    */
   @Test
   public void testStartGatewaySender_onMember() throws Exception {
-
     Integer locator1Port = locatorSite1.getPort();
 
     // setup servers in Site #1
@@ -153,20 +157,22 @@ public class StartGatewaySenderCommandDUnitTest {
     server1.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
     server1.invoke(() -> verifySenderState("ln", false, false));
 
-    final DistributedMember vm1Member = (DistributedMember) server1.invoke(getMemberIdCallable());
-    pause(10000);
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", false, false));
+
+    DistributedMember vm1Member = getMember(server1.getVM());
     String command = CliStrings.START_GATEWAYSENDER + " --" + CliStrings.START_GATEWAYSENDER__ID
         + "=ln --" + CliStrings.MEMBER + "=" + vm1Member.getId();
     CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+    assertThat(cmdResult).isNotNull();
+
+    String strCmdResult = cmdResult.toString();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+    assertThat(strCmdResult).contains("is started on member");
+
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", true, false));
 
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testStartGatewaySender stringResult : " + strCmdResult + ">>>>");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-      assertTrue(strCmdResult.contains("is started on member"));
-    } else {
-      fail("testStartGatewaySender failed as did not get CommandResult");
-    }
     server1.invoke(() -> verifySenderState("ln", true, false));
   }
 
@@ -175,7 +181,6 @@ public class StartGatewaySenderCommandDUnitTest {
    */
   @Test
   public void testStartGatewaySender_Group() throws Exception {
-
     Integer locator1Port = locatorSite1.getPort();
 
     // setup servers in Site #1
@@ -191,23 +196,32 @@ public class StartGatewaySenderCommandDUnitTest {
     server2.invoke(() -> verifySenderState("ln", false, false));
     server3.invoke(() -> verifySenderState("ln", false, false));
 
-    pause(10000);
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", false, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()), "ln", false, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()), "ln", false, false));
+
     String command = CliStrings.START_GATEWAYSENDER + " --" + CliStrings.START_GATEWAYSENDER__ID
         + "=ln --" + CliStrings.GROUP + "=SenderGroup1";
     CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+    List<String> status = resultData.retrieveAllValues("Result");
+    assertThat(status).hasSize(3);
+    assertThat(status).doesNotContain("Error");
+    assertThat(status).contains("OK");
+
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()), "ln", true, false));
 
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testStartGatewaySender_Group stringResult : " + strCmdResult + ">>>>");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-      TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
-      List<String> status = resultData.retrieveAllValues("Result");
-      assertEquals(3, status.size());
-      assertFalse(status.contains("Error"));
-      assertTrue(status.contains("OK"));
-    } else {
-      fail("testStartGatewaySender failed as did not get CommandResult");
-    }
     server1.invoke(() -> verifySenderState("ln", true, false));
     server2.invoke(() -> verifySenderState("ln", true, false));
     server3.invoke(() -> verifySenderState("ln", true, false));
@@ -219,7 +233,6 @@ public class StartGatewaySenderCommandDUnitTest {
    */
   @Test
   public void testStartGatewaySender_MultipleGroup() throws Exception {
-
     Integer locator1Port = locatorSite1.getPort();
 
     // setup servers in Site #1
@@ -241,23 +254,40 @@ public class StartGatewaySenderCommandDUnitTest {
     server4.invoke(() -> verifySenderState("ln", false, false));
     server5.invoke(() -> verifySenderState("ln", false, false));
 
-    pause(10000);
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", false, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()), "ln", false, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()), "ln", false, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server4.getVM()), "ln", false, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server5.getVM()), "ln", false, false));
+
     String command = CliStrings.START_GATEWAYSENDER + " --" + CliStrings.START_GATEWAYSENDER__ID
         + "=ln --" + CliStrings.GROUP + "=SenderGroup1,SenderGroup2";
     CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+    List<String> status = resultData.retrieveAllValues("Result");
+    assertThat(status).hasSize(4);
+    assertThat(status).doesNotContain("Error");
+    assertThat(status).contains("OK");
+
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server4.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server5.getVM()), "ln", false, false));
 
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testStartGatewaySender_Group stringResult : " + strCmdResult + ">>>>");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-      TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
-      List<String> status = resultData.retrieveAllValues("Result");
-      assertEquals(4, status.size());
-      assertFalse(status.contains("Error"));
-      assertTrue(status.contains("OK"));
-    } else {
-      fail("testStartGatewaySender failed as did not get CommandResult");
-    }
     server1.invoke(() -> verifySenderState("ln", true, false));
     server2.invoke(() -> verifySenderState("ln", true, false));
     server3.invoke(() -> verifySenderState("ln", true, false));
@@ -270,7 +300,6 @@ public class StartGatewaySenderCommandDUnitTest {
    */
   @Test
   public void testStartGatewaySender_Group_MissingSenderFromGroup() throws Exception {
-
     Integer locator1Port = locatorSite1.getPort();
 
     // setup servers in Site #1
@@ -284,35 +313,39 @@ public class StartGatewaySenderCommandDUnitTest {
     server1.invoke(() -> verifySenderState("ln", false, false));
     server3.invoke(() -> verifySenderState("ln", false, false));
 
-    pause(10000);
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", false, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()), "ln", false, false));
+
     String command = CliStrings.START_GATEWAYSENDER + " --" + CliStrings.START_GATEWAYSENDER__ID
         + "=ln --" + CliStrings.GROUP + "=SenderGroup1";
     CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+    assertThat(cmdResult).isNotNull();
+
+    String strCmdResult = cmdResult.toString();
+    assertThat(strCmdResult).contains("Error");
+    assertThat(strCmdResult).contains("is not available");
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+    List<String> status = resultData.retrieveAllValues("Result");
+    assertThat(status).hasSize(3);
+    assertThat(status).contains("Error");
+    assertThat(status).contains("OK");
+
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()), "ln", true, false));
 
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      assertTrue(strCmdResult.contains("Error"));
-      assertTrue(strCmdResult.contains("is not available"));
-      getLogWriter().info("testStartGatewaySender_Group stringResult : " + strCmdResult + ">>>>");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-      TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
-      List<String> status = resultData.retrieveAllValues("Result");
-      assertEquals(3, status.size());
-      assertTrue(status.contains("Error"));
-      assertTrue(status.contains("OK"));
-    } else {
-      fail("testStartGatewaySender failed as did not get CommandResult");
-    }
     server1.invoke(() -> verifySenderState("ln", true, false));
     server3.invoke(() -> verifySenderState("ln", true, false));
   }
 
-  private CommandResult executeCommandWithIgnoredExceptions(String command) {
-    final IgnoredException exln = IgnoredException.addIgnoredException("Could not connect");
-    try {
+  private CommandResult executeCommandWithIgnoredExceptions(String command) throws Exception {
+    try (IgnoredException ie = IgnoredException.addIgnoredException("Could not connect")) {
       return gfsh.executeCommand(command);
-    } finally {
-      exln.remove();
     }
   }
 
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StatusGatewayReceiverCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StatusGatewayReceiverCommandDUnitTest.java
index d202e2d..a2c60ad 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StatusGatewayReceiverCommandDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StatusGatewayReceiverCommandDUnitTest.java
@@ -12,21 +12,18 @@
  * or implied. See the License for the specific language governing permissions and limitations under
  * the License.
  */
-
 package org.apache.geode.internal.cache.wan.wancommand;
 
 import static org.apache.geode.distributed.ConfigurationProperties.DISTRIBUTED_SYSTEM_ID;
 import static org.apache.geode.distributed.ConfigurationProperties.GROUPS;
 import static org.apache.geode.distributed.ConfigurationProperties.REMOTE_LOCATORS;
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.createAndStartReceiver;
-import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.getMemberIdCallable;
+import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.getMember;
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.stopReceiver;
-import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
-import static org.apache.geode.test.dunit.Wait.pause;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.fail;
+import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.validateGatewayReceiverMXBeanProxy;
+import static org.assertj.core.api.Assertions.assertThat;
 
+import java.io.Serializable;
 import java.util.List;
 import java.util.Properties;
 
@@ -48,13 +45,14 @@ import org.apache.geode.test.junit.categories.WanTest;
 import org.apache.geode.test.junit.rules.GfshCommandRule;
 
 @Category({DistributedTest.class, WanTest.class})
-public class StatusGatewayReceiverCommandDUnitTest {
+@SuppressWarnings("serial")
+public class StatusGatewayReceiverCommandDUnitTest implements Serializable {
 
   @Rule
-  public ClusterStartupRule clusterStartupRule = new ClusterStartupRule();
+  public ClusterStartupRule clusterStartupRule = new ClusterStartupRule(8);
 
   @Rule
-  public GfshCommandRule gfsh = new GfshCommandRule();
+  public transient GfshCommandRule gfsh = new GfshCommandRule();
 
   private MemberVM locatorSite1;
   private MemberVM locatorSite2;
@@ -80,7 +78,6 @@ public class StatusGatewayReceiverCommandDUnitTest {
 
   @Test
   public void testGatewayReceiverStatus() throws Exception {
-
     Integer lnPort = locatorSite1.getPort();
     Integer nyPort = locatorSite2.getPort();
 
@@ -98,51 +95,50 @@ public class StatusGatewayReceiverCommandDUnitTest {
 
     server4.invoke(() -> createAndStartReceiver(nyPort));
 
-    pause(10000);
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server1.getVM()), true));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server2.getVM()), true));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server3.getVM()), true));
+
+    locatorSite2.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server4.getVM()), true));
+
     String command = CliStrings.STATUS_GATEWAYRECEIVER;
     CommandResult cmdResult = gfsh.executeCommand(command);
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
 
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testGatewayReceiverStatus : " + strCmdResult + ">>>>> ");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-      TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_AVAILABLE)
-          .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
-      List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
-      assertEquals(3, result_Status.size());
-      assertFalse(result_Status.contains(CliStrings.GATEWAY_NOT_RUNNING));
-    } else {
-      fail("testGatewayReceiverStatus failed as did not get CommandResult");
-    }
+    TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_AVAILABLE)
+        .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
+    List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
+    assertThat(result_Status).hasSize(3);
+    assertThat(result_Status).doesNotContain(CliStrings.GATEWAY_NOT_RUNNING);
 
     server1.invoke(() -> stopReceiver());
     server2.invoke(() -> stopReceiver());
     server3.invoke(() -> stopReceiver());
 
-    pause(10000);
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server1.getVM()), false));
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server2.getVM()), false));
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server3.getVM()), false));
+
     command = CliStrings.STATUS_GATEWAYRECEIVER;
     cmdResult = gfsh.executeCommand(command);
-
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testGatewayReceiverStatus : " + strCmdResult + ">>>>> ");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-
-      TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_AVAILABLE)
-          .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
-      List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
-      assertEquals(3, result_Status.size());
-      assertFalse(result_Status.contains(CliStrings.GATEWAY_RUNNING));
-    } else {
-      fail("testGatewayReceiverStatus failed as did not get CommandResult");
-    }
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    tableResultData = ((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_AVAILABLE)
+        .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
+    result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
+    assertThat(result_Status).hasSize(3);
+    assertThat(result_Status).doesNotContain(CliStrings.GATEWAY_RUNNING);
   }
 
   @Test
   public void testGatewayReceiverStatus_OnMember() throws Exception {
-
     Integer lnPort = locatorSite1.getPort();
     Integer nyPort = locatorSite2.getPort();
 
@@ -160,51 +156,52 @@ public class StatusGatewayReceiverCommandDUnitTest {
 
     server4.invoke(() -> createAndStartReceiver(nyPort));
 
-    final DistributedMember vm3Member = (DistributedMember) server1.invoke(getMemberIdCallable());
-    pause(10000);
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server1.getVM()), true));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server2.getVM()), true));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server3.getVM()), true));
+
+    locatorSite2.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server4.getVM()), true));
+
+    DistributedMember vm3Member = getMember(server1.getVM());
     String command =
         CliStrings.STATUS_GATEWAYRECEIVER + " --" + CliStrings.MEMBER + "=" + vm3Member.getId();
     CommandResult cmdResult = gfsh.executeCommand(command);
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_AVAILABLE)
+        .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
+    List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
+    assertThat(result_Status).hasSize(1);
+    assertThat(result_Status).doesNotContain(CliStrings.GATEWAY_NOT_RUNNING);
 
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testGatewayReceiverStatus : " + strCmdResult + ">>>>> ");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-      TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_AVAILABLE)
-          .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
-      List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
-      assertEquals(1, result_Status.size());
-      assertFalse(result_Status.contains(CliStrings.GATEWAY_NOT_RUNNING));
-    } else {
-      fail("testGatewayReceiverStatus failed as did not get CommandResult");
-    }
     server1.invoke(() -> stopReceiver());
     server2.invoke(() -> stopReceiver());
     server3.invoke(() -> stopReceiver());
 
-    pause(10000);
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server1.getVM()), false));
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server2.getVM()), false));
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server3.getVM()), false));
+
     command =
         CliStrings.STATUS_GATEWAYRECEIVER + " --" + CliStrings.MEMBER + "=" + vm3Member.getId();
     cmdResult = gfsh.executeCommand(command);
-
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testGatewayReceiverStatus : " + strCmdResult + ">>>>> ");
-      TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_AVAILABLE)
-          .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
-      List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
-      assertEquals(1, result_Status.size());
-      assertFalse(result_Status.contains(CliStrings.GATEWAY_RUNNING));
-    } else {
-      fail("testGatewayReceiverStatus failed as did not get CommandResult");
-    }
+    assertThat(cmdResult).isNotNull();
+
+    tableResultData = ((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_AVAILABLE)
+        .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
+    result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
+    assertThat(result_Status).hasSize(1);
+    assertThat(result_Status).doesNotContain(CliStrings.GATEWAY_RUNNING);
   }
 
   @Test
   public void testGatewayReceiverStatus_OnGroups() throws Exception {
-
     Integer lnPort = locatorSite1.getPort();
     Integer nyPort = locatorSite2.getPort();
 
@@ -224,44 +221,47 @@ public class StatusGatewayReceiverCommandDUnitTest {
 
     server5.invoke(() -> createAndStartReceiver(nyPort));
 
-    pause(10000);
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server1.getVM()), true));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server2.getVM()), true));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server3.getVM()), true));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server4.getVM()), true));
+
+    locatorSite2.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server5.getVM()), true));
+
     String command = CliStrings.STATUS_GATEWAYRECEIVER + " --" + CliStrings.GROUP + "=RG1";
     CommandResult cmdResult = gfsh.executeCommand(command);
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_AVAILABLE)
+        .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
+    List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
+    assertThat(result_Status).hasSize(3);
+    assertThat(result_Status).doesNotContain(CliStrings.GATEWAY_NOT_RUNNING);
 
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testGatewayReceiverStatus : " + strCmdResult + ">>>>> ");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-      TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_AVAILABLE)
-          .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
-      List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
-      assertEquals(3, result_Status.size());
-      assertFalse(result_Status.contains(CliStrings.GATEWAY_NOT_RUNNING));
-    } else {
-      fail("testGatewayReceiverStatus failed as did not get CommandResult");
-    }
     server1.invoke(() -> stopReceiver());
     server2.invoke(() -> stopReceiver());
     server3.invoke(() -> stopReceiver());
 
-    pause(10000);
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server1.getVM()), false));
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server2.getVM()), false));
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server3.getVM()), false));
+
     command = CliStrings.STATUS_GATEWAYRECEIVER + " --" + CliStrings.GROUP + "=RG1";
     cmdResult = gfsh.executeCommand(command);
-
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testGatewayReceiverStatus_OnGroups : " + strCmdResult + ">>>>> ");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-      TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_AVAILABLE)
-          .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
-      List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
-      assertEquals(3, result_Status.size());
-      assertFalse(result_Status.contains(CliStrings.GATEWAY_RUNNING));
-    } else {
-      fail("testGatewayReceiverStatus failed as did not get CommandResult");
-    }
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    tableResultData = ((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_AVAILABLE)
+        .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
+    result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
+    assertThat(result_Status).hasSize(3);
+    assertThat(result_Status).doesNotContain(CliStrings.GATEWAY_RUNNING);
   }
 
   private MemberVM startServerWithGroups(int index, String groups, int locPort) throws Exception {
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StatusGatewaySenderCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StatusGatewaySenderCommandDUnitTest.java
index 23e73b6..2498b33 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StatusGatewaySenderCommandDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StatusGatewaySenderCommandDUnitTest.java
@@ -19,14 +19,12 @@ import static org.apache.geode.distributed.ConfigurationProperties.GROUPS;
 import static org.apache.geode.distributed.ConfigurationProperties.REMOTE_LOCATORS;
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.createAndStartReceiver;
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.createSender;
-import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.getMemberIdCallable;
+import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.getMember;
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.startSender;
-import static org.apache.geode.test.dunit.Assert.assertEquals;
-import static org.apache.geode.test.dunit.Assert.assertFalse;
-import static org.apache.geode.test.dunit.Assert.fail;
-import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
-import static org.apache.geode.test.dunit.Wait.pause;
+import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.validateGatewaySenderMXBeanProxy;
+import static org.assertj.core.api.Assertions.assertThat;
 
+import java.io.Serializable;
 import java.util.List;
 import java.util.Properties;
 
@@ -48,13 +46,14 @@ import org.apache.geode.test.junit.categories.WanTest;
 import org.apache.geode.test.junit.rules.GfshCommandRule;
 
 @Category({DistributedTest.class, WanTest.class})
-public class StatusGatewaySenderCommandDUnitTest {
+@SuppressWarnings("serial")
+public class StatusGatewaySenderCommandDUnitTest implements Serializable {
 
   @Rule
-  public ClusterStartupRule clusterStartupRule = new ClusterStartupRule();
+  public ClusterStartupRule clusterStartupRule = new ClusterStartupRule(8);
 
   @Rule
-  public GfshCommandRule gfsh = new GfshCommandRule();
+  public transient GfshCommandRule gfsh = new GfshCommandRule();
 
   private MemberVM locatorSite1;
   private MemberVM locatorSite2;
@@ -80,7 +79,6 @@ public class StatusGatewaySenderCommandDUnitTest {
 
   @Test
   public void testGatewaySenderStatus() throws Exception {
-
     Integer lnPort = locatorSite1.getPort();
     Integer nyPort = locatorSite2.getPort();
 
@@ -103,24 +101,33 @@ public class StatusGatewaySenderCommandDUnitTest {
     server3.invoke(() -> createSender("ln_Serial", 2, false, 100, 400, false, false, null, true));
     server3.invoke(() -> createSender("ln_Parallel", 2, true, 100, 400, false, false, null, true));
 
-    pause(10000);
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()),
+        "ln_Serial", false, false));
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()),
+        "ln_Parallel", false, false));
+
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()),
+        "ln_Serial", false, false));
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()),
+        "ln_Parallel", false, false));
+
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()),
+        "ln_Serial", false, false));
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()),
+        "ln_Parallel", false, false));
+
     String command = CliStrings.STATUS_GATEWAYSENDER + " --" + CliStrings.STATUS_GATEWAYSENDER__ID
         + "=ln_Serial";
     CommandResult cmdResult = gfsh.executeCommand(command);
+    assertThat(cmdResult).isNotNull();
 
-    if (cmdResult != null) {
-      TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_AVAILABLE)
-          .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
-      List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
-      assertEquals(3, result_Status.size());
-      assertFalse(result_Status.contains(CliStrings.GATEWAY_RUNNING));
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testGatewaySenderStatus : " + strCmdResult + ">>>>> ");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-    } else {
-      fail("testListGatewaySender failed as did not get CommandResult");
-    }
+    TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_AVAILABLE)
+        .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
+    List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
+    assertThat(result_Status).hasSize(3);
+    assertThat(result_Status).doesNotContain(CliStrings.GATEWAY_RUNNING);
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
 
     server1.invoke(() -> startSender("ln_Serial"));
     server1.invoke(() -> startSender("ln_Parallel"));
@@ -131,35 +138,36 @@ public class StatusGatewaySenderCommandDUnitTest {
     server3.invoke(() -> startSender("ln_Serial"));
     server3.invoke(() -> startSender("ln_Parallel"));
 
-    pause(10000);
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()),
+        "ln_Serial", true, false));
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()),
+        "ln_Parallel", true, false));
+
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()),
+        "ln_Serial", true, false));
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()),
+        "ln_Parallel", true, false));
+
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()),
+        "ln_Serial", true, false));
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()),
+        "ln_Parallel", true, false));
+
     command = CliStrings.STATUS_GATEWAYSENDER + " --" + CliStrings.STATUS_GATEWAYSENDER__ID
         + "=ln_Serial";
     cmdResult = gfsh.executeCommand(command);
-
-    if (cmdResult != null) {
-      TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_AVAILABLE)
-          .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
-      List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
-      assertEquals(3, result_Status.size());
-      assertFalse(result_Status.contains(CliStrings.GATEWAY_NOT_RUNNING));
-      /*
-       * tableResultData = ((CompositeResultData) cmdResult.getResultData())
-       * .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_NOT_AVAILABLE)
-       * .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER); List<String> result_hosts =
-       * tableResultData.retrieveAllValues(CliStrings.RESULT_HOST_MEMBER); assertEquals(2,
-       * result_hosts.size()); String strCmdResult = cmdResult.toString();
-       * getLogWriter().info("testGatewaySenderStatus : " + strCmdResult + ">>>>> ");
-       * assertEquals(Result.Status.OK, cmdResult.getStatus());
-       */
-    } else {
-      fail("testListGatewaySender failed as did not get CommandResult");
-    }
+    assertThat(cmdResult).isNotNull();
+
+    tableResultData = ((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_AVAILABLE)
+        .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
+    result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
+    assertThat(result_Status).hasSize(3);
+    assertThat(result_Status).doesNotContain(CliStrings.GATEWAY_NOT_RUNNING);
   }
 
   @Test
   public void testGatewaySenderStatus_OnMember() throws Exception {
-
     Integer lnPort = locatorSite1.getPort();
     Integer nyPort = locatorSite2.getPort();
 
@@ -182,25 +190,34 @@ public class StatusGatewaySenderCommandDUnitTest {
     server3.invoke(() -> createSender("ln_Serial", 2, false, 100, 400, false, false, null, true));
     server3.invoke(() -> createSender("ln_Parallel", 2, true, 100, 400, false, false, null, true));
 
-    final DistributedMember server1DM = (DistributedMember) server1.invoke(getMemberIdCallable());
-    pause(10000);
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()),
+        "ln_Serial", false, false));
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()),
+        "ln_Parallel", false, false));
+
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()),
+        "ln_Serial", false, false));
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()),
+        "ln_Parallel", false, false));
+
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()),
+        "ln_Serial", false, false));
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()),
+        "ln_Parallel", false, false));
+
+    DistributedMember server1DM = getMember(server1.getVM());
     String command = CliStrings.STATUS_GATEWAYSENDER + " --" + CliStrings.STATUS_GATEWAYSENDER__ID
         + "=ln_Serial --" + CliStrings.MEMBER + "=" + server1DM.getId();
     CommandResult cmdResult = gfsh.executeCommand(command);
+    assertThat(cmdResult).isNotNull();
 
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testGatewaySenderStatus_OnMember : " + strCmdResult + ">>>>> ");
-      TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_AVAILABLE)
-          .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
-      List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
-      assertEquals(1, result_Status.size());
-      assertFalse(result_Status.contains(CliStrings.GATEWAY_RUNNING));
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-    } else {
-      fail("testListGatewaySender failed as did not get CommandResult");
-    }
+    TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_AVAILABLE)
+        .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
+    List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
+    assertThat(result_Status).hasSize(1);
+    assertThat(result_Status).doesNotContain(CliStrings.GATEWAY_RUNNING);
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
 
     server1.invoke(() -> startSender("ln_Serial"));
     server1.invoke(() -> startSender("ln_Parallel"));
@@ -208,41 +225,43 @@ public class StatusGatewaySenderCommandDUnitTest {
     server2.invoke(() -> startSender("ln_Serial"));
     server2.invoke(() -> startSender("ln_Parallel"));
 
-    pause(10000);
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()),
+        "ln_Serial", true, false));
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()),
+        "ln_Parallel", true, false));
+
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()),
+        "ln_Serial", true, false));
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()),
+        "ln_Parallel", true, false));
+
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()),
+        "ln_Serial", false, false));
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()),
+        "ln_Parallel", false, false));
+
     command = CliStrings.STATUS_GATEWAYSENDER + " --" + CliStrings.STATUS_GATEWAYSENDER__ID
         + "=ln_Serial --" + CliStrings.MEMBER + "=" + server1DM.getId();
     cmdResult = gfsh.executeCommand(command);
+    assertThat(cmdResult).isNotNull();
+
+    tableResultData = ((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_AVAILABLE)
+        .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
+    result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
+    assertThat(result_Status).hasSize(1);
+    assertThat(result_Status).doesNotContain(CliStrings.GATEWAY_NOT_RUNNING);
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
 
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testGatewaySenderStatus_OnMember : " + strCmdResult + ">>>>> ");
-      TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_AVAILABLE)
-          .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
-      List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
-      assertEquals(1, result_Status.size());
-      assertFalse(result_Status.contains(CliStrings.GATEWAY_NOT_RUNNING));
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-    } else {
-      fail("testListGatewaySender failed as did not get CommandResult");
-    }
-
-    final DistributedMember server3DM = (DistributedMember) server3.invoke(getMemberIdCallable());
+    DistributedMember server3DM = getMember(server3.getVM());
     command = CliStrings.STATUS_GATEWAYSENDER + " --" + CliStrings.STATUS_GATEWAYSENDER__ID
         + "=ln_Serial --" + CliStrings.MEMBER + "=" + server3DM.getId();
     cmdResult = gfsh.executeCommand(command);
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testGatewaySenderStatus_OnMember : " + strCmdResult + ">>>>> ");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-    } else {
-      fail("testListGatewaySender failed as did not get CommandResult");
-    }
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
   }
 
   @Test
   public void testGatewaySenderStatus_OnGroups() throws Exception {
-
     Integer lnPort = locatorSite1.getPort();
     Integer nyPort = locatorSite2.getPort();
 
@@ -266,29 +285,38 @@ public class StatusGatewaySenderCommandDUnitTest {
     server3.invoke(() -> createSender("ln_Serial", 2, false, 100, 400, false, false, null, true));
     server3.invoke(() -> createSender("ln_Parallel", 2, true, 100, 400, false, false, null, true));
 
-    pause(10000);
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()),
+        "ln_Serial", false, false));
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()),
+        "ln_Parallel", false, false));
+
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()),
+        "ln_Serial", false, false));
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()),
+        "ln_Parallel", false, false));
+
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()),
+        "ln_Serial", false, false));
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()),
+        "ln_Parallel", false, false));
+
     String command = CliStrings.STATUS_GATEWAYSENDER + " --" + CliStrings.STATUS_GATEWAYSENDER__ID
         + "=ln_Serial --" + CliStrings.GROUP + "=Serial_Sender";
     CommandResult cmdResult = gfsh.executeCommand(command);
-
-    if (cmdResult != null) {
-      TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_AVAILABLE)
-          .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
-      List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
-      assertEquals(2, result_Status.size());
-      assertFalse(result_Status.contains(CliStrings.GATEWAY_RUNNING));
-      tableResultData = ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_NOT_AVAILABLE)
-          .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
-      List<String> result_hosts = tableResultData.retrieveAllValues(CliStrings.RESULT_HOST_MEMBER);
-      assertEquals(1, result_hosts.size());
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testGatewaySenderStatus_OnGroups : " + strCmdResult + ">>>>> ");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-    } else {
-      fail("testListGatewaySender failed as did not get CommandResult");
-    }
+    assertThat(cmdResult).isNotNull();
+
+    TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_AVAILABLE)
+        .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
+    List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
+    assertThat(result_Status).hasSize(2);
+    assertThat(result_Status).doesNotContain(CliStrings.GATEWAY_RUNNING);
+    tableResultData = ((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_NOT_AVAILABLE)
+        .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
+    List<String> result_hosts = tableResultData.retrieveAllValues(CliStrings.RESULT_HOST_MEMBER);
+    assertThat(result_hosts).hasSize(1);
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
 
     server1.invoke(() -> startSender("ln_Serial"));
     server1.invoke(() -> startSender("ln_Parallel"));
@@ -296,29 +324,39 @@ public class StatusGatewaySenderCommandDUnitTest {
     server2.invoke(() -> startSender("ln_Serial"));
     server2.invoke(() -> startSender("ln_Parallel"));
 
-    pause(10000);
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()),
+        "ln_Serial", true, false));
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()),
+        "ln_Parallel", true, false));
+
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()),
+        "ln_Serial", true, false));
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()),
+        "ln_Parallel", true, false));
+
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()),
+        "ln_Serial", false, false));
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()),
+        "ln_Parallel", false, false));
+
     command = CliStrings.STATUS_GATEWAYSENDER + " --" + CliStrings.STATUS_GATEWAYSENDER__ID
         + "=ln_Serial --" + CliStrings.GROUP + "=Serial_Sender";
     cmdResult = gfsh.executeCommand(command);
-
-    if (cmdResult != null) {
-      TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_AVAILABLE)
-          .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
-      List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
-      assertEquals(2, result_Status.size());
-      assertFalse(result_Status.contains(CliStrings.GATEWAY_NOT_RUNNING));
-      tableResultData = ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_NOT_AVAILABLE)
-          .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
-      List<String> result_hosts = tableResultData.retrieveAllValues(CliStrings.RESULT_HOST_MEMBER);
-      assertEquals(1, result_hosts.size());
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testGatewaySenderStatus_OnGroups : " + strCmdResult + ">>>>> ");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-    } else {
-      fail("testListGatewaySender failed as did not get CommandResult");
-    }
+    assertThat(cmdResult).isNotNull();
+
+    tableResultData = ((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_AVAILABLE)
+        .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
+    result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
+    assertThat(result_Status).hasSize(2);
+    assertThat(result_Status).doesNotContain(CliStrings.GATEWAY_NOT_RUNNING);
+
+    tableResultData = ((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_NOT_AVAILABLE)
+        .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
+    result_hosts = tableResultData.retrieveAllValues(CliStrings.RESULT_HOST_MEMBER);
+    assertThat(result_hosts).hasSize(1);
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
   }
 
   private MemberVM startServerWithGroups(int index, String groups, int locPort) throws Exception {
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StopGatewayReceiverCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StopGatewayReceiverCommandDUnitTest.java
index e94d2a2..34cd490 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StopGatewayReceiverCommandDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StopGatewayReceiverCommandDUnitTest.java
@@ -19,15 +19,12 @@ import static org.apache.geode.distributed.ConfigurationProperties.GROUPS;
 import static org.apache.geode.distributed.ConfigurationProperties.REMOTE_LOCATORS;
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.createAndStartReceiver;
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.createReceiver;
-import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.getMemberIdCallable;
+import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.getMember;
+import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.validateGatewayReceiverMXBeanProxy;
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.verifyReceiverState;
-import static org.apache.geode.test.dunit.Assert.assertEquals;
-import static org.apache.geode.test.dunit.Assert.assertFalse;
-import static org.apache.geode.test.dunit.Assert.assertTrue;
-import static org.apache.geode.test.dunit.Assert.fail;
-import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
-import static org.apache.geode.test.dunit.Wait.pause;
+import static org.assertj.core.api.Assertions.assertThat;
 
+import java.io.Serializable;
 import java.util.List;
 import java.util.Properties;
 
@@ -48,13 +45,14 @@ import org.apache.geode.test.junit.categories.WanTest;
 import org.apache.geode.test.junit.rules.GfshCommandRule;
 
 @Category({DistributedTest.class, WanTest.class})
-public class StopGatewayReceiverCommandDUnitTest {
+@SuppressWarnings("serial")
+public class StopGatewayReceiverCommandDUnitTest implements Serializable {
 
   @Rule
-  public ClusterStartupRule clusterStartupRule = new ClusterStartupRule();
+  public ClusterStartupRule clusterStartupRule = new ClusterStartupRule(8);
 
   @Rule
-  public GfshCommandRule gfsh = new GfshCommandRule();
+  public transient GfshCommandRule gfsh = new GfshCommandRule();
 
   private MemberVM locatorSite1;
   private MemberVM locatorSite2;
@@ -84,7 +82,6 @@ public class StopGatewayReceiverCommandDUnitTest {
    */
   @Test
   public void testStopGatewayReceiver_ErrorConditions() throws Exception {
-
     Integer locator1Port = locatorSite1.getPort();
 
     // setup servers in Site #1 (London)
@@ -92,7 +89,7 @@ public class StopGatewayReceiverCommandDUnitTest {
 
     server1.invoke(() -> createReceiver(locator1Port));
 
-    final DistributedMember server1DM = server1.invoke(getMemberIdCallable());
+    DistributedMember server1DM = getMember(server1.getVM());
     String command = CliStrings.STOP_GATEWAYRECEIVER + " --" + CliStrings.MEMBER + "="
         + server1DM.getId() + " --" + CliStrings.GROUP + "=RG1";
     gfsh.executeAndAssertThat(command).statusIsError()
@@ -101,7 +98,6 @@ public class StopGatewayReceiverCommandDUnitTest {
 
   @Test
   public void testStopGatewayReceiver() throws Exception {
-
     Integer locator1Port = locatorSite1.getPort();
 
     // setup servers in Site #1 (London)
@@ -117,19 +113,25 @@ public class StopGatewayReceiverCommandDUnitTest {
     server2.invoke(() -> verifyReceiverState(true));
     server3.invoke(() -> verifyReceiverState(true));
 
-    pause(10000);
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server1.getVM()), true));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server2.getVM()), true));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server3.getVM()), true));
+
     String command = CliStrings.STOP_GATEWAYRECEIVER;
     CommandResult cmdResult = gfsh.executeCommand(command);
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testStopGatewayReceiver stringResult : " + strCmdResult + ">>>>");
-      TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
-      List<String> status = resultData.retrieveAllValues("Result");
-      assertEquals(3, status.size());
-      assertTrue(status.contains("OK"));
-    } else {
-      fail("testStopGatewayReceiver failed as did not get CommandResult");
-    }
+    assertThat(cmdResult).isNotNull();
+
+    TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+    List<String> status = resultData.retrieveAllValues("Result");
+    assertThat(status).hasSize(3);
+    assertThat(status).contains("OK");
+
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server1.getVM()), false));
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server2.getVM()), false));
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server3.getVM()), false));
 
     server1.invoke(() -> verifyReceiverState(false));
     server2.invoke(() -> verifyReceiverState(false));
@@ -141,7 +143,6 @@ public class StopGatewayReceiverCommandDUnitTest {
    */
   @Test
   public void testStopGatewayReceiver_onMember() throws Exception {
-
     Integer locator1Port = locatorSite1.getPort();
 
     // setup servers in Site #1 (London)
@@ -157,20 +158,24 @@ public class StopGatewayReceiverCommandDUnitTest {
     server2.invoke(() -> verifyReceiverState(true));
     server3.invoke(() -> verifyReceiverState(true));
 
-    final DistributedMember server1DM = (DistributedMember) server1.invoke(getMemberIdCallable());
-    pause(10000);
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server1.getVM()), true));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server2.getVM()), true));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server3.getVM()), true));
+
+    DistributedMember server1DM = getMember(server1.getVM());
     String command =
         CliStrings.STOP_GATEWAYRECEIVER + " --" + CliStrings.MEMBER + "=" + server1DM.getId();
     CommandResult cmdResult = gfsh.executeCommand(command);
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter()
-          .info("testStopGatewayReceiver_onMember stringResult : " + strCmdResult + ">>>>");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-      assertTrue(strCmdResult.contains("stopped on member"));
-    } else {
-      fail("testStopGatewayReceiver failed as did not get CommandResult");
-    }
+    assertThat(cmdResult).isNotNull();
+
+    String strCmdResult = cmdResult.toString();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+    assertThat(strCmdResult).contains("stopped on member");
+
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server1.getVM()), false));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server2.getVM()), true));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server3.getVM()), true));
 
     server1.invoke(() -> verifyReceiverState(false));
     server2.invoke(() -> verifyReceiverState(true));
@@ -182,7 +187,6 @@ public class StopGatewayReceiverCommandDUnitTest {
    */
   @Test
   public void testStopGatewayReceiver_Group() throws Exception {
-
     Integer locator1Port = locatorSite1.getPort();
 
     // setup servers in Site #1 (London)
@@ -198,22 +202,27 @@ public class StopGatewayReceiverCommandDUnitTest {
     server2.invoke(() -> verifyReceiverState(true));
     server3.invoke(() -> verifyReceiverState(true));
 
-    pause(10000);
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server1.getVM()), true));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server2.getVM()), true));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server3.getVM()), true));
+
     String command = CliStrings.STOP_GATEWAYRECEIVER + " --" + CliStrings.GROUP + "=RG1";
     CommandResult cmdResult = gfsh.executeCommand(command);
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testStopGatewayReceiver_Group stringResult : " + strCmdResult + ">>>>");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-
-      TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
-      List<String> status = resultData.retrieveAllValues("Result");
-      assertEquals(3, status.size());
-      assertFalse(status.contains("Error"));
-      assertTrue(status.contains("OK"));
-    } else {
-      fail("testStopGatewayReceiver_Group failed as did not get CommandResult");
-    }
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+    List<String> status = resultData.retrieveAllValues("Result");
+    assertThat(status).hasSize(3);
+    assertThat(status).doesNotContain("Error");
+    assertThat(status).contains("OK");
+
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server1.getVM()), false));
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server2.getVM()), false));
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server3.getVM()), false));
 
     server1.invoke(() -> verifyReceiverState(false));
     server2.invoke(() -> verifyReceiverState(false));
@@ -227,7 +236,6 @@ public class StopGatewayReceiverCommandDUnitTest {
    */
   @Test
   public void testStopGatewayReceiver_MultipleGroup() throws Exception {
-
     Integer locator1Port = locatorSite1.getPort();
 
     // setup servers in Site #1 (London)
@@ -249,21 +257,32 @@ public class StopGatewayReceiverCommandDUnitTest {
     server4.invoke(() -> verifyReceiverState(true));
     server5.invoke(() -> verifyReceiverState(true));
 
-    pause(10000);
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server1.getVM()), true));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server2.getVM()), true));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server3.getVM()), true));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server4.getVM()), true));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server5.getVM()), true));
+
     String command = CliStrings.STOP_GATEWAYRECEIVER + " --" + CliStrings.GROUP + "=RG1,RG2";
     CommandResult cmdResult = gfsh.executeCommand(command);
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testStopGatewayReceiver_Group stringResult : " + strCmdResult + ">>>>");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-      TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
-      List<String> status = resultData.retrieveAllValues("Result");
-      assertEquals(4, status.size());
-      assertFalse(status.contains("Error"));
-      assertTrue(status.contains("OK"));
-    } else {
-      fail("testStopGatewayReceiver failed as did not get CommandResult");
-    }
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+    List<String> status = resultData.retrieveAllValues("Result");
+    assertThat(status).hasSize(4);
+    assertThat(status).doesNotContain("Error");
+    assertThat(status).contains("OK");
+
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server1.getVM()), false));
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server2.getVM()), false));
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server3.getVM()), false));
+    locatorSite1
+        .invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server4.getVM()), false));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server5.getVM()), true));
 
     server1.invoke(() -> verifyReceiverState(false));
     server2.invoke(() -> verifyReceiverState(false));
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StopGatewaySenderCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StopGatewaySenderCommandDUnitTest.java
index 6d0302b..49779a3 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StopGatewaySenderCommandDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StopGatewaySenderCommandDUnitTest.java
@@ -18,16 +18,13 @@ import static org.apache.geode.distributed.ConfigurationProperties.DISTRIBUTED_S
 import static org.apache.geode.distributed.ConfigurationProperties.GROUPS;
 import static org.apache.geode.distributed.ConfigurationProperties.REMOTE_LOCATORS;
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.createSender;
-import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.getMemberIdCallable;
+import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.getMember;
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.startSender;
+import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.validateGatewaySenderMXBeanProxy;
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.verifySenderState;
-import static org.apache.geode.test.dunit.Assert.assertEquals;
-import static org.apache.geode.test.dunit.Assert.assertFalse;
-import static org.apache.geode.test.dunit.Assert.assertTrue;
-import static org.apache.geode.test.dunit.Assert.fail;
-import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
-import static org.apache.geode.test.dunit.Wait.pause;
+import static org.assertj.core.api.Assertions.assertThat;
 
+import java.io.Serializable;
 import java.util.List;
 import java.util.Properties;
 
@@ -49,13 +46,14 @@ import org.apache.geode.test.junit.categories.WanTest;
 import org.apache.geode.test.junit.rules.GfshCommandRule;
 
 @Category({DistributedTest.class, WanTest.class})
-public class StopGatewaySenderCommandDUnitTest {
+@SuppressWarnings("serial")
+public class StopGatewaySenderCommandDUnitTest implements Serializable {
 
   @Rule
-  public ClusterStartupRule clusterStartupRule = new ClusterStartupRule();
+  public ClusterStartupRule clusterStartupRule = new ClusterStartupRule(8);
 
   @Rule
-  public GfshCommandRule gfsh = new GfshCommandRule();
+  public transient GfshCommandRule gfsh = new GfshCommandRule();
 
   private MemberVM locatorSite1;
   private MemberVM locatorSite2;
@@ -81,7 +79,6 @@ public class StopGatewaySenderCommandDUnitTest {
 
   @Test
   public void testStopGatewaySender_ErrorConditions() throws Exception {
-
     Integer locator1Port = locatorSite1.getPort();
 
     // setup servers in Site #1 (London)
@@ -89,7 +86,7 @@ public class StopGatewaySenderCommandDUnitTest {
 
     server1.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
 
-    final DistributedMember server1DM = server1.invoke(getMemberIdCallable());
+    DistributedMember server1DM = getMember(server1.getVM());
     String command = CliStrings.STOP_GATEWAYSENDER + " --" + CliStrings.STOP_GATEWAYSENDER__ID
         + "=ln --" + CliStrings.MEMBER + "=" + server1DM.getId() + " --" + CliStrings.GROUP
         + "=SenderGroup1";
@@ -99,7 +96,6 @@ public class StopGatewaySenderCommandDUnitTest {
 
   @Test
   public void testStopGatewaySender() throws Exception {
-
     Integer locator1Port = locatorSite1.getPort();
 
     // setup servers in Site #1 (London)
@@ -119,21 +115,31 @@ public class StopGatewaySenderCommandDUnitTest {
     server2.invoke(() -> verifySenderState("ln", true, false));
     server3.invoke(() -> verifySenderState("ln", true, false));
 
-    pause(10000);
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()), "ln", true, false));
+
     String command =
         CliStrings.STOP_GATEWAYSENDER + " --" + CliStrings.STOP_GATEWAYSENDER__ID + "=ln";
     CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testStopGatewaySender stringResult : " + strCmdResult + ">>>>");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-      TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
-      List<String> status = resultData.retrieveAllValues("Result");
-      assertEquals(3, status.size());
-      assertTrue(status.contains("OK"));
-    } else {
-      fail("testStopGatewaySender failed as did not get CommandResult");
-    }
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+    List<String> status = resultData.retrieveAllValues("Result");
+    assertThat(status).hasSize(3);
+    assertThat(status).contains("OK");
+
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", false, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()), "ln", false, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()), "ln", false, false));
+
     server1.invoke(() -> verifySenderState("ln", false, false));
     server2.invoke(() -> verifySenderState("ln", false, false));
     server3.invoke(() -> verifySenderState("ln", false, false));
@@ -144,7 +150,6 @@ public class StopGatewaySenderCommandDUnitTest {
    */
   @Test
   public void testStopGatewaySender_onMember() throws Exception {
-
     Integer locator1Port = locatorSite1.getPort();
 
     // setup servers in Site #1 (London)
@@ -154,19 +159,22 @@ public class StopGatewaySenderCommandDUnitTest {
     server1.invoke(() -> startSender("ln"));
     server1.invoke(() -> verifySenderState("ln", true, false));
 
-    final DistributedMember server1DM = (DistributedMember) server1.invoke(getMemberIdCallable());
-    pause(10000);
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", true, false));
+
+    DistributedMember server1DM = getMember(server1.getVM());
     String command = CliStrings.STOP_GATEWAYSENDER + " --" + CliStrings.STOP_GATEWAYSENDER__ID
         + "=ln --" + CliStrings.MEMBER + "=" + server1DM.getId();
     CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testStopGatewaySender stringResult : " + strCmdResult + ">>>>");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-      assertTrue(strCmdResult.contains("is stopped on member"));
-    } else {
-      fail("testStopGatewaySender failed as did not get CommandResult");
-    }
+    assertThat(cmdResult).isNotNull();
+
+    String strCmdResult = cmdResult.toString();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+    assertThat(strCmdResult).contains("is stopped on member");
+
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", false, false));
+
     server1.invoke(() -> verifySenderState("ln", false, false));
   }
 
@@ -175,7 +183,6 @@ public class StopGatewaySenderCommandDUnitTest {
    */
   @Test
   public void testStopGatewaySender_Group() throws Exception {
-
     Integer locator1Port = locatorSite1.getPort();
 
     // setup servers in Site #1 (London)
@@ -195,22 +202,31 @@ public class StopGatewaySenderCommandDUnitTest {
     server2.invoke(() -> verifySenderState("ln", true, false));
     server3.invoke(() -> verifySenderState("ln", true, false));
 
-    pause(10000);
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()), "ln", true, false));
+
     String command = CliStrings.STOP_GATEWAYSENDER + " --" + CliStrings.STOP_GATEWAYSENDER__ID
         + "=ln --" + CliStrings.GROUP + "=SenderGroup1";
     CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testStopGatewaySender_Group stringResult : " + strCmdResult + ">>>>");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-      TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
-      List<String> status = resultData.retrieveAllValues("Result");
-      assertEquals(3, status.size());
-      assertFalse(status.contains("Error"));
-      assertTrue(status.contains("OK"));
-    } else {
-      fail("testStopGatewaySender failed as did not get CommandResult");
-    }
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+    List<String> status = resultData.retrieveAllValues("Result");
+    assertThat(status).hasSize(3);
+    assertThat(status).doesNotContain("Error");
+    assertThat(status).contains("OK");
+
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", false, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()), "ln", false, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()), "ln", false, false));
 
     server1.invoke(() -> verifySenderState("ln", false, false));
     server2.invoke(() -> verifySenderState("ln", false, false));
@@ -223,7 +239,6 @@ public class StopGatewaySenderCommandDUnitTest {
    */
   @Test
   public void testStopGatewaySender_MultipleGroup() throws Exception {
-
     Integer locator1Port = locatorSite1.getPort();
 
     // setup servers in Site #1 (London)
@@ -251,22 +266,40 @@ public class StopGatewaySenderCommandDUnitTest {
     server4.invoke(() -> verifySenderState("ln", true, false));
     server5.invoke(() -> verifySenderState("ln", true, false));
 
-    pause(10000);
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server4.getVM()), "ln", true, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server5.getVM()), "ln", true, false));
+
     String command = CliStrings.STOP_GATEWAYSENDER + " --" + CliStrings.STOP_GATEWAYSENDER__ID
         + "=ln --" + CliStrings.GROUP + "=SenderGroup1,SenderGroup2";
     CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testStopGatewaySender_Group stringResult : " + strCmdResult + ">>>>");
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-      TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
-      List<String> status = resultData.retrieveAllValues("Result");
-      assertEquals(4, status.size());
-      assertFalse(status.contains("Error"));
-      assertTrue(status.contains("OK"));
-    } else {
-      fail("testStopGatewaySender failed as did not get CommandResult");
-    }
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+    List<String> status = resultData.retrieveAllValues("Result");
+    assertThat(status).hasSize(4);
+    assertThat(status).doesNotContain("Error");
+    assertThat(status).contains("OK");
+
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()), "ln", false, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()), "ln", false, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()), "ln", false, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server4.getVM()), "ln", false, false));
+    locatorSite1.invoke(
+        () -> validateGatewaySenderMXBeanProxy(getMember(server5.getVM()), "ln", true, false));
+
     server1.invoke(() -> verifySenderState("ln", false, false));
     server2.invoke(() -> verifySenderState("ln", false, false));
     server3.invoke(() -> verifySenderState("ln", false, false));
@@ -274,11 +307,10 @@ public class StopGatewaySenderCommandDUnitTest {
     server5.invoke(() -> verifySenderState("ln", true, false));
   }
 
-  private CommandResult executeCommandWithIgnoredExceptions(String command) {
-    final IgnoredException exln = IgnoredException.addIgnoredException("Could not connect");
-    CommandResult commandResult = gfsh.executeCommand(command);
-    exln.remove();
-    return commandResult;
+  private CommandResult executeCommandWithIgnoredExceptions(String command) throws Exception {
+    try (IgnoredException ie = IgnoredException.addIgnoredException("Could not connect")) {
+      return gfsh.executeCommand(command);
+    }
   }
 
   private MemberVM startServerWithGroups(int index, String groups, int locPort) throws Exception {
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WANCommandUtils.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WANCommandUtils.java
index fd96373..e832050 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WANCommandUtils.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WANCommandUtils.java
@@ -14,6 +14,10 @@
  */
 package org.apache.geode.internal.cache.wan.wancommand;
 
+import static org.apache.geode.management.MXBeanAwaitility.await;
+import static org.apache.geode.management.MXBeanAwaitility.awaitGatewayReceiverMXBeanProxy;
+import static org.apache.geode.management.MXBeanAwaitility.awaitGatewaySenderMXBeanProxy;
+import static org.apache.geode.management.MXBeanAwaitility.awaitMemberMXBeanProxy;
 import static org.apache.geode.test.dunit.Assert.assertEquals;
 import static org.apache.geode.test.dunit.Assert.fail;
 import static org.assertj.core.api.Assertions.assertThat;
@@ -41,14 +45,17 @@ import org.apache.geode.cache.wan.GatewaySenderFactory;
 import org.apache.geode.cache.wan.GatewayTransportFilter;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.ServerLocation;
+import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.AvailablePort;
 import org.apache.geode.internal.cache.CacheServerAdvisor;
 import org.apache.geode.internal.cache.CacheServerImpl;
 import org.apache.geode.internal.cache.GemFireCacheImpl;
 import org.apache.geode.internal.cache.InternalRegion;
-import org.apache.geode.internal.cache.LocalRegion;
 import org.apache.geode.internal.cache.wan.AbstractGatewaySender;
 import org.apache.geode.internal.cache.wan.parallel.ParallelGatewaySenderQueue;
+import org.apache.geode.management.GatewayReceiverMXBean;
+import org.apache.geode.management.GatewaySenderMXBean;
+import org.apache.geode.management.MemberMXBean;
 import org.apache.geode.test.dunit.IgnoredException;
 import org.apache.geode.test.dunit.SerializableCallableIF;
 import org.apache.geode.test.dunit.VM;
@@ -325,6 +332,37 @@ public class WANCommandUtils implements Serializable {
     }
   }
 
+  public static void validateMemberMXBeanProxy(final InternalDistributedMember member) {
+    MemberMXBean memberMXBean = awaitMemberMXBeanProxy(member);
+    assertThat(memberMXBean).isNotNull();
+  }
+
+  public static void validateGatewaySenderMXBeanProxy(final InternalDistributedMember member,
+      final String senderId, final boolean isRunning, final boolean isPaused) {
+    GatewaySenderMXBean gatewaySenderMXBean = awaitGatewaySenderMXBeanProxy(member, senderId);
+    await("Awaiting GatewaySenderMXBean.isRunning(" + isRunning + ").isPaused(" + isPaused + ")")
+        .until(() -> {
+          assertThat(gatewaySenderMXBean.isRunning()).isEqualTo(isRunning);
+          assertThat(gatewaySenderMXBean.isPaused()).isEqualTo(isPaused);
+        });
+    assertThat(gatewaySenderMXBean).isNotNull();
+  }
+
+  public static void validateGatewayReceiverMXBeanProxy(final InternalDistributedMember member,
+      final boolean isRunning) {
+    GatewayReceiverMXBean gatewayReceiverMXBean = awaitGatewayReceiverMXBeanProxy(member);
+    await("Awaiting GatewayReceiverMXBean.isRunning(" + isRunning + ")").until(() -> {
+      assertThat(gatewayReceiverMXBean.isRunning()).isEqualTo(isRunning);
+    });
+    assertThat(gatewayReceiverMXBean).isNotNull();
+  }
+
+  public static InternalDistributedMember getMember(final VM vm) {
+    return vm.invoke(() -> {
+      return ClusterStartupRule.getCache().getMyId();
+    });
+  }
+
   public static SerializableCallableIF<DistributedMember> getMemberIdCallable() {
     return () -> ClusterStartupRule.getCache().getDistributedSystem().getDistributedMember();
   }
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandListDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandListDUnitTest.java
index 27750e1..b5dd614 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandListDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandListDUnitTest.java
@@ -19,12 +19,13 @@ import static org.apache.geode.distributed.ConfigurationProperties.GROUPS;
 import static org.apache.geode.distributed.ConfigurationProperties.REMOTE_LOCATORS;
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.createAndStartReceiver;
 import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.createSender;
-import static org.apache.geode.test.dunit.Assert.assertEquals;
-import static org.apache.geode.test.dunit.Assert.assertTrue;
-import static org.apache.geode.test.dunit.Assert.fail;
-import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
-import static org.apache.geode.test.dunit.Wait.pause;
+import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.getMember;
+import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.validateGatewayReceiverMXBeanProxy;
+import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.validateGatewaySenderMXBeanProxy;
+import static org.apache.geode.internal.cache.wan.wancommand.WANCommandUtils.validateMemberMXBeanProxy;
+import static org.assertj.core.api.Assertions.assertThat;
 
+import java.io.Serializable;
 import java.util.List;
 import java.util.Properties;
 
@@ -45,15 +46,14 @@ import org.apache.geode.test.junit.categories.WanTest;
 import org.apache.geode.test.junit.rules.GfshCommandRule;
 
 @Category({DistributedTest.class, WanTest.class})
-public class WanCommandListDUnitTest {
-
-  private static final long serialVersionUID = 1L;
+@SuppressWarnings("serial")
+public class WanCommandListDUnitTest implements Serializable {
 
   @Rule
-  public ClusterStartupRule clusterStartupRule = new ClusterStartupRule();
+  public ClusterStartupRule clusterStartupRule = new ClusterStartupRule(8);
 
   @Rule
-  public GfshCommandRule gfsh = new GfshCommandRule();
+  public transient GfshCommandRule gfsh = new GfshCommandRule();
 
   private MemberVM locatorSite1;
   private MemberVM locatorSite2;
@@ -75,7 +75,6 @@ public class WanCommandListDUnitTest {
     locatorSite2 = clusterStartupRule.startLocatorVM(2, props);
 
     gfsh.connectAndVerify(locatorSite1);
-
   }
 
   @Test
@@ -87,16 +86,14 @@ public class WanCommandListDUnitTest {
     server2 = clusterStartupRule.startServerVM(4, lnPort);
     server3 = clusterStartupRule.startServerVM(5, lnPort);
 
-    pause(10000);
+    locatorSite1.invoke(() -> validateMemberMXBeanProxy(getMember(server1.getVM())));
+    locatorSite1.invoke(() -> validateMemberMXBeanProxy(getMember(server2.getVM())));
+    locatorSite1.invoke(() -> validateMemberMXBeanProxy(getMember(server3.getVM())));
+
     String command = CliStrings.LIST_GATEWAY;
     CommandResult cmdResult = gfsh.executeCommand(command);
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testListGatewaySender : : " + strCmdResult);
-      assertEquals(Result.Status.ERROR, cmdResult.getStatus());
-    } else {
-      fail("testListGatewaySender failed as did not get CommandResult");
-    }
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.ERROR);
   }
 
   @Test
@@ -126,28 +123,38 @@ public class WanCommandListDUnitTest {
 
     server3.invoke(() -> createSender("ln_Serial", 2, false, 100, 400, false, false, null, false));
 
-    pause(10000);
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()),
+        "ln_Serial", true, false));
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()),
+        "ln_Parallel", true, false));
+
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()),
+        "ln_Serial", true, false));
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()),
+        "ln_Parallel", true, false));
+
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()),
+        "ln_Serial", true, false));
+
+    locatorSite2.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server4.getVM()), true));
+    locatorSite2.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server5.getVM()), true));
+
     String command = CliStrings.LIST_GATEWAY;
     CommandResult cmdResult = gfsh.executeCommand(command);
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testListGatewaySender" + strCmdResult);
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-
-      TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER)
-          .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
-      List<String> result_senderIds =
-          tableResultData.retrieveAllValues(CliStrings.RESULT_GATEWAY_SENDER_ID);
-      assertTrue(result_senderIds.contains("ln_Serial"));
-      assertTrue(result_senderIds.contains("ln_Parallel"));
-      assertEquals(5, result_senderIds.size());
-
-      assertEquals(null, ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER));
-    } else {
-      fail("testListGatewaySender failed as did not get CommandResult");
-    }
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER)
+        .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
+    List<String> result_senderIds =
+        tableResultData.retrieveAllValues(CliStrings.RESULT_GATEWAY_SENDER_ID);
+    assertThat(result_senderIds).contains("ln_Serial");
+    assertThat(result_senderIds).contains("ln_Parallel");
+    assertThat(result_senderIds).hasSize(5);
+
+    assertThat(((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER)).isNull();
   }
 
   @Test
@@ -170,27 +177,33 @@ public class WanCommandListDUnitTest {
     server4.invoke(() -> createSender("ln_Serial", 1, false, 100, 400, false, false, null, false));
     server4.invoke(() -> createSender("ln_Parallel", 1, true, 100, 400, false, false, null, false));
 
-    pause(10000);
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server1.getVM()), true));
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server2.getVM()), true));
+
+    locatorSite2.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server3.getVM()),
+        "ln_Serial", true, false));
+    locatorSite2.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server4.getVM()),
+        "ln_Serial", true, false));
+    locatorSite2.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server4.getVM()),
+        "ln_Parallel", true, false));
+
     String command = CliStrings.LIST_GATEWAY;
     CommandResult cmdResult = gfsh.executeCommand(command);
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testListGatewayReceiver" + strCmdResult);
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-
-      TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER)
-          .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
-      List<String> ports = tableResultData.retrieveAllValues(CliStrings.RESULT_PORT);
-      assertEquals(2, ports.size());
-      List<String> hosts = tableResultData.retrieveAllValues(CliStrings.RESULT_HOST_MEMBER);
-      assertEquals(2, hosts.size());
-
-      assertEquals(null, ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER));
-    } else {
-      fail("testListGatewayReceiver failed as did not get CommandResult");
-    }
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER)
+        .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
+
+    List<String> ports = tableResultData.retrieveAllValues(CliStrings.RESULT_PORT);
+    assertThat(ports).hasSize(2);
+
+    List<String> hosts = tableResultData.retrieveAllValues(CliStrings.RESULT_HOST_MEMBER);
+    assertThat(hosts).hasSize(2);
+
+    assertThat(((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER)).isNull();
   }
 
   @Test
@@ -220,40 +233,52 @@ public class WanCommandListDUnitTest {
     server5.invoke(() -> createSender("ln_Serial", 1, false, 100, 400, false, false, null, false));
     server5.invoke(() -> createSender("ln_Parallel", 1, true, 100, 400, false, false, null, false));
 
-    pause(10000);
+    locatorSite2.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server4.getVM()), true));
+
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()),
+        "ln_Serial", true, false));
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()),
+        "ln_Parallel", true, false));
+
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()),
+        "ln_Serial", true, false));
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()),
+        "ln_Parallel", true, false));
+
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server3.getVM()), true));
+
+    locatorSite2.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server5.getVM()),
+        "ln_Serial", true, false));
+    locatorSite2.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server5.getVM()),
+        "ln_Parallel", true, false));
+
     String command = CliStrings.LIST_GATEWAY;
     CommandResult cmdResult = gfsh.executeCommand(command);
-
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testListGatewaySenderGatewayReceiver : " + strCmdResult);
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-
-      TabularResultData tableSenderResultData = ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER)
-          .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
-      List<String> senders =
-          tableSenderResultData.retrieveAllValues(CliStrings.RESULT_GATEWAY_SENDER_ID);
-      assertEquals(4, senders.size());
-      List<String> hosts = tableSenderResultData.retrieveAllValues(CliStrings.RESULT_HOST_MEMBER);
-      assertEquals(4, hosts.size());
-
-
-      TabularResultData tableReceiverResultData = ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER)
-          .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
-      List<String> ports = tableReceiverResultData.retrieveAllValues(CliStrings.RESULT_PORT);
-      assertEquals(1, ports.size());
-      hosts = tableReceiverResultData.retrieveAllValues(CliStrings.RESULT_HOST_MEMBER);
-      assertEquals(1, hosts.size());
-    } else {
-      fail("testListGatewaySenderGatewayReceiver failed as did not get CommandResult");
-    }
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    TabularResultData tableSenderResultData = ((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER)
+        .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
+    List<String> senders =
+        tableSenderResultData.retrieveAllValues(CliStrings.RESULT_GATEWAY_SENDER_ID);
+    assertThat(senders).hasSize(4);
+
+    List<String> hosts = tableSenderResultData.retrieveAllValues(CliStrings.RESULT_HOST_MEMBER);
+    assertThat(hosts).hasSize(4);
+
+    TabularResultData tableReceiverResultData = ((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER)
+        .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
+    List<String> ports = tableReceiverResultData.retrieveAllValues(CliStrings.RESULT_PORT);
+    assertThat(ports).hasSize(1);
+
+    hosts = tableReceiverResultData.retrieveAllValues(CliStrings.RESULT_HOST_MEMBER);
+    assertThat(hosts).hasSize(1);
   }
 
   @Test
   public void testListGatewaySenderGatewayReceiver_group() throws Exception {
-
     Integer lnPort = locatorSite1.getPort();
     Integer nyPort = locatorSite2.getPort();
 
@@ -280,121 +305,107 @@ public class WanCommandListDUnitTest {
     server5.invoke(() -> createSender("ln_Serial", 1, false, 100, 400, false, false, null, false));
     server5.invoke(() -> createSender("ln_Parallel", 1, true, 100, 400, false, false, null, false));
 
-    pause(10000);
+    locatorSite2.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server4.getVM()), true));
+
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()),
+        "ln_Serial", true, false));
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server1.getVM()),
+        "ln_Parallel", true, false));
+
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()),
+        "ln_Parallel", true, false));
+    locatorSite1.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server2.getVM()),
+        "ln_Serial", true, false));
+
+    locatorSite1.invoke(() -> validateGatewayReceiverMXBeanProxy(getMember(server3.getVM()), true));
+
+    locatorSite2.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server5.getVM()),
+        "ln_Serial", true, false));
+    locatorSite2.invoke(() -> validateGatewaySenderMXBeanProxy(getMember(server5.getVM()),
+        "ln_Parallel", true, false));
+
     String command = CliStrings.LIST_GATEWAY + " --" + CliStrings.GROUP + "=Serial_Sender";
     CommandResult cmdResult = gfsh.executeCommand(command);
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testListGatewaySenderGatewayReceiver_group : " + strCmdResult);
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-
-      TabularResultData tableSenderResultData = ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER)
-          .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
-      List<String> senders =
-          tableSenderResultData.retrieveAllValues(CliStrings.RESULT_GATEWAY_SENDER_ID);
-      assertEquals(4, senders.size());
-      List<String> hosts = tableSenderResultData.retrieveAllValues(CliStrings.RESULT_HOST_MEMBER);
-      assertEquals(4, hosts.size());
-
-    } else {
-      fail("testListGatewaySenderGatewayReceiver_group failed as did not get CommandResult");
-    }
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    TabularResultData tableSenderResultData = ((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER)
+        .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
+    List<String> senders =
+        tableSenderResultData.retrieveAllValues(CliStrings.RESULT_GATEWAY_SENDER_ID);
+    assertThat(senders).hasSize(4);
+    List<String> hosts = tableSenderResultData.retrieveAllValues(CliStrings.RESULT_HOST_MEMBER);
+    assertThat(hosts).hasSize(4);
 
     command = CliStrings.LIST_GATEWAY + " --" + CliStrings.GROUP + "=Parallel_Sender";
     cmdResult = gfsh.executeCommand(command);
-    if (cmdResult != null) {
-      TabularResultData tableSenderResultData = ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER)
-          .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
-      List<String> senders =
-          tableSenderResultData.retrieveAllValues(CliStrings.RESULT_GATEWAY_SENDER_ID);
-      assertEquals(5, senders.size());
-
-      TabularResultData tableReceiverResultData = ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER)
-          .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
-      List<String> ports = tableReceiverResultData.retrieveAllValues(CliStrings.RESULT_PORT);
-      assertEquals(1, ports.size());
-
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testListGatewaySenderGatewayReceiver_group : " + strCmdResult);
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-    } else {
-      fail("testListGatewaySenderGatewayReceiver_group failed as did not get CommandResult");
-    }
+    assertThat(cmdResult).isNotNull();
+
+    tableSenderResultData = ((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER)
+        .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
+    senders = tableSenderResultData.retrieveAllValues(CliStrings.RESULT_GATEWAY_SENDER_ID);
+    assertThat(senders).hasSize(5);
+
+    TabularResultData tableReceiverResultData = ((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER)
+        .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
+    List<String> ports = tableReceiverResultData.retrieveAllValues(CliStrings.RESULT_PORT);
+    assertThat(ports).hasSize(1);
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
 
     command = CliStrings.LIST_GATEWAY + " --" + CliStrings.GROUP + "=Receiver_Group";
     cmdResult = gfsh.executeCommand(command);
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testListGatewaySenderGatewayReceiver_group : " + strCmdResult);
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-
-      TabularResultData tableSenderResultData = ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER)
-          .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
-      List<String> senders =
-          tableSenderResultData.retrieveAllValues(CliStrings.RESULT_GATEWAY_SENDER_ID);
-      assertEquals(1, senders.size());
-
-      TabularResultData tableReceiverResultData = ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER)
-          .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
-      List<String> ports = tableReceiverResultData.retrieveAllValues(CliStrings.RESULT_PORT);
-      assertEquals(1, ports.size());
-
-    } else {
-      fail("testListGatewaySenderGatewayReceiver_group failed as did not get CommandResult");
-    }
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    tableSenderResultData = ((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER)
+        .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
+    senders = tableSenderResultData.retrieveAllValues(CliStrings.RESULT_GATEWAY_SENDER_ID);
+    assertThat(senders).hasSize(1);
+
+    tableReceiverResultData = ((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER)
+        .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
+    ports = tableReceiverResultData.retrieveAllValues(CliStrings.RESULT_PORT);
+    assertThat(ports).hasSize(1);
 
     command = CliStrings.LIST_GATEWAY + " --" + CliStrings.GROUP + "=Serial_Sender,Parallel_Sender";
     cmdResult = gfsh.executeCommand(command);
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testListGatewaySenderGatewayReceiver_group : " + strCmdResult);
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-
-      TabularResultData tableSenderResultData = ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER)
-          .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
-      List<String> senders =
-          tableSenderResultData.retrieveAllValues(CliStrings.RESULT_GATEWAY_SENDER_ID);
-      assertEquals(5, senders.size());
-
-      TabularResultData tableReceiverResultData = ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER)
-          .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
-      List<String> ports = tableReceiverResultData.retrieveAllValues(CliStrings.RESULT_PORT);
-      assertEquals(1, ports.size());
-    } else {
-      fail("testListGatewaySenderGatewayReceiver_group failed as did not get CommandResult");
-    }
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    tableSenderResultData = ((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER)
+        .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
+    senders = tableSenderResultData.retrieveAllValues(CliStrings.RESULT_GATEWAY_SENDER_ID);
+    assertThat(senders).hasSize(5);
+
+    tableReceiverResultData = ((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER)
+        .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
+    ports = tableReceiverResultData.retrieveAllValues(CliStrings.RESULT_PORT);
+    assertThat(ports).hasSize(1);
 
     command = CliStrings.LIST_GATEWAY + " --" + CliStrings.GROUP
         + "=Serial_Sender,Parallel_Sender,Receiver_Group";
     cmdResult = gfsh.executeCommand(command);
-    if (cmdResult != null) {
-      String strCmdResult = cmdResult.toString();
-      getLogWriter().info("testListGatewaySenderGatewayReceiver_group : " + strCmdResult);
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-
-      TabularResultData tableSenderResultData = ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER)
-          .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
-      List<String> senders =
-          tableSenderResultData.retrieveAllValues(CliStrings.RESULT_GATEWAY_SENDER_ID);
-      assertEquals(5, senders.size());
-
-      TabularResultData tableReceiverResultData = ((CompositeResultData) cmdResult.getResultData())
-          .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER)
-          .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
-      List<String> ports = tableReceiverResultData.retrieveAllValues(CliStrings.RESULT_PORT);
-      assertEquals(1, ports.size());
-
-    } else {
-      fail("testListGatewaySenderGatewayReceiver_group failed as did not get CommandResult");
-    }
+    assertThat(cmdResult).isNotNull();
+    assertThat(cmdResult.getStatus()).isSameAs(Result.Status.OK);
+
+    tableSenderResultData = ((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER)
+        .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
+    senders = tableSenderResultData.retrieveAllValues(CliStrings.RESULT_GATEWAY_SENDER_ID);
+    assertThat(senders).hasSize(5);
+
+    tableReceiverResultData = ((CompositeResultData) cmdResult.getResultData())
+        .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER)
+        .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
+    ports = tableReceiverResultData.retrieveAllValues(CliStrings.RESULT_PORT);
+    assertThat(ports).hasSize(1);
   }
 
   private MemberVM startServerWithGroups(int index, String groups, int locPort) throws Exception {
diff --git a/geode-wan/src/test/java/org/apache/geode/management/internal/cli/commands/DescribeRegionDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/management/internal/cli/commands/DescribeRegionDUnitTest.java
index 9e12282..35e70e3 100644
--- a/geode-wan/src/test/java/org/apache/geode/management/internal/cli/commands/DescribeRegionDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/management/internal/cli/commands/DescribeRegionDUnitTest.java
@@ -33,7 +33,7 @@ import org.apache.geode.test.junit.rules.GfshCommandRule;
 public class DescribeRegionDUnitTest {
 
   @ClassRule
-  public static ClusterStartupRule lsRule = new ClusterStartupRule();
+  public static ClusterStartupRule lsRule = new ClusterStartupRule(5);
 
   @ClassRule
   public static GfshCommandRule gfsh = new GfshCommandRule();

-- 
To stop receiving notification emails like this one, please contact
klund@apache.org.

[geode] 08/08: GEODE-4820: use RestoreSystemProperties instead of DistributedRestoreSystemProperties

Posted by kl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

klund pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git

commit 62f83e32574a1d4300715c4ebc686e77e167c71b
Author: Kirk Lund <kl...@apache.org>
AuthorDate: Fri Mar 16 10:16:04 2018 -0700

    GEODE-4820: use RestoreSystemProperties instead of DistributedRestoreSystemProperties
    
    Update TODO comment and minor cleanup.
---
 .../cache/ha/BlockingHARegionQueueJUnitTest.java   |  24 +--
 .../internal/cache/ha/HARegionQueueJUnitTest.java  | 220 ++++++++++-----------
 2 files changed, 116 insertions(+), 128 deletions(-)

diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/ha/BlockingHARegionQueueJUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/ha/BlockingHARegionQueueJUnitTest.java
index b529f0c..eab3cb4 100755
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/ha/BlockingHARegionQueueJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/ha/BlockingHARegionQueueJUnitTest.java
@@ -14,13 +14,13 @@
  */
 package org.apache.geode.internal.cache.ha;
 
-import static org.hamcrest.CoreMatchers.*;
-import static org.junit.Assert.*;
+import static org.awaitility.Awaitility.await;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.assertThat;
 
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-import org.awaitility.Awaitility;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -50,7 +50,7 @@ public class BlockingHARegionQueueJUnitTest extends HARegionQueueJUnitTest {
     HARegionQueueAttributes hrqa = new HARegionQueueAttributes();
     hrqa.setBlockingQueueCapacity(1);
 
-    HARegionQueue hrq = createHARegionQueue(this.testName.getMethodName(), hrqa);
+    HARegionQueue hrq = createHARegionQueue(testName.getMethodName(), hrqa);
     hrq.setPrimary(true); // fix for 40314 - capacity constraint is checked for primary only.
 
     EventID id1 = new EventID(new byte[] {1}, 1, 1);
@@ -69,12 +69,12 @@ public class BlockingHARegionQueueJUnitTest extends HARegionQueueJUnitTest {
     });
     thread.start();
 
-    Awaitility.await().atMost(1, TimeUnit.MINUTES).until(() -> threadStarted.get());
+    await().atMost(1, TimeUnit.MINUTES).until(() -> threadStarted.get());
 
     Conflatable conf = (Conflatable) hrq.take();
     assertThat(conf, notNullValue());
 
-    Awaitility.await().atMost(1, TimeUnit.MINUTES).until(() -> !thread.isAlive());
+    await().atMost(1, TimeUnit.MINUTES).until(() -> !thread.isAlive());
   }
 
   /**
@@ -86,7 +86,7 @@ public class BlockingHARegionQueueJUnitTest extends HARegionQueueJUnitTest {
     HARegionQueueAttributes hrqa = new HARegionQueueAttributes();
     hrqa.setBlockingQueueCapacity(1);
 
-    HARegionQueue hrq = createHARegionQueue(this.testName.getMethodName(), hrqa);
+    HARegionQueue hrq = createHARegionQueue(testName.getMethodName(), hrqa);
     hrq.setPrimary(true);// fix for 40314 - capacity constraint is checked for primary only.
 
     EventID id1 = new EventID(new byte[] {1}, 1, 1);
@@ -105,14 +105,14 @@ public class BlockingHARegionQueueJUnitTest extends HARegionQueueJUnitTest {
     });
     thread.start();
 
-    Awaitility.await().atMost(1, TimeUnit.MINUTES).until(() -> threadStarted.get());
+    await().atMost(1, TimeUnit.MINUTES).until(() -> threadStarted.get());
 
     Conflatable conf = (Conflatable) hrq.peek();
     assertThat(conf, notNullValue());
 
     hrq.remove();
 
-    Awaitility.await().atMost(1, TimeUnit.MINUTES).until(() -> !thread.isAlive());
+    await().atMost(1, TimeUnit.MINUTES).until(() -> !thread.isAlive());
   }
 
   /**
@@ -128,7 +128,7 @@ public class BlockingHARegionQueueJUnitTest extends HARegionQueueJUnitTest {
     hrqa.setBlockingQueueCapacity(1);
     hrqa.setExpiryTime(1);
 
-    HARegionQueue hrq = this.createHARegionQueue(this.testName.getMethodName(), hrqa);
+    HARegionQueue hrq = createHARegionQueue(testName.getMethodName(), hrqa);
 
     EventID id1 = new EventID(new byte[] {1}, 1, 1);
 
@@ -147,8 +147,8 @@ public class BlockingHARegionQueueJUnitTest extends HARegionQueueJUnitTest {
     });
     thread.start();
 
-    Awaitility.await().atMost(1, TimeUnit.MINUTES).until(() -> threadStarted.get());
+    await().atMost(1, TimeUnit.MINUTES).until(() -> threadStarted.get());
 
-    Awaitility.await().atMost(1, TimeUnit.MINUTES).until(() -> !thread.isAlive());
+    await().atMost(1, TimeUnit.MINUTES).until(() -> !thread.isAlive());
   }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/ha/HARegionQueueJUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/ha/HARegionQueueJUnitTest.java
index 65bb80a..bce4688 100755
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/ha/HARegionQueueJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/ha/HARegionQueueJUnitTest.java
@@ -14,10 +14,15 @@
  */
 package org.apache.geode.internal.cache.ha;
 
-import static org.apache.geode.distributed.ConfigurationProperties.*;
-import static org.hamcrest.CoreMatchers.*;
-import static org.hamcrest.number.OrderingComparison.*;
-import static org.junit.Assert.*;
+import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.not;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.hamcrest.CoreMatchers.sameInstance;
+import static org.hamcrest.number.OrderingComparison.greaterThanOrEqualTo;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.fail;
 
 import java.io.IOException;
 import java.util.Collections;
@@ -37,6 +42,7 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.contrib.java.lang.system.RestoreSystemProperties;
 import org.junit.experimental.categories.Category;
 import org.junit.rules.ErrorCollector;
 import org.junit.rules.TestName;
@@ -53,7 +59,6 @@ import org.apache.geode.internal.cache.EventID;
 import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.internal.cache.RegionQueue;
 import org.apache.geode.test.dunit.ThreadUtils;
-import org.apache.geode.test.dunit.rules.DistributedRestoreSystemProperties;
 import org.apache.geode.test.junit.categories.ClientSubscriptionTest;
 import org.apache.geode.test.junit.categories.IntegrationTest;
 
@@ -61,7 +66,8 @@ import org.apache.geode.test.junit.categories.IntegrationTest;
  * This is a test for the APIs of a HARegionQueue and verifies that the head, tail and size counters
  * are updated properly.
  *
- * TODO: need to rewrite a bunch of tests in HARegionQueueJUnitTest
+ * <p>
+ * TODO: use ExecutorServiceRule instead of raw threads (move CyclicBarrier into rule if needed)
  */
 @Category({IntegrationTest.class, ClientSubscriptionTest.class})
 public class HARegionQueueJUnitTest {
@@ -76,8 +82,7 @@ public class HARegionQueueJUnitTest {
   private HARegionQueue haRegionQueue;
 
   @Rule
-  public DistributedRestoreSystemProperties restoreSystemProperties =
-      new DistributedRestoreSystemProperties();
+  public RestoreSystemProperties restoreSystemProperties = new RestoreSystemProperties();
 
   @Rule
   public ErrorCollector errorCollector = new ErrorCollector();
@@ -87,12 +92,12 @@ public class HARegionQueueJUnitTest {
 
   @Before
   public void setUp() throws Exception {
-    this.cache = createCache();
+    cache = createCache();
   }
 
   @After
   public void tearDown() throws Exception {
-    this.cache.close();
+    cache.close();
     hrqForTestSafeConflationRemoval = null;
   }
 
@@ -105,10 +110,10 @@ public class HARegionQueueJUnitTest {
    */
   @Test
   public void testQueuePutWithoutConflation() throws Exception {
-    this.haRegionQueue = createHARegionQueue(this.testName.getMethodName());
+    haRegionQueue = createHARegionQueue(testName.getMethodName());
     int putPerProducer = 20;
     createAndRunProducers(false, false, false, putPerProducer);
-    assertThat(this.haRegionQueue.size(), is(putPerProducer * TOTAL_PUT_THREADS));
+    assertThat(haRegionQueue.size(), is(putPerProducer * TOTAL_PUT_THREADS));
   }
 
   /**
@@ -121,10 +126,10 @@ public class HARegionQueueJUnitTest {
    */
   @Test
   public void testQueuePutWithConflation() throws Exception {
-    this.haRegionQueue = createHARegionQueue(this.testName.getMethodName());
+    haRegionQueue = createHARegionQueue(testName.getMethodName());
     int putPerProducer = 20;
     createAndRunProducers(true, false, true, putPerProducer);
-    assertThat(this.haRegionQueue.size(), is(putPerProducer));
+    assertThat(haRegionQueue.size(), is(putPerProducer));
   }
 
   /**
@@ -137,10 +142,10 @@ public class HARegionQueueJUnitTest {
    */
   @Test
   public void testQueuePutWithDuplicates() throws Exception {
-    this.haRegionQueue = createHARegionQueue(this.testName.getMethodName());
+    haRegionQueue = createHARegionQueue(testName.getMethodName());
     int putPerProducer = 20;
     createAndRunProducers(false, false, true, putPerProducer);
-    assertThat(this.haRegionQueue.size(), is(putPerProducer * TOTAL_PUT_THREADS));
+    assertThat(haRegionQueue.size(), is(putPerProducer * TOTAL_PUT_THREADS));
   }
 
   /*
@@ -148,11 +153,11 @@ public class HARegionQueueJUnitTest {
    */
   @Test
   public void testAddDispatchedMessageObject() throws Exception {
-    this.haRegionQueue = createHARegionQueue(this.testName.getMethodName());
+    haRegionQueue = createHARegionQueue(testName.getMethodName());
     assertThat(HARegionQueue.getDispatchedMessagesMapForTesting().isEmpty(), is(true));
 
-    this.haRegionQueue.addDispatchedMessage(new ThreadIdentifier(new byte[1], 1), 1);
-    this.haRegionQueue.addDispatchedMessage(new ThreadIdentifier(new byte[1], 2), 2);
+    haRegionQueue.addDispatchedMessage(new ThreadIdentifier(new byte[1], 1), 1);
+    haRegionQueue.addDispatchedMessage(new ThreadIdentifier(new byte[1], 2), 2);
 
     assertThat(!HARegionQueue.getDispatchedMessagesMapForTesting().isEmpty(), is(true));
   }
@@ -162,8 +167,8 @@ public class HARegionQueueJUnitTest {
    */
   @Test
   public void testBlockQueue() throws Exception {
-    HARegionQueue regionQueue = HARegionQueue.getHARegionQueueInstance(
-        this.testName.getMethodName(), this.cache, HARegionQueue.BLOCKING_HA_QUEUE, false);
+    HARegionQueue regionQueue = HARegionQueue.getHARegionQueueInstance(testName.getMethodName(),
+        cache, HARegionQueue.BLOCKING_HA_QUEUE, false);
     Thread[] threads = new Thread[10];
     int threadsLength = threads.length;
     CyclicBarrier barrier = new CyclicBarrier(threadsLength + 1);
@@ -202,8 +207,7 @@ public class HARegionQueueJUnitTest {
     Thread.sleep(5000);
 
     EventID id = new EventID(new byte[] {1}, 1, 1);
-    regionQueue
-        .put(new ConflatableObject("key", "value", id, false, this.testName.getMethodName()));
+    regionQueue.put(new ConflatableObject("key", "value", id, false, testName.getMethodName()));
 
     long startTime = System.currentTimeMillis();
     for (Thread thread : threads) {
@@ -225,13 +229,13 @@ public class HARegionQueueJUnitTest {
     HARegionQueueAttributes haa = new HARegionQueueAttributes();
     haa.setExpiryTime(1);
 
-    HARegionQueue regionQueue = createHARegionQueue(this.testName.getMethodName(), haa);
+    HARegionQueue regionQueue = createHARegionQueue(testName.getMethodName(), haa);
     long start = System.currentTimeMillis();
 
     regionQueue.put(new ConflatableObject("key", "value", new EventID(new byte[] {1}, 1, 1), true,
-        this.testName.getMethodName()));
+        testName.getMethodName()));
 
-    Map map = (Map) regionQueue.getConflationMapForTesting().get(this.testName.getMethodName());
+    Map map = (Map) regionQueue.getConflationMapForTesting().get(testName.getMethodName());
     waitAtLeast(1000, start, () -> {
       assertThat(map, is(Collections.emptyMap()));
       assertThat(regionQueue.getRegion().keys(), is(Collections.emptySet()));
@@ -246,14 +250,14 @@ public class HARegionQueueJUnitTest {
     HARegionQueueAttributes haa = new HARegionQueueAttributes();
     haa.setExpiryTime(1);
 
-    HARegionQueue regionQueue = createHARegionQueue(this.testName.getMethodName(), haa);
+    HARegionQueue regionQueue = createHARegionQueue(testName.getMethodName(), haa);
     long start = System.currentTimeMillis();
 
     regionQueue.put(new ConflatableObject("key", "value", new EventID(new byte[] {1}, 1, 1), true,
-        this.testName.getMethodName()));
+        testName.getMethodName()));
 
     regionQueue.put(new ConflatableObject("key", "newValue", new EventID(new byte[] {1}, 1, 2),
-        true, this.testName.getMethodName()));
+        true, testName.getMethodName()));
 
     assertThat(
         " Expected region size not to be zero since expiry time has not been exceeded but it is not so ",
@@ -263,10 +267,9 @@ public class HARegionQueueJUnitTest {
         !regionQueue.getAvalaibleIds().isEmpty(), is(true));
     assertThat(
         " Expected conflation map size not  to be zero since expiry time has not been exceeded but it is not so "
-            + ((Map) regionQueue.getConflationMapForTesting().get(this.testName.getMethodName()))
+            + ((Map) regionQueue.getConflationMapForTesting().get(testName.getMethodName()))
                 .get("key"),
-        ((Map) regionQueue.getConflationMapForTesting().get(this.testName.getMethodName()))
-            .get("key"),
+        ((Map) regionQueue.getConflationMapForTesting().get(testName.getMethodName())).get("key"),
         not(sameInstance(null)));
     assertThat(
         " Expected eventID map size not to be zero since expiry time has not been exceeded but it is not so ",
@@ -275,7 +278,7 @@ public class HARegionQueueJUnitTest {
     waitAtLeast(1000, start, () -> {
       assertThat(regionQueue.getRegion().keys(), is(Collections.emptySet()));
       assertThat(regionQueue.getAvalaibleIds(), is(Collections.emptySet()));
-      assertThat(regionQueue.getConflationMapForTesting().get(this.testName.getMethodName()),
+      assertThat(regionQueue.getConflationMapForTesting().get(testName.getMethodName()),
           is(Collections.emptyMap()));
       assertThat(regionQueue.getEventsMapForTesting(), is(Collections.emptyMap()));
     });
@@ -289,13 +292,11 @@ public class HARegionQueueJUnitTest {
     HARegionQueueAttributes haa = new HARegionQueueAttributes();
     haa.setExpiryTime(45);
 
-    HARegionQueue regionQueue = createHARegionQueue(this.testName.getMethodName(), haa);
+    HARegionQueue regionQueue = createHARegionQueue(testName.getMethodName(), haa);
     EventID ev1 = new EventID(new byte[] {1}, 1, 1);
     EventID ev2 = new EventID(new byte[] {1}, 1, 2);
-    Conflatable cf1 =
-        new ConflatableObject("key", "value", ev1, true, this.testName.getMethodName());
-    Conflatable cf2 =
-        new ConflatableObject("key", "value2", ev2, true, this.testName.getMethodName());
+    Conflatable cf1 = new ConflatableObject("key", "value", ev1, true, testName.getMethodName());
+    Conflatable cf2 = new ConflatableObject("key", "value2", ev2, true, testName.getMethodName());
 
     regionQueue.put(cf1);
     long tailKey = regionQueue.tailKey.get();
@@ -324,11 +325,11 @@ public class HARegionQueueJUnitTest {
    */
   @Test
   public void testQRMComingBeforeLocalPut() throws Exception {
-    HARegionQueue regionQueue = createHARegionQueue(this.testName.getMethodName());
+    HARegionQueue regionQueue = createHARegionQueue(testName.getMethodName());
     EventID id = new EventID(new byte[] {1}, 1, 1);
 
     regionQueue.removeDispatchedEvents(id);
-    regionQueue.put(new ConflatableObject("key", "value", id, true, this.testName.getMethodName()));
+    regionQueue.put(new ConflatableObject("key", "value", id, true, testName.getMethodName()));
 
     assertThat(" Expected key to be null since QRM for the message id had already arrived ",
         !regionQueue.getRegion().containsKey(1L), is(true));
@@ -342,7 +343,7 @@ public class HARegionQueueJUnitTest {
     HARegionQueueAttributes harqAttr = new HARegionQueueAttributes();
     harqAttr.setExpiryTime(1);
 
-    HARegionQueue regionQueue = createHARegionQueue(this.testName.getMethodName(), harqAttr);
+    HARegionQueue regionQueue = createHARegionQueue(testName.getMethodName(), harqAttr);
     EventID id = new EventID(new byte[] {1}, 1, 1);
     long start = System.currentTimeMillis();
 
@@ -363,9 +364,9 @@ public class HARegionQueueJUnitTest {
    */
   @Test
   public void testPutPath() throws Exception {
-    HARegionQueue regionQueue = createHARegionQueue(this.testName.getMethodName());
+    HARegionQueue regionQueue = createHARegionQueue(testName.getMethodName());
     Conflatable cf = new ConflatableObject("key", "value", new EventID(new byte[] {1}, 1, 1), true,
-        this.testName.getMethodName());
+        testName.getMethodName());
 
     regionQueue.put(cf);
 
@@ -375,8 +376,7 @@ public class HARegionQueueJUnitTest {
         !regionQueue.getAvalaibleIds().isEmpty(), is(true));
     assertThat(
         " Expected conflation map to have entry for this key since expiry time has not been exceeded but it is not so ",
-        ((Map) regionQueue.getConflationMapForTesting().get(this.testName.getMethodName()))
-            .get("key"),
+        ((Map) regionQueue.getConflationMapForTesting().get(testName.getMethodName())).get("key"),
         is(1L));
     assertThat(
         " Expected eventID map size not to be zero since expiry time has not been exceeded but it is not so ",
@@ -389,13 +389,13 @@ public class HARegionQueueJUnitTest {
    */
   @Test
   public void testQRMDispatch() throws Exception {
-    HARegionQueue regionQueue = createHARegionQueue(this.testName.getMethodName());
+    HARegionQueue regionQueue = createHARegionQueue(testName.getMethodName());
     Conflatable[] cf = new Conflatable[10];
 
     // put 10 conflatable objects
     for (int i = 0; i < 10; i++) {
       cf[i] = new ConflatableObject("key" + i, "value", new EventID(new byte[] {1}, 1, i), true,
-          this.testName.getMethodName());
+          testName.getMethodName());
       regionQueue.put(cf[i]);
     }
 
@@ -414,15 +414,13 @@ public class HARegionQueueJUnitTest {
 
     // verify 1-5 not in conflation map
     for (int i = 0; i < 5; i++) {
-      assertThat(
-          !((Map) regionQueue.getConflationMapForTesting().get(this.testName.getMethodName()))
-              .containsKey("key" + i),
-          is(true));
+      assertThat(!((Map) regionQueue.getConflationMapForTesting().get(testName.getMethodName()))
+          .containsKey("key" + i), is(true));
     }
 
     // verify 6-10 in conflation map
     for (int i = 5; i < 10; i++) {
-      assertThat(((Map) regionQueue.getConflationMapForTesting().get(this.testName.getMethodName()))
+      assertThat(((Map) regionQueue.getConflationMapForTesting().get(testName.getMethodName()))
           .containsKey("key" + i), is(true));
     }
 
@@ -455,7 +453,7 @@ public class HARegionQueueJUnitTest {
    */
   @Test
   public void testQRMBeforePut() throws Exception {
-    HARegionQueue regionQueue = createHARegionQueue(this.testName.getMethodName());
+    HARegionQueue regionQueue = createHARegionQueue(testName.getMethodName());
 
     EventID[] ids = new EventID[10];
 
@@ -469,8 +467,7 @@ public class HARegionQueueJUnitTest {
 
     // put 10 conflatable objects
     for (int i = 0; i < 10; i++) {
-      cf[i] =
-          new ConflatableObject("key" + i, "value", ids[i], true, this.testName.getMethodName());
+      cf[i] = new ConflatableObject("key" + i, "value", ids[i], true, testName.getMethodName());
       regionQueue.put(cf[i]);
     }
 
@@ -490,15 +487,13 @@ public class HARegionQueueJUnitTest {
 
     // verify 1-8 not in conflation map
     for (int i = 0; i < 7; i++) {
-      assertThat(
-          !((Map) regionQueue.getConflationMapForTesting().get(this.testName.getMethodName()))
-              .containsKey("key" + i),
-          is(true));
+      assertThat(!((Map) regionQueue.getConflationMapForTesting().get(testName.getMethodName()))
+          .containsKey("key" + i), is(true));
     }
 
     // verify 8-10 in conflation map
     for (int i = 7; i < 10; i++) {
-      assertThat(((Map) regionQueue.getConflationMapForTesting().get(this.testName.getMethodName()))
+      assertThat(((Map) regionQueue.getConflationMapForTesting().get(testName.getMethodName()))
           .containsKey("key" + i), is(true));
     }
 
@@ -530,22 +525,20 @@ public class HARegionQueueJUnitTest {
    */
   @Test
   public void testConflation() throws Exception {
-    HARegionQueue regionQueue = createHARegionQueue(this.testName.getMethodName());
+    HARegionQueue regionQueue = createHARegionQueue(testName.getMethodName());
     EventID ev1 = new EventID(new byte[] {1}, 1, 1);
     EventID ev2 = new EventID(new byte[] {1}, 2, 2);
-    Conflatable cf1 =
-        new ConflatableObject("key", "value", ev1, true, this.testName.getMethodName());
-    Conflatable cf2 =
-        new ConflatableObject("key", "value2", ev2, true, this.testName.getMethodName());
+    Conflatable cf1 = new ConflatableObject("key", "value", ev1, true, testName.getMethodName());
+    Conflatable cf2 = new ConflatableObject("key", "value2", ev2, true, testName.getMethodName());
     regionQueue.put(cf1);
 
     Map conflationMap = regionQueue.getConflationMapForTesting();
-    assertThat(((Map) conflationMap.get(this.testName.getMethodName())).get("key"), is(1L));
+    assertThat(((Map) conflationMap.get(testName.getMethodName())).get("key"), is(1L));
 
     regionQueue.put(cf2);
 
     // verify the conflation map has recorded the new key
-    assertThat(((Map) conflationMap.get(this.testName.getMethodName())).get("key"), is(2L));
+    assertThat(((Map) conflationMap.get(testName.getMethodName())).get("key"), is(2L));
     // the old key should not be present
     assertThat(!regionQueue.getRegion().containsKey(1L), is(true));
     // available ids should not contain the old id (the old position)
@@ -564,17 +557,17 @@ public class HARegionQueueJUnitTest {
    */
   @Test
   public void testQRM() throws Exception {
-    RegionQueue regionqueue = createHARegionQueue(this.testName.getMethodName());
+    RegionQueue regionqueue = createHARegionQueue(testName.getMethodName());
 
     for (int i = 0; i < 10; ++i) {
       regionqueue.put(new ConflatableObject("key" + (i + 1), "value",
-          new EventID(new byte[] {1}, 1, i + 1), true, this.testName.getMethodName()));
+          new EventID(new byte[] {1}, 1, i + 1), true, testName.getMethodName()));
     }
 
     EventID qrmID = new EventID(new byte[] {1}, 1, 5);
     ((HARegionQueue) regionqueue).removeDispatchedEvents(qrmID);
     Map conflationMap = ((HARegionQueue) regionqueue).getConflationMapForTesting();
-    assertThat(((Map) conflationMap.get(this.testName.getMethodName())).size(), is(5));
+    assertThat(((Map) conflationMap.get(testName.getMethodName())).size(), is(5));
 
     Set availableIDs = ((HARegionQueue) regionqueue).getAvalaibleIds();
     Set counters = ((HARegionQueue) regionqueue).getCurrentCounterSet(qrmID);
@@ -583,8 +576,7 @@ public class HARegionQueueJUnitTest {
     assertThat(counters.size(), is(5));
 
     for (int i = 5; i < 10; ++i) {
-      assertThat(
-          ((Map) (conflationMap.get(this.testName.getMethodName()))).containsKey("key" + (i + 1)),
+      assertThat(((Map) (conflationMap.get(testName.getMethodName()))).containsKey("key" + (i + 1)),
           is(true));
       assertThat(availableIDs.contains((long) (i + 1)), is(true));
       assertThat(counters.contains((long) (i + 1)), is(true));
@@ -600,7 +592,7 @@ public class HARegionQueueJUnitTest {
    */
   @Test
   public void testSafeConflationRemoval() throws Exception {
-    hrqForTestSafeConflationRemoval = new HARQTestClass("testSafeConflationRemoval", this.cache);
+    hrqForTestSafeConflationRemoval = new HARQTestClass("testSafeConflationRemoval", cache);
     Conflatable cf1 = new ConflatableObject("key1", "value", new EventID(new byte[] {1}, 1, 1),
         true, "testSafeConflationRemoval");
 
@@ -635,7 +627,7 @@ public class HARegionQueueJUnitTest {
   @Test
   public void testConcurrentDispatcherAndRemovalForSameRegionSameThreadId() throws Exception {
     long numberOfIterations = 1000;
-    HARegionQueue hrq = createHARegionQueue(this.testName.getMethodName());
+    HARegionQueue hrq = createHARegionQueue(testName.getMethodName());
     HARegionQueue.stopQRMThread();
     ThreadIdentifier[] ids = new ThreadIdentifier[(int) numberOfIterations];
 
@@ -735,7 +727,7 @@ public class HARegionQueueJUnitTest {
   @Test
   public void testConcurrentDispatcherAndRemovalForSameRegionDifferentThreadId() throws Exception {
     int numberOfIterations = 1000;
-    HARegionQueue hrq = createHARegionQueue(this.testName.getMethodName());
+    HARegionQueue hrq = createHARegionQueue(testName.getMethodName());
     HARegionQueue.stopQRMThread();
     ThreadIdentifier[] ids = new ThreadIdentifier[(int) numberOfIterations];
 
@@ -831,11 +823,11 @@ public class HARegionQueueJUnitTest {
   @Test
   public void testConcurrentDispatcherAndRemovalForMultipleRegionsSameThreadId() throws Exception {
     int numberOfIterations = 10000;
-    HARegionQueue hrq1 = createHARegionQueue(this.testName.getMethodName() + "-1");
-    HARegionQueue hrq2 = createHARegionQueue(this.testName.getMethodName() + "-2");
-    HARegionQueue hrq3 = createHARegionQueue(this.testName.getMethodName() + "-3");
-    HARegionQueue hrq4 = createHARegionQueue(this.testName.getMethodName() + "-4");
-    HARegionQueue hrq5 = createHARegionQueue(this.testName.getMethodName() + "-5");
+    HARegionQueue hrq1 = createHARegionQueue(testName.getMethodName() + "-1");
+    HARegionQueue hrq2 = createHARegionQueue(testName.getMethodName() + "-2");
+    HARegionQueue hrq3 = createHARegionQueue(testName.getMethodName() + "-3");
+    HARegionQueue hrq4 = createHARegionQueue(testName.getMethodName() + "-4");
+    HARegionQueue hrq5 = createHARegionQueue(testName.getMethodName() + "-5");
 
     HARegionQueue.stopQRMThread();
 
@@ -945,11 +937,11 @@ public class HARegionQueueJUnitTest {
   public void testConcurrentDispatcherAndRemovalForMultipleRegionsDifferentThreadId()
       throws Exception {
     int numberOfIterations = 1000;
-    HARegionQueue hrq1 = createHARegionQueue(this.testName.getMethodName() + "-1");
-    HARegionQueue hrq2 = createHARegionQueue(this.testName.getMethodName() + "-2");
-    HARegionQueue hrq3 = createHARegionQueue(this.testName.getMethodName() + "-3");
-    HARegionQueue hrq4 = createHARegionQueue(this.testName.getMethodName() + "-4");
-    HARegionQueue hrq5 = createHARegionQueue(this.testName.getMethodName() + "-5");
+    HARegionQueue hrq1 = createHARegionQueue(testName.getMethodName() + "-1");
+    HARegionQueue hrq2 = createHARegionQueue(testName.getMethodName() + "-2");
+    HARegionQueue hrq3 = createHARegionQueue(testName.getMethodName() + "-3");
+    HARegionQueue hrq4 = createHARegionQueue(testName.getMethodName() + "-4");
+    HARegionQueue hrq5 = createHARegionQueue(testName.getMethodName() + "-5");
 
     HARegionQueue.stopQRMThread();
 
@@ -1063,7 +1055,7 @@ public class HARegionQueueJUnitTest {
   @Test
   public void testBlockingQueueForConcurrentPeekAndTake() throws Exception {
     TestBlockingHARegionQueue regionQueue =
-        new TestBlockingHARegionQueue("testBlockQueueForConcurrentPeekAndTake", this.cache);
+        new TestBlockingHARegionQueue("testBlockQueueForConcurrentPeekAndTake", cache);
     Thread[] threads = new Thread[3];
 
     for (int i = 0; i < 3; i++) {
@@ -1100,12 +1092,11 @@ public class HARegionQueueJUnitTest {
     EventID id1 = new EventID(new byte[] {1}, 1, 2);
 
     regionQueue.takeFirst = true;
-    regionQueue.put(new ConflatableObject("key", "value", id, true, this.testName.getMethodName()));
+    regionQueue.put(new ConflatableObject("key", "value", id, true, testName.getMethodName()));
 
     Thread.sleep(2000);
 
-    regionQueue
-        .put(new ConflatableObject("key1", "value1", id1, true, this.testName.getMethodName()));
+    regionQueue.put(new ConflatableObject("key1", "value1", id1, true, testName.getMethodName()));
 
     long startTime = System.currentTimeMillis();
     for (int k = 0; k < 3; k++) {
@@ -1125,7 +1116,7 @@ public class HARegionQueueJUnitTest {
   @Test
   public void testBlockingQueueForTakeWhenPeekInProgress() throws Exception {
     TestBlockingHARegionQueue regionQueue =
-        new TestBlockingHARegionQueue("testBlockQueueForTakeWhenPeekInProgress", this.cache);
+        new TestBlockingHARegionQueue("testBlockQueueForTakeWhenPeekInProgress", cache);
     Thread[] threads = new Thread[3];
 
     for (int i = 0; i < 3; i++) {
@@ -1162,12 +1153,11 @@ public class HARegionQueueJUnitTest {
     EventID id1 = new EventID(new byte[] {1}, 1, 2);
 
     regionQueue.takeWhenPeekInProgress = true;
-    regionQueue.put(new ConflatableObject("key", "value", id, true, this.testName.getMethodName()));
+    regionQueue.put(new ConflatableObject("key", "value", id, true, testName.getMethodName()));
 
     Thread.sleep(2000);
 
-    regionQueue
-        .put(new ConflatableObject("key1", "value1", id1, true, this.testName.getMethodName()));
+    regionQueue.put(new ConflatableObject("key1", "value1", id1, true, testName.getMethodName()));
 
     long startTime = System.currentTimeMillis();
     for (int k = 0; k < 3; k++) {
@@ -1199,7 +1189,7 @@ public class HARegionQueueJUnitTest {
     haa.setExpiryTime(3);
 
     RegionQueue regionqueue =
-        new HARegionQueue.TestOnlyHARegionQueue(this.testName.getMethodName(), this.cache, haa) {
+        new HARegionQueue.TestOnlyHARegionQueue(testName.getMethodName(), cache, haa) {
           @Override
           CacheListener createCacheListenerForHARegion() {
 
@@ -1244,8 +1234,7 @@ public class HARegionQueueJUnitTest {
         };
 
     EventID ev1 = new EventID(new byte[] {1}, 1, 1);
-    Conflatable cf1 =
-        new ConflatableObject("key", "value", ev1, true, this.testName.getMethodName());
+    Conflatable cf1 = new ConflatableObject("key", "value", ev1, true, testName.getMethodName());
     regionqueue.put(cf1);
 
     synchronized (this) {
@@ -1297,8 +1286,7 @@ public class HARegionQueueJUnitTest {
 
     for (int i = 0; i < 10; ++i) {
       EventID ev1 = new EventID(new byte[] {1}, 1, i);
-      Conflatable cf1 =
-          new ConflatableObject("key", "value", ev1, false, this.testName.getMethodName());
+      Conflatable cf1 = new ConflatableObject("key", "value", ev1, false, testName.getMethodName());
       regionQueue.put(cf1);
     }
 
@@ -1324,10 +1312,10 @@ public class HARegionQueueJUnitTest {
     haa.setExpiryTime(300);
 
     if (createBlockingQueue) {
-      return HARegionQueue.getHARegionQueueInstance(this.testName.getMethodName(), this.cache, haa,
+      return HARegionQueue.getHARegionQueueInstance(testName.getMethodName(), cache, haa,
           HARegionQueue.BLOCKING_HA_QUEUE, false);
     } else {
-      return HARegionQueue.getHARegionQueueInstance(this.testName.getMethodName(), this.cache, haa,
+      return HARegionQueue.getHARegionQueueInstance(testName.getMethodName(), cache, haa,
           HARegionQueue.NON_BLOCKING_HA_QUEUE, false);
     }
   }
@@ -1341,13 +1329,13 @@ public class HARegionQueueJUnitTest {
     System.setProperty(HARegionQueue.REGION_ENTRY_EXPIRY_TIME, "1");
 
     HARegionQueueAttributes haa = new HARegionQueueAttributes();
-    HARegionQueue regionQueue = createHARegionQueue(this.testName.getMethodName(), haa);
+    HARegionQueue regionQueue = createHARegionQueue(testName.getMethodName(), haa);
     long start = System.currentTimeMillis();
 
     regionQueue.put(new ConflatableObject("key", "value", new EventID(new byte[] {1}, 1, 1), true,
-        this.testName.getMethodName()));
+        testName.getMethodName()));
 
-    Map map = (Map) regionQueue.getConflationMapForTesting().get(this.testName.getMethodName());
+    Map map = (Map) regionQueue.getConflationMapForTesting().get(testName.getMethodName());
     assertThat(!map.isEmpty(), is(true));
 
     waitAtLeast(1000, start, () -> {
@@ -1363,14 +1351,14 @@ public class HARegionQueueJUnitTest {
   @Test
   public void testUpdateOfMessageSyncInterval() throws Exception {
     int initialMessageSyncInterval = 5;
-    this.cache.setMessageSyncInterval(initialMessageSyncInterval);
-    createHARegionQueue(this.testName.getMethodName());
+    cache.setMessageSyncInterval(initialMessageSyncInterval);
+    createHARegionQueue(testName.getMethodName());
 
     assertThat("messageSyncInterval not set properly", HARegionQueue.getMessageSyncInterval(),
         is(initialMessageSyncInterval));
 
     int updatedMessageSyncInterval = 10;
-    this.cache.setMessageSyncInterval(updatedMessageSyncInterval);
+    cache.setMessageSyncInterval(updatedMessageSyncInterval);
 
     Awaitility.await().atMost(1, TimeUnit.MINUTES)
         .until(() -> assertThat("messageSyncInterval not updated.",
@@ -1454,7 +1442,7 @@ public class HARegionQueueJUnitTest {
    */
   private HARegionQueue createHARegionQueue(String name)
       throws IOException, ClassNotFoundException, CacheException, InterruptedException {
-    return HARegionQueue.getHARegionQueueInstance(name, this.cache, queueType(), false);
+    return HARegionQueue.getHARegionQueueInstance(name, cache, queueType(), false);
   }
 
   /**
@@ -1462,7 +1450,7 @@ public class HARegionQueueJUnitTest {
    */
   HARegionQueue createHARegionQueue(String name, HARegionQueueAttributes attrs)
       throws IOException, ClassNotFoundException, CacheException, InterruptedException {
-    return HARegionQueue.getHARegionQueueInstance(name, this.cache, attrs, queueType(), false);
+    return HARegionQueue.getHARegionQueueInstance(name, cache, attrs, queueType(), false);
   }
 
   /**
@@ -1535,26 +1523,26 @@ public class HARegionQueueJUnitTest {
     Producer(String name, String keyPrefix, long startingId, long totalPuts,
         boolean createConflatableEvents) {
       super(name);
-      this.producerName = name;
+      producerName = name;
       this.keyPrefix = keyPrefix;
       this.startingId = startingId;
       this.totalPuts = totalPuts;
-      this.createConflatables = createConflatableEvents;
+      createConflatables = createConflatableEvents;
       setDaemon(true);
     }
 
     /** Create Conflatable objects and put them into the Queue. */
     @Override
     public void run() {
-      if (this.producerName == null) {
-        this.producerName = Thread.currentThread().getName();
+      if (producerName == null) {
+        producerName = Thread.currentThread().getName();
       }
-      for (long i = 0; i < this.totalPuts; i++) {
+      for (long i = 0; i < totalPuts; i++) {
         try {
           String regionName = "test";
-          ConflatableObject event = new ConflatableObject(this.keyPrefix + i, "val" + i,
-              new EventID(new byte[] {1}, this.startingId, this.startingId + i),
-              this.createConflatables, regionName);
+          ConflatableObject event = new ConflatableObject(keyPrefix + i, "val" + i,
+              new EventID(new byte[] {1}, startingId, startingId + i), createConflatables,
+              regionName);
 
           haRegionQueue.put(event);
           Thread.sleep(sleepTime);

-- 
To stop receiving notification emails like this one, please contact
klund@apache.org.

[geode] 06/08: GEODE-4789: fix static usage of DistributedRestoreSystemProperties

Posted by kl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

klund pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git

commit 886338624e7dc375521d94d0f7ef51b38b98c5dc
Author: Kirk Lund <kl...@apache.org>
AuthorDate: Thu Mar 15 12:55:20 2018 -0700

    GEODE-4789: fix static usage of DistributedRestoreSystemProperties
---
 .../management/UniversalMembershipListenerAdapterDUnitTest.java     | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/geode-core/src/test/java/org/apache/geode/management/UniversalMembershipListenerAdapterDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/UniversalMembershipListenerAdapterDUnitTest.java
index 5d45239..c5069e9 100644
--- a/geode-core/src/test/java/org/apache/geode/management/UniversalMembershipListenerAdapterDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/UniversalMembershipListenerAdapterDUnitTest.java
@@ -47,7 +47,7 @@ import java.util.concurrent.atomic.AtomicReference;
 import org.awaitility.core.ConditionTimeoutException;
 import org.junit.After;
 import org.junit.Before;
-import org.junit.ClassRule;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -119,8 +119,8 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
   private final MembershipNotification leftClientNotification = new MembershipNotification();
   private final MembershipNotification crashedClientNotification = new MembershipNotification();
 
-  @ClassRule
-  public static DistributedRestoreSystemProperties distributedRestoreSystemProperties =
+  @Rule
+  public DistributedRestoreSystemProperties distributedRestoreSystemProperties =
       new DistributedRestoreSystemProperties();
 
   @Before

-- 
To stop receiving notification emails like this one, please contact
klund@apache.org.

[geode] 04/08: GEODE-4789: add VM count constructor to ClusterStartupRule

Posted by kl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

klund pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git

commit 71d1d8a29a90f98f1017cb3714151b8acc22b8c6
Author: Kirk Lund <kl...@apache.org>
AuthorDate: Wed Mar 14 14:49:59 2018 -0700

    GEODE-4789: add VM count constructor to ClusterStartupRule
    
    Any DUnit test that uses more than 4 VMs should always specify
    the total VM count via the ClusterStartupRule constructor so
    that "bundled" Rules such as DistributedRestoreSystemProperties
    which has a before that needs to know about all the VMs can
    be setup properly.
---
 .../geode/test/dunit/rules/ClusterStartupRule.java   | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/ClusterStartupRule.java b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/ClusterStartupRule.java
index cf27041..31cd483 100644
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/ClusterStartupRule.java
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/ClusterStartupRule.java
@@ -13,12 +13,12 @@
  * the License.
  *
  */
-
 package org.apache.geode.test.dunit.rules;
 
 import static org.apache.geode.distributed.ConfigurationProperties.GROUPS;
 import static org.apache.geode.distributed.ConfigurationProperties.SECURITY_CLIENT_AUTH_INIT;
 import static org.apache.geode.test.dunit.Host.getHost;
+import static org.apache.geode.test.dunit.standalone.DUnitLauncher.NUM_VMS;
 
 import java.io.File;
 import java.io.Serializable;
@@ -38,6 +38,7 @@ import org.apache.geode.cache.server.CacheServer;
 import org.apache.geode.distributed.internal.InternalLocator;
 import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.security.templates.UserPasswordAuthInit;
+import org.apache.geode.test.dunit.Host;
 import org.apache.geode.test.dunit.VM;
 import org.apache.geode.test.dunit.standalone.DUnitLauncher;
 import org.apache.geode.test.dunit.standalone.VersionManager;
@@ -50,12 +51,15 @@ import org.apache.geode.test.junit.rules.Server;
 import org.apache.geode.test.junit.rules.ServerStarterRule;
 import org.apache.geode.test.junit.rules.VMProvider;
 
-
 /**
  * A rule to help you start locators and servers inside of a
  * <a href="https://cwiki.apache.org/confluence/display/GEODE/Distributed-Unit-Tests">DUnit
  * test</a>. This rule will start Servers and Locators inside of the four remote {@link VM}s created
  * by the DUnit framework.
+ *
+ * <p>
+ * If you use this Rule in any test that uses more than the default of 4 VMs in DUnit, then
+ * you must specify the total number of VMs via the {@link #ClusterStartupRule(int)} constructor.
  */
 public class ClusterStartupRule extends ExternalResource implements Serializable {
   /**
@@ -76,7 +80,9 @@ public class ClusterStartupRule extends ExternalResource implements Serializable
     return ((ServerStarterRule) memberStarter).getServer();
   }
 
-  private DistributedRestoreSystemProperties restoreSystemProperties =
+  private final int vmCount;
+
+  private final DistributedRestoreSystemProperties restoreSystemProperties =
       new DistributedRestoreSystemProperties();
 
   private Map<Integer, VMProvider> occupiedVMs;
@@ -84,6 +90,11 @@ public class ClusterStartupRule extends ExternalResource implements Serializable
   private boolean logFile = false;
 
   public ClusterStartupRule() {
+    this(NUM_VMS);
+  }
+
+  public ClusterStartupRule(final int vmCount) {
+    this.vmCount = vmCount;
     DUnitLauncher.launchIfNeeded();
   }
 
@@ -101,6 +112,9 @@ public class ClusterStartupRule extends ExternalResource implements Serializable
 
   @Override
   protected void before() throws Throwable {
+    for (int i = 0; i < vmCount; i++) {
+      Host.getHost(0).getVM(i);
+    }
     restoreSystemProperties.before();
     occupiedVMs = new HashMap<>();
   }

-- 
To stop receiving notification emails like this one, please contact
klund@apache.org.