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 2017/09/21 21:57:17 UTC

[geode] branch develop updated (be0ce58 -> 1d51aa3)

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 be0ce58  GEODE-3205: add FlakyTest category
     new d53960c  GEODE-3552: delete TestSuite that does not belong in package
     new e4df51e  GEODE-3552: delete unused testing classes
     new 40e84e7  GEODE-3552: move and rename TypedJson tests
     new 1d51aa3  GEODE-3552: cleanup more MXBean tests

The 4 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/query/TypedJsonQueryIntegrationTest.java |  102 +
 .../geode/management/CacheManagementDUnitTest.java |   48 +-
 .../apache/geode/management/CompositeStats.java    |   37 +-
 .../geode/management/CompositeTestMBean.java       |   12 +-
 .../geode/management/CompositeTestMXBean.java      |   13 +-
 .../management/CompositeTypeTestDUnitTest.java     |   10 +-
 .../org/apache/geode/management/CustomMBean.java   |   72 -
 .../org/apache/geode/management/CustomMXBean.java  |   35 -
 .../geode/management/DLockManagementDUnitTest.java |   11 +-
 .../geode/management/DeployJarTestSuite.java       |   36 -
 .../geode/management/DiskManagementDUnitTest.java  |    4 +-
 .../management/DistributedSystemDUnitTest.java     |   69 +-
 .../apache/geode/management/JMXMBeanDUnitTest.java |   35 +-
 .../management/LocatorManagementDUnitTest.java     |  384 ++--
 .../org/apache/geode/management/MBeanUtil.java     |    2 +-
 .../apache/geode/management/MXBeanAwaitility.java  |   80 +
 .../geode/management/ManagementTestBase.java       |  206 +-
 .../geode/management/ManagementTestRule.java       |   13 +-
 .../management/MemberMBeanAttributesDUnitTest.java |  293 ++-
 .../management/OffHeapManagementDUnitTest.java     |  609 +++---
 .../geode/management/QueryDataDUnitTest.java       |  169 +-
 .../QueryDataFunctionIntegrationTest.java          |    8 +-
 .../management/RegionCreateDestroyDUnitTest.java   |    6 +-
 .../management/RegionManagementDUnitTest.java      |  170 +-
 .../geode/management/TypedJsonJUnitTest.java       |  281 ---
 ...niversalMembershipListenerAdapterDUnitTest.java | 2172 ++++++++------------
 .../cli/json/TypedJsonPdxIntegrationTest.java      |  116 ++
 .../internal/cli/json/TypedJsonTest.java           |  140 +-
 28 files changed, 2171 insertions(+), 2962 deletions(-)
 create mode 100644 geode-core/src/test/java/org/apache/geode/cache/query/TypedJsonQueryIntegrationTest.java
 delete mode 100644 geode-core/src/test/java/org/apache/geode/management/CustomMBean.java
 delete mode 100644 geode-core/src/test/java/org/apache/geode/management/CustomMXBean.java
 delete mode 100644 geode-core/src/test/java/org/apache/geode/management/DeployJarTestSuite.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/MXBeanAwaitility.java
 delete mode 100644 geode-core/src/test/java/org/apache/geode/management/TypedJsonJUnitTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/json/TypedJsonPdxIntegrationTest.java

-- 
To stop receiving notification emails like this one, please contact
['"commits@geode.apache.org" <co...@geode.apache.org>'].

[geode] 02/04: GEODE-3552: delete unused testing classes

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 e4df51e1c6b346b11170b99082ecdc3377a4ab46
Author: Kirk Lund <kl...@apache.org>
AuthorDate: Thu Aug 31 12:59:34 2017 -0700

    GEODE-3552: delete unused testing classes
---
 .../org/apache/geode/management/CustomMBean.java   | 72 ----------------------
 .../org/apache/geode/management/CustomMXBean.java  | 35 -----------
 2 files changed, 107 deletions(-)

diff --git a/geode-core/src/test/java/org/apache/geode/management/CustomMBean.java b/geode-core/src/test/java/org/apache/geode/management/CustomMBean.java
deleted file mode 100644
index 8ab88f4..0000000
--- a/geode-core/src/test/java/org/apache/geode/management/CustomMBean.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * 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.management;
-
-import javax.management.AttributeChangeNotification;
-import javax.management.Notification;
-import javax.management.NotificationBroadcasterSupport;
-
-/**
- * A simple MBean to test various aspects of federation
- *
- */
-public class CustomMBean extends NotificationBroadcasterSupport implements CustomMXBean {
-
-  private long systemTime;
-  private String name;
-
-  public CustomMBean(String name) {
-    this.name = name;
-  }
-
-  @Override
-  public long getSystemTime() {
-    return System.currentTimeMillis();
-  }
-
-  @Override
-  public void setSystemTime(long systemTIme) {
-    this.systemTime = systemTime;
-  }
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  @Override
-  public void setName(String name) {
-    this.name = name;
-  }
-
-  @Override
-  public String fetchName() {
-    // TODO Auto-generated method stub
-    return name;
-  }
-
-  @Override
-  public void writeName(String name) {
-    this.name = name;
-
-    Notification n = new AttributeChangeNotification(this, sequenceNumber++,
-        System.currentTimeMillis(), "staticField changed", "staticField", "int", name, this.name);
-
-    sendNotification(n);
-  }
-
-  private long sequenceNumber = 1;
-
-}
diff --git a/geode-core/src/test/java/org/apache/geode/management/CustomMXBean.java b/geode-core/src/test/java/org/apache/geode/management/CustomMXBean.java
deleted file mode 100644
index 73b45a3..0000000
--- a/geode-core/src/test/java/org/apache/geode/management/CustomMXBean.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.management;
-
-/**
- * Interface for A simple MBean to test various aspects of federation
- *
- */
-public interface CustomMXBean {
-
-  public long getSystemTime();
-
-  public void setSystemTime(long systemTime);
-
-  public String getName();
-
-  public void setName(String staticField);
-
-  public String fetchName();
-
-  public void writeName(String staticField);
-
-}

-- 
To stop receiving notification emails like this one, please contact
"commits@geode.apache.org" <co...@geode.apache.org>.

[geode] 01/04: GEODE-3552: delete TestSuite that does not belong in package

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 d53960c071b02197ecc9b663ba898c9c9d51444e
Author: Kirk Lund <kl...@apache.org>
AuthorDate: Thu Aug 31 12:58:16 2017 -0700

    GEODE-3552: delete TestSuite that does not belong in package
---
 .../geode/management/DeployJarTestSuite.java       | 36 ----------------------
 1 file changed, 36 deletions(-)

diff --git a/geode-core/src/test/java/org/apache/geode/management/DeployJarTestSuite.java b/geode-core/src/test/java/org/apache/geode/management/DeployJarTestSuite.java
deleted file mode 100644
index 9a8348e..0000000
--- a/geode-core/src/test/java/org/apache/geode/management/DeployJarTestSuite.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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.management;
-
-import org.apache.geode.internal.ClassPathLoaderIntegrationTest;
-import org.apache.geode.internal.ClassPathLoaderTest;
-import org.apache.geode.internal.DeployedJarJUnitTest;
-import org.apache.geode.internal.JarDeployerIntegrationTest;
-import org.apache.geode.management.internal.cli.commands.DeployCommandRedeployDUnitTest;
-import org.apache.geode.management.internal.cli.commands.DeployWithGroupsDUnitTest;
-import org.apache.geode.management.internal.configuration.ClusterConfigDeployJarDUnitTest;
-import org.junit.Ignore;
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-
-@Ignore
-@RunWith(Suite.class)
-@Suite.SuiteClasses({DeployedJarJUnitTest.class, DeployWithGroupsDUnitTest.class,
-    JarDeployerIntegrationTest.class, ClassPathLoaderIntegrationTest.class,
-    ClassPathLoaderTest.class, DeployCommandRedeployDUnitTest.class,
-    ClusterConfigDeployJarDUnitTest.class})
-public class DeployJarTestSuite {
-}

-- 
To stop receiving notification emails like this one, please contact
"commits@geode.apache.org" <co...@geode.apache.org>.

[geode] 03/04: GEODE-3552: move and rename TypedJson tests

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 40e84e7fa17cb4aa78d5322a2b8866487a9d7974
Author: Kirk Lund <kl...@apache.org>
AuthorDate: Fri Sep 1 12:33:21 2017 -0700

    GEODE-3552: move and rename TypedJson tests
---
 .../cache/query/TypedJsonQueryIntegrationTest.java | 102 ++++++++
 .../geode/management/TypedJsonJUnitTest.java       | 281 ---------------------
 .../cli/json/TypedJsonPdxIntegrationTest.java      | 117 +++++++++
 .../internal/cli/json/TypedJsonTest.java           | 139 +++++++++-
 4 files changed, 354 insertions(+), 285 deletions(-)

diff --git a/geode-core/src/test/java/org/apache/geode/cache/query/TypedJsonQueryIntegrationTest.java b/geode-core/src/test/java/org/apache/geode/cache/query/TypedJsonQueryIntegrationTest.java
new file mode 100644
index 0000000..bb54859
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/cache/query/TypedJsonQueryIntegrationTest.java
@@ -0,0 +1,102 @@
+/*
+ * 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.cache.query;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.cache.query.data.Portfolio;
+import org.apache.geode.cache.query.data.Position;
+import org.apache.geode.cache.util.ObjectSizer;
+import org.apache.geode.management.internal.cli.json.TypedJsonPdxIntegrationTest;
+import org.apache.geode.management.internal.cli.json.GfJsonException;
+import org.apache.geode.management.internal.cli.json.GfJsonObject;
+import org.apache.geode.management.internal.cli.json.TypedJson;
+import org.apache.geode.test.junit.categories.IntegrationTest;
+
+/**
+ * Integration tests for {@link TypedJson} querying {@link Portfolio}.<p>
+ *
+ * Extracted from {@link TypedJsonPdxIntegrationTest}.<p>
+ *
+ * TODO: add real assertions
+ */
+@Category(IntegrationTest.class)
+public class TypedJsonQueryIntegrationTest {
+
+  private static final String RESULT = "result";
+
+  @Test
+  public void testUserObject() throws Exception {
+    Portfolio p = new Portfolio(2);
+
+    TypedJson typedJson = new TypedJson(RESULT, p);
+
+    checkResult(typedJson);
+  }
+
+  @Test
+  public void testUserObjectArray() throws Exception {
+    Portfolio[] portfolios = createPortfoliosAndPositions(2);
+
+    TypedJson typedJson = new TypedJson(RESULT, portfolios);
+
+    checkResult(typedJson);
+  }
+
+  @Test
+  public void testMemUsage() throws Exception {
+    Portfolio[] portfolios = createPortfoliosAndPositions(1000);
+    System.out.println("Size Of port " + ObjectSizer.REFLECTION_SIZE.sizeof(portfolios));
+
+    TypedJson typedJson = new TypedJson(RESULT, portfolios);
+    System.out.println("Size Of json " + ObjectSizer.REFLECTION_SIZE.sizeof(typedJson));
+
+    checkResult(typedJson);
+  }
+
+  @Test
+  public void testQueryLike() throws Exception {
+    Portfolio[] portfolios = createPortfoliosAndPositions(2);
+
+    TypedJson typedJson = new TypedJson(RESULT, null);
+    typedJson.add("member", "server1");
+    // checkResult(typedJson); -- fails
+
+    for (int i = 0; i < 2; i++) {
+      typedJson.add(RESULT, portfolios[i]);
+    }
+    checkResult(typedJson);
+  }
+
+  private Portfolio[] createPortfoliosAndPositions(final int count) {
+    Position.cnt = 0; // reset Portfolio counter
+    Portfolio[] portfolios = new Portfolio[count];
+    for (int i = 0; i < count; i++) {
+      portfolios[i] = new Portfolio(i);
+    }
+    return portfolios;
+  }
+
+  private void checkResult(final TypedJson typedJson) throws GfJsonException {
+    GfJsonObject gfJsonObject = new GfJsonObject(typedJson.toString());
+    System.out.println(gfJsonObject);
+    assertThat(gfJsonObject.get(RESULT)).isNotNull();
+  }
+}
diff --git a/geode-core/src/test/java/org/apache/geode/management/TypedJsonJUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/TypedJsonJUnitTest.java
deleted file mode 100644
index 7823195..0000000
--- a/geode-core/src/test/java/org/apache/geode/management/TypedJsonJUnitTest.java
+++ /dev/null
@@ -1,281 +0,0 @@
-/*
- * 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.management;
-
-import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.cache.query.data.Portfolio;
-import org.apache.geode.cache.query.data.Position;
-import org.apache.geode.cache.util.ObjectSizer;
-import org.apache.geode.distributed.DistributedSystem;
-import org.apache.geode.management.internal.cli.json.GfJsonException;
-import org.apache.geode.management.internal.cli.json.GfJsonObject;
-import org.apache.geode.management.internal.cli.json.TypedJson;
-import org.apache.geode.pdx.PdxInstance;
-import org.apache.geode.pdx.PdxInstanceFactory;
-import org.apache.geode.pdx.internal.PdxInstanceFactoryImpl;
-import org.apache.geode.test.junit.categories.IntegrationTest;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.util.*;
-
-import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
-
-@Category(IntegrationTest.class)
-public class TypedJsonJUnitTest {
-
-  public enum Currency {
-    PENNY, NICKLE, DIME, QUARTER
-  };
-
-  private static final String RESULT = "result";
-
-
-  public void checkResult(TypedJson tjson) {
-
-    GfJsonObject gfJsonObj;
-    try {
-      gfJsonObj = new GfJsonObject(tjson.toString());
-      System.out.println(gfJsonObj);
-      assertNotNull(gfJsonObj.get(RESULT));
-    } catch (GfJsonException e) {
-      fail("Result could not be found");
-    }
-
-  }
-
-  @Test
-  public void testArrayList() {
-
-    List<String> ls = new ArrayList<String>();
-    ls.add("ONE");
-    ls.add("TWO");
-    ls.add("THREE");
-    TypedJson tjson = new TypedJson(RESULT, ls);
-
-    checkResult(tjson);
-  }
-
-  @Test
-  public void testArray() {
-
-    int[] arr = new int[3];
-    for (int i = 0; i < 3; i++) {
-      arr[i] = i;
-    }
-    TypedJson tjson = new TypedJson(RESULT, arr);
-    checkResult(tjson);
-
-  }
-
-  @Test
-  public void testBigList() {
-
-    List<String> ls = new ArrayList<String>();
-    for (int i = 0; i < 1000; i++) {
-      ls.add("BIG_COLL_" + i);
-    }
-    TypedJson tjson = new TypedJson(RESULT, ls);
-    checkResult(tjson);
-  }
-
-  @Test
-  public void testEnum() {
-    EnumContainer test = new EnumContainer(Currency.DIME);
-    TypedJson tjson = new TypedJson(RESULT, test);
-    checkResult(tjson);
-    TypedJson enumObj = new TypedJson(RESULT, Currency.DIME);
-    checkResult(enumObj);
-
-  }
-
-  @Test
-  public void testEnumList() {
-    List ls = new ArrayList();
-    ls.add(Currency.DIME);
-    ls.add(Currency.NICKLE);
-    ls.add(Currency.QUARTER);
-    ls.add(Currency.NICKLE);
-    TypedJson tjson = new TypedJson(RESULT, ls);
-    System.out.println(tjson);
-
-  }
-
-  @Test
-  public void testMap() {
-    Map<String, String> testMap = new HashMap<String, String>();
-    testMap.put("1", "ONE");
-    testMap.put("2", "TWO");
-    testMap.put("3", "THREE");
-    testMap.put("4", "FOUR");
-    TypedJson tjson = new TypedJson(RESULT, testMap);
-    System.out.println(tjson);
-
-  }
-
-  @Test
-  public void testBigDecimal() {
-    java.math.BigDecimal dc = new java.math.BigDecimal(20);
-    TypedJson tjson = new TypedJson(RESULT, dc);
-    System.out.println(tjson);
-
-  }
-
-  @Test
-  public void testUserObject() {
-    Portfolio p = new Portfolio(2);
-    TypedJson tjson = new TypedJson(RESULT, p);
-    System.out.println(tjson);
-
-  }
-
-  @Test
-  public void testObjects() {
-    Object obj = new Object();
-    TypedJson tjson = new TypedJson(RESULT, obj);
-    System.out.println(tjson);
-  }
-
-  @Test
-  public void testPDXObject() {
-    final Properties props = new Properties();
-    props.setProperty(MCAST_PORT, "0");
-    DistributedSystem.connect(props);
-    Cache cache = new CacheFactory().create();
-    PdxInstanceFactory pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
-    Portfolio p = new Portfolio(2);
-    pf.writeInt("ID", 111);
-    pf.writeString("status", "active");
-    pf.writeString("secId", "IBM");
-    pf.writeObject("portfolio", p);
-    PdxInstance pi = pf.create();
-
-    TypedJson tJsonObj = new TypedJson(RESULT, pi);
-    System.out.println(tJsonObj);
-    cache.close();
-
-  }
-
-  @Test
-  public void testNestedPDXObject() {
-    final Properties props = new Properties();
-    props.setProperty(MCAST_PORT, "0");
-    DistributedSystem.connect(props);
-    Cache cache = new CacheFactory().create();
-
-    PdxInstanceFactory pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
-
-    pf.writeInt("ID", 111);
-    pf.writeString("status", "active");
-    pf.writeString("secId", "IBM");
-    PdxInstance pi = pf.create();
-
-    PDXContainer cont = new PDXContainer(1);
-    cont.setPi(pi);
-
-    TypedJson tJsonObj = new TypedJson(RESULT, cont);
-    System.out.println(tJsonObj);
-    cache.close();
-
-  }
-
-  @Test
-  public void testUserObjectArray() {
-    Portfolio[] p = createPortfoliosAndPositions(2);
-    TypedJson t1 = new TypedJson(RESULT, p);
-    System.out.println(t1);
-  }
-
-  @Test
-  public void testMemUsage() {
-    Portfolio[] p = createPortfoliosAndPositions(1000);
-    System.out.println("Size Of port " + ObjectSizer.REFLECTION_SIZE.sizeof(p));
-    TypedJson t1 = new TypedJson(RESULT, p);
-    System.out.println("Size Of json " + ObjectSizer.REFLECTION_SIZE.sizeof(t1));
-
-  }
-
-
-  @Test
-  public void testQueryLike() {
-    Portfolio[] p = createPortfoliosAndPositions(2);
-    TypedJson t1 = new TypedJson(RESULT, null);
-    t1.add("member", "server1");
-    System.out.println(t1);
-    for (int i = 0; i < 2; i++) {
-      t1.add(RESULT, p[i]);
-
-    }
-    System.out.println(t1);
-
-
-  }
-
-  private static class EnumContainer {
-
-    Currency curr;
-
-    public EnumContainer(Currency curr) {
-      this.curr = curr;
-    }
-
-    public Currency getCurr() {
-      return curr;
-    }
-
-    public void setCurr(Currency curr) {
-      this.curr = curr;
-    }
-
-  }
-
-  private static class PDXContainer {
-    PdxInstance pi;
-    int counter;
-
-    public PDXContainer(int count) {
-      this.counter = count;
-    }
-
-    public PdxInstance getPi() {
-      return pi;
-    }
-
-    public void setPi(PdxInstance pi) {
-      this.pi = pi;
-    }
-
-    public int getCounter() {
-      return counter;
-    }
-
-    public void setCounter(int counter) {
-      this.counter = counter;
-    }
-  }
-
-  public Portfolio[] createPortfoliosAndPositions(int count) {
-    Position.cnt = 0; // reset Portfolio counter
-    Portfolio[] portfolios = new Portfolio[count];
-    for (int i = 0; i < count; i++) {
-      portfolios[i] = new Portfolio(i);
-    }
-    return portfolios;
-  }
-
-}
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/TypedJsonPdxIntegrationTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/TypedJsonPdxIntegrationTest.java
new file mode 100644
index 0000000..07289d2
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/TypedJsonPdxIntegrationTest.java
@@ -0,0 +1,117 @@
+/*
+ * 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.management.internal.cli.json;
+
+import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
+import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.io.Serializable;
+import java.util.Properties;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.cache.CacheFactory;
+import org.apache.geode.distributed.DistributedSystem;
+import org.apache.geode.pdx.PdxInstance;
+import org.apache.geode.pdx.PdxInstanceFactory;
+import org.apache.geode.pdx.internal.PdxInstanceFactoryImpl;
+import org.apache.geode.test.junit.categories.IntegrationTest;
+
+/**
+ * Integration tests for {@link TypedJson}.<p>
+ *
+ * TODO: add actual assertions
+ */
+@Category(IntegrationTest.class)
+public class TypedJsonPdxIntegrationTest {
+
+  private static final String RESULT = "result";
+
+  private DistributedSystem system;
+  private PdxInstanceFactory pdxInstanceFactory;
+
+  @Before
+  public void setUp() throws Exception {
+    Properties config = new Properties();
+    config.setProperty(LOCATORS, "");
+    config.setProperty(MCAST_PORT, "0");
+
+    system = DistributedSystem.connect(config);
+    new CacheFactory().create();
+    pdxInstanceFactory = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+  }
+
+  @After
+  public void tearDown() throws Exception {
+    system.disconnect();
+  }
+
+  @Test
+  public void supportsPdxInstance() throws Exception {
+    pdxInstanceFactory.writeInt("ID", 111);
+    pdxInstanceFactory.writeString("status", "active");
+    pdxInstanceFactory.writeString("secId", "IBM");
+    pdxInstanceFactory.writeObject("object", new SerializableObject(2));
+    PdxInstance pdxInstance = pdxInstanceFactory.create();
+
+    TypedJson typedJson = new TypedJson(RESULT, pdxInstance);
+
+    checkResult(typedJson);
+  }
+
+  @Test
+  public void supportsObjectContainingPdxInstance() throws Exception {
+    pdxInstanceFactory.writeInt("ID", 111);
+    pdxInstanceFactory.writeString("status", "active");
+    pdxInstanceFactory.writeString("secId", "IBM");
+    PdxContainer pdxContainer = new PdxContainer(pdxInstanceFactory.create(), 1);
+
+    TypedJson typedJson = new TypedJson(RESULT, pdxContainer);
+
+    checkResult(typedJson);
+  }
+
+  private void checkResult(TypedJson typedJson) throws GfJsonException {
+    GfJsonObject gfJsonObject = new GfJsonObject(typedJson.toString());
+    System.out.println(gfJsonObject);
+    assertThat(gfJsonObject.get(RESULT)).isNotNull();
+  }
+
+  private static class SerializableObject implements Serializable {
+
+    private final int id;
+
+    SerializableObject(final int id) {
+      this.id = id;
+    }
+  }
+
+  private static class PdxContainer {
+
+    private final PdxInstance pdxInstance;
+    private final int count;
+
+    PdxContainer(final PdxInstance pdxInstance, final int count) {
+      this.pdxInstance = pdxInstance;
+      this.count = count;
+    }
+  }
+}
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/TypedJsonTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/TypedJsonTest.java
index c894594..48baa7e 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/TypedJsonTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/TypedJsonTest.java
@@ -14,19 +14,35 @@
  */
 package org.apache.geode.management.internal.cli.json;
 
-import static org.mockito.Mockito.*;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import java.io.Writer;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
-import org.apache.geode.test.junit.categories.UnitTest;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
-import java.io.Writer;
+import org.apache.geode.test.junit.categories.UnitTest;
 
+/**
+ * Extracted from {@link TypedJsonPdxIntegrationTest}.<p>
+ *
+ * TODO: add actual assertions
+ */
 @Category(UnitTest.class)
 public class TypedJsonTest {
 
+  private static final String RESULT = "result";
+
   @Test
-  public void shouldBeMockable() throws Exception {
+  public void canBeMocked() throws Exception {
     TypedJson mockTypedJson = mock(TypedJson.class);
     Writer writer = null;
     Object value = new Object();
@@ -35,4 +51,119 @@ public class TypedJsonTest {
 
     verify(mockTypedJson, times(1)).writeVal(writer, value);
   }
+
+  @Test
+  public void testArrayList() throws Exception {
+    List<String> list = new ArrayList<>();
+    list.add("ONE");
+    list.add("TWO");
+    list.add("THREE");
+
+    TypedJson typedJson = new TypedJson(RESULT, list);
+
+    checkResult(typedJson);
+  }
+
+  @Test
+  public void testArray() throws Exception {
+    int[] intArray = new int[3];
+    for (int i = 0; i < 3; i++) {
+      intArray[i] = i;
+    }
+
+    TypedJson typedJson = new TypedJson(RESULT, intArray);
+
+    checkResult(typedJson);
+  }
+
+  @Test
+  public void testBigList() throws Exception {
+    List<String> list = new ArrayList<>();
+    for (int i = 0; i < 1000; i++) {
+      list.add("BIG_COLL_" + i);
+    }
+
+    TypedJson typedJson = new TypedJson(RESULT, list);
+
+    checkResult(typedJson);
+  }
+
+  @Test
+  public void testEnumContainer() throws Exception {
+    EnumContainer enumContainer = new EnumContainer(Currency.DIME);
+
+    TypedJson typedJson = new TypedJson(RESULT, enumContainer);
+
+    checkResult(typedJson);
+  }
+
+  @Test
+  public void testEnum() throws Exception {
+    TypedJson typedJson = new TypedJson(RESULT, Currency.DIME);
+
+    checkResult(typedJson);
+  }
+
+  @Test
+  public void testEnumList() throws Exception {
+    List<Currency> list = new ArrayList();
+    list.add(Currency.DIME);
+    list.add(Currency.NICKLE);
+    list.add(Currency.QUARTER);
+    list.add(Currency.NICKLE);
+
+    TypedJson typedJson = new TypedJson(RESULT, list);
+
+    checkResult(typedJson);
+  }
+
+  @Test
+  public void testMap() throws Exception {
+    Map<String, String> map = new HashMap<>();
+    map.put("1", "ONE");
+    map.put("2", "TWO");
+    map.put("3", "THREE");
+    map.put("4", "FOUR");
+
+    TypedJson typedJson = new TypedJson(RESULT, map);
+
+    checkResult(typedJson);
+  }
+
+  @Test
+  public void testBigDecimal() throws Exception {
+    BigDecimal dc = new BigDecimal(20);
+
+    TypedJson typedJson = new TypedJson(RESULT, dc);
+
+    checkResult(typedJson);
+  }
+
+  @Test
+  public void testObjects() throws Exception {
+    Object object = new Object();
+
+    TypedJson typedJson = new TypedJson(RESULT, object);
+
+    checkResult(typedJson);
+  }
+
+  private void checkResult(final TypedJson typedJson) throws GfJsonException {
+    GfJsonObject gfJsonObject = new GfJsonObject(typedJson.toString());
+    System.out.println(gfJsonObject);
+    assertThat(gfJsonObject.get(RESULT)).isNotNull();
+  }
+
+  private enum Currency {
+    PENNY, NICKLE, DIME, QUARTER
+  };
+
+  private static class EnumContainer {
+
+    private final Currency currency;
+
+    EnumContainer(final Currency currency) {
+      this.currency = currency;
+    }
+  }
 }

-- 
To stop receiving notification emails like this one, please contact
"commits@geode.apache.org" <co...@geode.apache.org>.

[geode] 04/04: GEODE-3552: cleanup more MXBean tests

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 1d51aa3542af85b3833881265dd991d531b228b3
Author: Kirk Lund <kl...@apache.org>
AuthorDate: Thu Sep 14 08:56:20 2017 -0700

    GEODE-3552: cleanup more MXBean tests
    
    * start refactoring MXBean await methods to MXBeanAwaitility
    * organize imports
    * remove unused code
    * convert from WaitCriterion to Awaitility
    * reduce scope from protected/public to private where possible
    * fix minor race conditions
---
 .../cache/query/TypedJsonQueryIntegrationTest.java |   28 +-
 .../geode/management/CacheManagementDUnitTest.java |   48 +-
 .../apache/geode/management/CompositeStats.java    |   37 +-
 .../geode/management/CompositeTestMBean.java       |   12 +-
 .../geode/management/CompositeTestMXBean.java      |   13 +-
 .../management/CompositeTypeTestDUnitTest.java     |   10 +-
 .../geode/management/DLockManagementDUnitTest.java |   11 +-
 .../geode/management/DiskManagementDUnitTest.java  |    4 +-
 .../management/DistributedSystemDUnitTest.java     |   69 +-
 .../apache/geode/management/JMXMBeanDUnitTest.java |   35 +-
 .../management/LocatorManagementDUnitTest.java     |  384 ++--
 .../org/apache/geode/management/MBeanUtil.java     |    2 +-
 .../apache/geode/management/MXBeanAwaitility.java  |   80 +
 .../geode/management/ManagementTestBase.java       |  206 +-
 .../geode/management/ManagementTestRule.java       |   13 +-
 .../management/MemberMBeanAttributesDUnitTest.java |  293 ++-
 .../management/OffHeapManagementDUnitTest.java     |  609 +++---
 .../geode/management/QueryDataDUnitTest.java       |  169 +-
 .../QueryDataFunctionIntegrationTest.java          |    8 +-
 .../management/RegionCreateDestroyDUnitTest.java   |    6 +-
 .../management/RegionManagementDUnitTest.java      |  170 +-
 ...niversalMembershipListenerAdapterDUnitTest.java | 2172 ++++++++------------
 .../cli/json/TypedJsonPdxIntegrationTest.java      |   25 +-
 .../internal/cli/json/TypedJsonTest.java           |    3 +-
 24 files changed, 1845 insertions(+), 2562 deletions(-)

diff --git a/geode-core/src/test/java/org/apache/geode/cache/query/TypedJsonQueryIntegrationTest.java b/geode-core/src/test/java/org/apache/geode/cache/query/TypedJsonQueryIntegrationTest.java
index bb54859..0d42554 100644
--- a/geode-core/src/test/java/org/apache/geode/cache/query/TypedJsonQueryIntegrationTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/query/TypedJsonQueryIntegrationTest.java
@@ -1,18 +1,16 @@
 /*
- * 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
+ * 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
+ * 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.
+ * 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.cache.query;
 
@@ -31,9 +29,11 @@ import org.apache.geode.management.internal.cli.json.TypedJson;
 import org.apache.geode.test.junit.categories.IntegrationTest;
 
 /**
- * Integration tests for {@link TypedJson} querying {@link Portfolio}.<p>
+ * Integration tests for {@link TypedJson} querying {@link Portfolio}.
+ * <p>
  *
- * Extracted from {@link TypedJsonPdxIntegrationTest}.<p>
+ * Extracted from {@link TypedJsonPdxIntegrationTest}.
+ * <p>
  *
  * TODO: add real assertions
  */
diff --git a/geode-core/src/test/java/org/apache/geode/management/CacheManagementDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/CacheManagementDUnitTest.java
index 9d5c873..003dd9b 100644
--- a/geode-core/src/test/java/org/apache/geode/management/CacheManagementDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/CacheManagementDUnitTest.java
@@ -14,9 +14,10 @@
  */
 package org.apache.geode.management;
 
-import static java.util.concurrent.TimeUnit.*;
-import static org.apache.geode.distributed.ConfigurationProperties.*;
-import static org.assertj.core.api.Assertions.*;
+import static org.apache.geode.distributed.ConfigurationProperties.LOG_FILE;
+import static org.apache.geode.distributed.ConfigurationProperties.REDUNDANCY_ZONE;
+import static org.apache.geode.management.MXBeanAwaitility.await;
+import static org.assertj.core.api.Assertions.assertThat;
 
 import java.io.Serializable;
 import java.lang.management.ManagementFactory;
@@ -33,8 +34,6 @@ import javax.management.Notification;
 import javax.management.NotificationListener;
 import javax.management.ObjectName;
 
-import org.awaitility.Awaitility;
-import org.awaitility.core.ConditionFactory;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -58,9 +57,13 @@ import org.apache.geode.test.junit.rules.serializable.SerializableTemporaryFolde
 import org.apache.geode.test.junit.rules.serializable.SerializableTestName;
 
 /**
+ * Distributed tests for {@link MemberMXBean}.
+ * <p>
+ *
  * This class checks and verifies various data and operations exposed through MemberMXBean
  * interface.
- * </p>
+ * <p>
+ *
  * Goal of the Test : MemberMBean gets created once cache is created. Data like config data and
  * stats are of proper value To check proper federation of MemberMBean including remote ops and
  * remote data access
@@ -302,14 +305,14 @@ public class CacheManagementDUnitTest implements Serializable {
 
   private void verifyQueryMBeans(final VM managerVM) {
     managerVM.invoke("validateQueryMBeans", () -> {
-      ManagementService service = this.managementTestRule.getManagementService();
+      SystemManagementService service = this.managementTestRule.getSystemManagementService();
       Set<DistributedMember> otherMembers = this.managementTestRule.getOtherNormalMembers();
       Set<ObjectName> superSet = new HashSet<>();
 
       for (DistributedMember member : otherMembers) {
         ObjectName memberMBeanName = service.getMemberMBeanName(member);
 
-        awaitMemberMXBeanProxy(member);
+        MXBeanAwaitility.awaitMemberMXBeanProxy(member, service);
 
         Set<ObjectName> objectNames = service.queryMBeanNames(member);
         superSet.addAll(objectNames);
@@ -327,13 +330,13 @@ public class CacheManagementDUnitTest implements Serializable {
 
   private void verifyGetMBeanInstance(final VM managerVM) {
     managerVM.invoke("verifyGetMBeanInstance", () -> {
-      ManagementService service = this.managementTestRule.getManagementService();
+      SystemManagementService service = this.managementTestRule.getSystemManagementService();
       Set<DistributedMember> otherMembers = this.managementTestRule.getOtherNormalMembers();
 
       for (DistributedMember member : otherMembers) {
         ObjectName memberMBeanName = service.getMemberMBeanName(member);
 
-        awaitMemberMXBeanProxy(member);
+        MXBeanAwaitility.awaitMemberMXBeanProxy(member, service);
 
         MemberMXBean memberMXBean = service.getMBeanInstance(memberMBeanName, MemberMXBean.class);
         assertThat(memberMXBean).isNotNull();
@@ -413,10 +416,11 @@ public class CacheManagementDUnitTest implements Serializable {
    * not.
    */
   private void verifyConfigDataRemote(final Map<DistributedMember, DistributionConfig> configMap) {
+    SystemManagementService service = this.managementTestRule.getSystemManagementService();
     Set<DistributedMember> otherMembers = this.managementTestRule.getOtherNormalMembers();
 
     for (DistributedMember member : otherMembers) {
-      MemberMXBean memberMXBean = awaitMemberMXBeanProxy(member);
+      MemberMXBean memberMXBean = MXBeanAwaitility.awaitMemberMXBeanProxy(member, service);
 
       GemFireProperties data = memberMXBean.listGemFireProperties();
       DistributionConfig config = configMap.get(member);
@@ -577,10 +581,11 @@ public class CacheManagementDUnitTest implements Serializable {
   }
 
   private void invokeRemoteMemberMXBeanOps() {
+    SystemManagementService service = this.managementTestRule.getSystemManagementService();
     Set<DistributedMember> otherMembers = this.managementTestRule.getOtherNormalMembers();
 
     for (DistributedMember member : otherMembers) {
-      MemberMXBean memberMXBean = awaitMemberMXBeanProxy(member);
+      MemberMXBean memberMXBean = MXBeanAwaitility.awaitMemberMXBeanProxy(member, service);
 
       JVMMetrics metrics = memberMXBean.showJVMMetrics();
 
@@ -661,25 +666,6 @@ public class CacheManagementDUnitTest implements Serializable {
     assertThat(region).isEmpty();
   }
 
-  private MemberMXBean awaitMemberMXBeanProxy(final DistributedMember member) {
-    SystemManagementService service = this.managementTestRule.getSystemManagementService();
-    ObjectName objectName = service.getMemberMBeanName(member);
-
-    String alias = "Awaiting MemberMXBean proxy for " + member;
-    await(alias)
-        .until(() -> assertThat(service.getMBeanProxy(objectName, MemberMXBean.class)).isNotNull());
-
-    return service.getMBeanProxy(objectName, MemberMXBean.class);
-  }
-
-  private ConditionFactory await() {
-    return Awaitility.await().atMost(2, MINUTES);
-  }
-
-  private ConditionFactory await(final String alias) {
-    return Awaitility.await(alias).atMost(2, MINUTES);
-  }
-
   private static String removeVMDir(String string) {
     return string.replaceAll("vm.", "");
   }
diff --git a/geode-core/src/test/java/org/apache/geode/management/CompositeStats.java b/geode-core/src/test/java/org/apache/geode/management/CompositeStats.java
index 33f7ea6..4abbe1d 100644
--- a/geode-core/src/test/java/org/apache/geode/management/CompositeStats.java
+++ b/geode-core/src/test/java/org/apache/geode/management/CompositeStats.java
@@ -17,16 +17,13 @@ package org.apache.geode.management;
 import java.beans.ConstructorProperties;
 
 public class CompositeStats {
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 1L;
-  private final String connectionStatsType; // shouldn't change
-  private long connectionsOpened;
-  private long connectionsClosed;
-  private long connectionsAttempted;
-  private long connectionsFailed;
-  private long connectionLifeTime; // is this total TTL??
+
+  private final String connectionStatsType;
+  private final long connectionsOpened;
+  private final long connectionsClosed;
+  private final long connectionsAttempted;
+  private final long connectionsFailed;
+  private final long connectionLifeTime;
 
   @ConstructorProperties(value = {"connectionStatsType", "connectionsOpened", "connectionsClosed",
       "connectionsAttempted", "connectionsFailed", "connectionLifeTime"})
@@ -40,44 +37,26 @@ public class CompositeStats {
     this.connectionLifeTime = connectionLifeTime;
   }
 
-  /**
-   * @return the connectionStatsType
-   */
   public String getConnectionStatsType() {
     return connectionStatsType;
   }
 
-  /**
-   * @return the connectionsOpened
-   */
   public long getConnectionsOpened() {
     return connectionsOpened;
   }
 
-  /**
-   * @return the connectionsClosed
-   */
   public long getConnectionsClosed() {
     return connectionsClosed;
   }
 
-  /**
-   * @return the connectionsAttempted
-   */
   public long getConnectionsAttempted() {
     return connectionsAttempted;
   }
 
-  /**
-   * @return the connectionsFailed
-   */
   public long getConnectionsFailed() {
     return connectionsFailed;
   }
 
-  /**
-   * @return the connectionLifeTime
-   */
   public long getConnectionLifeTime() {
     return connectionLifeTime;
   }
@@ -95,6 +74,4 @@ public class CompositeStats {
     builder.append("]");
     return builder.toString();
   }
-
-
 }
diff --git a/geode-core/src/test/java/org/apache/geode/management/CompositeTestMBean.java b/geode-core/src/test/java/org/apache/geode/management/CompositeTestMBean.java
index 3c9ba8c..f515d97 100644
--- a/geode-core/src/test/java/org/apache/geode/management/CompositeTestMBean.java
+++ b/geode-core/src/test/java/org/apache/geode/management/CompositeTestMBean.java
@@ -18,12 +18,13 @@ import java.util.HashMap;
 import java.util.Map;
 
 public class CompositeTestMBean implements CompositeTestMXBean {
+
   private final String connectionStatsType = "AX";
-  private long connectionsOpened = 100;
-  private long connectionsClosed = 50;
-  private long connectionsAttempted = 120;
-  private long connectionsFailed = 20;
-  private long connectionLifeTime = 100;
+  private final long connectionsOpened = 100;
+  private final long connectionsClosed = 50;
+  private final long connectionsAttempted = 120;
+  private final long connectionsFailed = 20;
+  private final long connectionLifeTime = 100;
 
   @Override
   public CompositeStats getCompositeStats() {
@@ -46,7 +47,6 @@ public class CompositeTestMBean implements CompositeTestMXBean {
 
   @Override
   public CompositeStats[] getCompositeArray() {
-
     CompositeStats[] arr = new CompositeStats[2];
     for (int i = 0; i < arr.length; i++) {
       arr[i] = new CompositeStats("AX" + i, connectionsOpened, connectionsClosed,
diff --git a/geode-core/src/test/java/org/apache/geode/management/CompositeTestMXBean.java b/geode-core/src/test/java/org/apache/geode/management/CompositeTestMXBean.java
index bcbc441..011ea2f 100644
--- a/geode-core/src/test/java/org/apache/geode/management/CompositeTestMXBean.java
+++ b/geode-core/src/test/java/org/apache/geode/management/CompositeTestMXBean.java
@@ -17,15 +17,14 @@ package org.apache.geode.management;
 import java.util.Map;
 
 public interface CompositeTestMXBean {
-  // [A] MBean Attributes
-  // 0. Basic
-  public CompositeStats getCompositeStats();
 
-  public CompositeStats listCompositeStats();
+  CompositeStats getCompositeStats();
 
-  public Map<String, Integer> getMap();
+  CompositeStats listCompositeStats();
 
-  public Integer[] getIntegerArray();
+  Map<String, Integer> getMap();
 
-  public CompositeStats[] getCompositeArray();
+  Integer[] getIntegerArray();
+
+  CompositeStats[] getCompositeArray();
 }
diff --git a/geode-core/src/test/java/org/apache/geode/management/CompositeTypeTestDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/CompositeTypeTestDUnitTest.java
index 33bbc08..b60c462 100644
--- a/geode-core/src/test/java/org/apache/geode/management/CompositeTypeTestDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/CompositeTypeTestDUnitTest.java
@@ -14,8 +14,8 @@
  */
 package org.apache.geode.management;
 
-import static java.util.concurrent.TimeUnit.*;
-import static org.assertj.core.api.Assertions.*;
+import static java.util.concurrent.TimeUnit.MINUTES;
+import static org.assertj.core.api.Assertions.assertThat;
 
 import java.io.Serializable;
 
@@ -32,6 +32,12 @@ import org.apache.geode.management.internal.SystemManagementService;
 import org.apache.geode.test.dunit.VM;
 import org.apache.geode.test.junit.categories.DistributedTest;
 
+/**
+ * Distributed tests for registering of custom mbean using composite types.
+ * <p>
+ *
+ * See User API {@link ManagementService#registerMBean(Object, ObjectName)}.
+ */
 @Category(DistributedTest.class)
 @SuppressWarnings({"serial", "unused"})
 public class CompositeTypeTestDUnitTest implements Serializable {
diff --git a/geode-core/src/test/java/org/apache/geode/management/DLockManagementDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/DLockManagementDUnitTest.java
index 1193f6b..ef5ace1 100644
--- a/geode-core/src/test/java/org/apache/geode/management/DLockManagementDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/DLockManagementDUnitTest.java
@@ -14,10 +14,11 @@
  */
 package org.apache.geode.management;
 
-import static java.util.concurrent.TimeUnit.*;
-import static org.apache.geode.internal.process.ProcessUtils.*;
-import static org.apache.geode.management.internal.MBeanJMXAdapter.*;
-import static org.assertj.core.api.Assertions.*;
+import static java.util.concurrent.TimeUnit.MILLISECONDS;
+import static org.apache.geode.internal.process.ProcessUtils.identifyPid;
+import static org.apache.geode.management.internal.MBeanJMXAdapter.getDistributedLockServiceName;
+import static org.apache.geode.management.internal.MBeanJMXAdapter.getLockServiceMBeanName;
+import static org.assertj.core.api.Assertions.assertThat;
 
 import java.io.Serializable;
 import java.util.Map;
@@ -42,7 +43,7 @@ import org.apache.geode.test.junit.categories.DistributedTest;
 @SuppressWarnings({"serial", "unused"})
 public class DLockManagementDUnitTest implements Serializable {
 
-  private static final int MAX_WAIT_MILLIS = 120 * 1000; // 2 MINUTES
+  private static final int MAX_WAIT_MILLIS = 2 * 60 * 1000; // 2 MINUTES
 
   private static final String LOCK_SERVICE_NAME =
       DLockManagementDUnitTest.class.getSimpleName() + "_testLockService";
diff --git a/geode-core/src/test/java/org/apache/geode/management/DiskManagementDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/DiskManagementDUnitTest.java
index 2807f34..724fad7 100644
--- a/geode-core/src/test/java/org/apache/geode/management/DiskManagementDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/DiskManagementDUnitTest.java
@@ -14,8 +14,8 @@
  */
 package org.apache.geode.management;
 
-import static java.util.concurrent.TimeUnit.*;
-import static org.assertj.core.api.Assertions.*;
+import static java.util.concurrent.TimeUnit.MINUTES;
+import static org.assertj.core.api.Assertions.assertThat;
 
 import java.io.File;
 import java.io.Serializable;
diff --git a/geode-core/src/test/java/org/apache/geode/management/DistributedSystemDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/DistributedSystemDUnitTest.java
index 9bfb525..3e2c36f 100644
--- a/geode-core/src/test/java/org/apache/geode/management/DistributedSystemDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/DistributedSystemDUnitTest.java
@@ -14,16 +14,20 @@
  */
 package org.apache.geode.management;
 
-import static java.lang.management.ManagementFactory.*;
-import static java.util.concurrent.TimeUnit.*;
-import static org.apache.geode.management.internal.MBeanJMXAdapter.*;
-import static org.apache.geode.test.dunit.Host.*;
-import static org.apache.geode.test.dunit.IgnoredException.*;
-import static org.apache.geode.test.dunit.Invoke.*;
-import static org.assertj.core.api.Assertions.*;
+import static java.lang.management.ManagementFactory.getPlatformMBeanServer;
+import static java.util.concurrent.TimeUnit.MINUTES;
+import static org.apache.geode.management.internal.MBeanJMXAdapter.getDistributedSystemName;
+import static org.apache.geode.management.internal.MBeanJMXAdapter.getMemberMBeanName;
+import static org.apache.geode.management.internal.MBeanJMXAdapter.getMemberNameOrId;
+import static org.apache.geode.test.dunit.Host.getHost;
+import static org.apache.geode.test.dunit.IgnoredException.addIgnoredException;
+import static org.apache.geode.test.dunit.Invoke.invokeInEveryVM;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 import java.io.Serializable;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -36,9 +40,9 @@ import javax.management.NotificationFilter;
 import javax.management.NotificationListener;
 import javax.management.ObjectName;
 
+import org.apache.logging.log4j.Logger;
 import org.awaitility.Awaitility;
 import org.awaitility.core.ConditionFactory;
-import org.apache.logging.log4j.Logger;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
@@ -61,20 +65,31 @@ import org.apache.geode.test.dunit.VM;
 import org.apache.geode.test.junit.categories.DistributedTest;
 
 /**
- * Distributed System management tests
- * </p>
- * a) For all the notifications i) gemfire.distributedsystem.member.joined ii)
- * gemfire.distributedsystem.member.left iii) gemfire.distributedsystem.member.suspect iv ) All
- * notifications emitted by member mbeans vi) Alerts
- * </p>
+ * DistributedSystemMXBean tests:
+ *
+ * <p>
+ * a) For all the notifications
+ * <ul>
+ * <li>i) gemfire.distributedsystem.member.joined
+ * <li>ii) gemfire.distributedsystem.member.left
+ * <li>iii) gemfire.distributedsystem.member.suspect
+ * <li>iv) All notifications emitted by member mbeans
+ * <li>v) Alerts
+ * </ul>
+ *
+ * <p>
  * b) Concurrently modify proxy list by removing member and accessing the distributed system MBean
- * </p>
+ *
+ * <p>
  * c) Aggregate Operations like shutDownAll
- * </p>
+ *
+ * <p>
  * d) Member level operations like fetchJVMMetrics()
- * </p>
+ *
+ * <p>
  * e ) Statistics
- * </p>
+ *
+ * <p>
  * TODO: break up the large tests into smaller tests
  */
 @Category(DistributedTest.class)
@@ -86,8 +101,8 @@ public class DistributedSystemDUnitTest implements Serializable {
   private static final String WARNING_LEVEL_MESSAGE = "Warning Level Alert Message";
   private static final String SEVERE_LEVEL_MESSAGE = "Severe Level Alert Message";
 
-  private static List<Notification> notifications;
-  private static Map<ObjectName, NotificationListener> notificationListenerMap;
+  private static volatile List<Notification> notifications;
+  private static volatile Map<ObjectName, NotificationListener> notificationListenerMap;
 
   @Manager
   private VM managerVM;
@@ -100,16 +115,20 @@ public class DistributedSystemDUnitTest implements Serializable {
 
   @Before
   public void before() throws Exception {
-    notifications = new ArrayList<>();
-    notificationListenerMap = new HashMap<>();
-
-    invokeInEveryVM(() -> notifications = new ArrayList<>());
-    invokeInEveryVM(() -> notificationListenerMap = new HashMap<>());
+    notifications = Collections.synchronizedList(new ArrayList<>());
+    notificationListenerMap = Collections.synchronizedMap(new HashMap<>());
+    invokeInEveryVM(() -> notifications = Collections.synchronizedList(new ArrayList<>()));
+    invokeInEveryVM(() -> notificationListenerMap = Collections.synchronizedMap(new HashMap<>()));
   }
 
   @After
   public void after() throws Exception {
     resetAlertCounts(this.managerVM);
+
+    notifications = null;
+    notificationListenerMap = null;
+    invokeInEveryVM(() -> notifications = null);
+    invokeInEveryVM(() -> notificationListenerMap = null);
   }
 
   /**
diff --git a/geode-core/src/test/java/org/apache/geode/management/JMXMBeanDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/JMXMBeanDUnitTest.java
index d2123f4..6a32cb8 100644
--- a/geode-core/src/test/java/org/apache/geode/management/JMXMBeanDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/JMXMBeanDUnitTest.java
@@ -38,32 +38,29 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.junit.Assert.assertEquals;
 
-import com.google.common.collect.Maps;
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
 
-import org.apache.geode.internal.AvailablePortHelper;
-import org.apache.geode.internal.security.SecurableCommunicationChannel;
-import org.apache.geode.test.dunit.rules.CleanupDUnitVMsRule;
-import org.apache.geode.test.dunit.rules.Locator;
-import org.apache.geode.test.dunit.rules.LocatorServerStartupRule;
-import org.apache.geode.test.dunit.rules.MBeanServerConnectionRule;
-import org.apache.geode.test.dunit.rules.MemberVM;
-import org.apache.geode.test.junit.categories.DistributedTest;
-import org.apache.geode.util.test.TestUtil;
+import javax.rmi.ssl.SslRMIClientSocketFactory;
+
+import com.google.common.collect.Maps;
 import org.junit.Before;
 import org.junit.BeforeClass;
-import org.junit.ClassRule;
 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.RuleChain;
 
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-import javax.management.MBeanServerConnection;
-import javax.rmi.ssl.SslRMIClientSocketFactory;
+import org.apache.geode.internal.AvailablePortHelper;
+import org.apache.geode.internal.security.SecurableCommunicationChannel;
+import org.apache.geode.test.dunit.rules.CleanupDUnitVMsRule;
+import org.apache.geode.test.dunit.rules.LocatorServerStartupRule;
+import org.apache.geode.test.dunit.rules.MBeanServerConnectionRule;
+import org.apache.geode.test.junit.categories.DistributedTest;
+import org.apache.geode.util.test.TestUtil;
 
 /**
  * All the non-ssl enabled locators need to be in a different VM than the ssl enabled locators in
@@ -71,7 +68,9 @@ import javax.rmi.ssl.SslRMIClientSocketFactory;
  * ssl settings cleanly.
  */
 @Category(DistributedTest.class)
+@SuppressWarnings({"serial", "unused"})
 public class JMXMBeanDUnitTest implements Serializable {
+
   private LocatorServerStartupRule lsRule = new LocatorServerStartupRule();
   private transient MBeanServerConnectionRule jmxConnector = new MBeanServerConnectionRule();
   private transient RestoreSystemProperties restoreSystemProperties = new RestoreSystemProperties();
@@ -182,7 +181,6 @@ public class JMXMBeanDUnitTest implements Serializable {
     });
   }
 
-
   private Map<String, Object> getClientEnvironment(boolean withAlias) {
     System.setProperty("javax.net.ssl.keyStore", withAlias ? multiKeystore : singleKeystore);
     System.setProperty("javax.net.ssl.keyStoreType", "JKS");
@@ -195,7 +193,6 @@ public class JMXMBeanDUnitTest implements Serializable {
     return environment;
   }
 
-
   private void validateJmxConnection(MBeanServerConnectionRule mBeanServerConnectionRule)
       throws Exception {
     // Get MBean proxy instance that will be used to make calls to registered MBean
diff --git a/geode-core/src/test/java/org/apache/geode/management/LocatorManagementDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/LocatorManagementDUnitTest.java
index 205ada5..93b081c 100644
--- a/geode-core/src/test/java/org/apache/geode/management/LocatorManagementDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/LocatorManagementDUnitTest.java
@@ -14,62 +14,58 @@
  */
 package org.apache.geode.management;
 
+import static java.util.concurrent.TimeUnit.MINUTES;
 import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER;
 import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_HTTP_PORT;
 import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_PORT;
 import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_START;
 import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
-import static org.apache.geode.distributed.ConfigurationProperties.LOG_LEVEL;
-import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.apache.geode.internal.AvailablePortHelper.getRandomAvailableTCPPort;
+import static org.apache.geode.management.MXBeanAwaitility.awaitLocalLocatorMXBean;
+import static org.apache.geode.management.MXBeanAwaitility.awaitLocatorMXBeanProxy;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.awaitility.Awaitility.await;
+
+import java.io.File;
+import java.net.InetAddress;
+import java.util.Properties;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
 
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.Locator;
-import org.apache.geode.distributed.internal.DistributionConfig;
 import org.apache.geode.distributed.internal.InternalLocator;
-import org.apache.geode.internal.AvailablePortHelper;
-import org.apache.geode.internal.cache.GemFireCacheImpl;
-import org.apache.geode.management.internal.ManagementConstants;
-import org.apache.geode.test.dunit.Assert;
 import org.apache.geode.test.dunit.Host;
-import org.apache.geode.test.dunit.LogWriterUtils;
-import org.apache.geode.test.dunit.SerializableCallable;
 import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.Wait;
-import org.apache.geode.test.dunit.WaitCriterion;
 import org.apache.geode.test.junit.categories.DistributedTest;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.Properties;
 
 /**
- * Test cases
- * 
- * DistributedSystem Cache Locator no no yes yes no yes yes yes yes
+ * Distributed tests for {@link LocatorMXBean}.
  */
 @Category(DistributedTest.class)
 public class LocatorManagementDUnitTest extends ManagementTestBase {
 
-  private static final int MAX_WAIT = 8 * ManagementConstants.REFRESH_TIME;
+  private VM managerVM;
+  private VM locatorVM;
+
+  private String hostName;
+  private int locatorPort;
 
-  private VM locator;
+  @Before
+  public void setUp() throws Exception {
+    managerVM = managingNode;
+    locatorVM = managedNode1;
 
-  @Override
-  protected final void postSetUpManagementTestBase() throws Exception {
-    locator = managedNode1;
+    hostName = Host.getHost(0).getHostName();
+    locatorPort = getRandomAvailableTCPPort();
   }
 
-  @Override
-  protected final void preTearDownManagementTestBase() throws Exception {
-    stopLocator(locator);
+  @After
+  public void tearDown() throws Exception {
+    stopLocator(locatorVM);
   }
 
   /**
@@ -77,46 +73,41 @@ public class LocatorManagementDUnitTest extends ManagementTestBase {
    */
   @Test
   public void testPeerLocation() throws Exception {
-    int locPort = AvailablePortHelper.getRandomAvailableTCPPort();
-    startLocator(locator, locPort);
-    locatorMBeanExist(locator, locPort);
-
-    Host host = Host.getHost(0);
-    String host0 = getServerHostName(host);
-    Properties props = new Properties();
-    props.setProperty(MCAST_PORT, "0");
-    props.setProperty(LOCATORS, host0 + "[" + locPort + "]");
-    props.setProperty(JMX_MANAGER, "true");
-    props.setProperty(JMX_MANAGER_START, "false");
-    props.setProperty(JMX_MANAGER_PORT, "0");
-    props.setProperty(JMX_MANAGER_HTTP_PORT, "0");
-    createCache(managingNode, props);
-    startManagingNode(managingNode);
-    DistributedMember locatorMember = getMember(locator);
-    remoteLocatorMBeanExist(managingNode, locatorMember);
+    startLocator(locatorVM, locatorPort);
+    validateLocatorMXBean(locatorVM, locatorPort);
 
+    Properties config = new Properties();
+    config.setProperty(LOCATORS, hostName + "[" + locatorPort + "]");
+    config.setProperty(JMX_MANAGER, "true");
+    config.setProperty(JMX_MANAGER_START, "false");
+    config.setProperty(JMX_MANAGER_PORT, "0");
+    config.setProperty(JMX_MANAGER_HTTP_PORT, "0");
+
+    createCache(managerVM, config);
+    startManagingNode(managerVM);
+    DistributedMember locatorMember = getMember(locatorVM);
+
+    validateLocatorMXBean(managerVM, locatorMember);
   }
 
   @Test
   public void testPeerLocationWithPortZero() throws Exception {
-    // Start the locator with port=0
-    int locPort = startLocator(locator, 0);
-    locatorMBeanExist(locator, locPort);
-
-    Host host = Host.getHost(0);
-    String host0 = getServerHostName(host);
-    Properties props = new Properties();
-    props.setProperty(MCAST_PORT, "0");
-    props.setProperty(LOCATORS, host0 + "[" + locPort + "]");
-    props.setProperty(JMX_MANAGER, "true");
-    props.setProperty(JMX_MANAGER_START, "false");
-    props.setProperty(JMX_MANAGER_PORT, "0");
-    props.setProperty(JMX_MANAGER_HTTP_PORT, "0");
-    createCache(managingNode, props);
-    startManagingNode(managingNode);
-    DistributedMember locatorMember = getMember(locator);
-    remoteLocatorMBeanExist(managingNode, locatorMember);
+    locatorPort = startLocator(locatorVM, 0);
+
+    validateLocatorMXBean(locatorVM, locatorPort);
+
+    Properties config = new Properties();
+    config.setProperty(LOCATORS, hostName + "[" + locatorPort + "]");
+    config.setProperty(JMX_MANAGER, "true");
+    config.setProperty(JMX_MANAGER_START, "false");
+    config.setProperty(JMX_MANAGER_PORT, "0");
+    config.setProperty(JMX_MANAGER_HTTP_PORT, "0");
 
+    createCache(managerVM, config);
+    startManagingNode(managerVM);
+    DistributedMember locatorMember = getMember(locatorVM);
+
+    validateLocatorMXBean(managerVM, locatorMember);
   }
 
   /**
@@ -125,260 +116,125 @@ public class LocatorManagementDUnitTest extends ManagementTestBase {
   @Test
   public void testColocatedLocator() throws Exception {
     initManagement(false);
-    int locPort = AvailablePortHelper.getRandomAvailableTCPPort();
-    startLocator(locator, locPort);
-    locatorMBeanExist(locator, locPort);
 
+    startLocator(locatorVM, locatorPort);
+
+    validateLocatorMXBean(locatorVM, locatorPort);
   }
 
   @Test
   public void testColocatedLocatorWithPortZero() throws Exception {
     initManagement(false);
-    int locPort = startLocator(locator, 0);
-    locatorMBeanExist(locator, locPort);
 
+    locatorPort = startLocator(locatorVM, 0);
+
+    validateLocatorMXBean(locatorVM, locatorPort);
   }
 
   @Test
   public void testListManagers() throws Exception {
     initManagement(false);
-    int locPort = AvailablePortHelper.getRandomAvailableTCPPort();
-    startLocator(locator, locPort);
-    listManagers(locator, locPort);
+
+    startLocator(locatorVM, locatorPort);
+
+    validateManagers(locatorVM);
   }
 
   @Test
   public void testListManagersWithPortZero() throws Exception {
     initManagement(false);
-    int locPort = startLocator(locator, 0);
-    listManagers(locator, locPort);
+
+    startLocator(locatorVM, 0);
+
+    validateManagers(locatorVM);
   }
 
   @Test
   public void testWillingManagers() throws Exception {
-    int locPort = AvailablePortHelper.getRandomAvailableTCPPort();
-    startLocator(locator, locPort);
+    startLocator(locatorVM, locatorPort);
 
-    Host host = Host.getHost(0);
-    String host0 = getServerHostName(host);
+    Properties config = new Properties();
+    config.setProperty(LOCATORS, hostName + "[" + locatorPort + "]");
+    config.setProperty(JMX_MANAGER, "true");
 
-    Properties props = new Properties();
-    props.setProperty(MCAST_PORT, "0");
-    props.setProperty(LOCATORS, host0 + "[" + locPort + "]");
-    props.setProperty(JMX_MANAGER, "true");
+    createCache(managedNode2, config);
+    createCache(managedNode3, config);
 
-    createCache(managedNode2, props);
-    createCache(managedNode3, props);
-
-    listWillingManagers(locator);
+    validatePotentialManagers(locatorVM, 3);
   }
 
   @Test
   public void testWillingManagersWithPortZero() throws Exception {
-    int locPort = startLocator(locator, 0);
-
-    Host host = Host.getHost(0);
-    String host0 = getServerHostName(host);
+    locatorPort = startLocator(locatorVM, 0);
 
-    Properties props = new Properties();
-    props.setProperty(MCAST_PORT, "0");
-    props.setProperty(LOCATORS, host0 + "[" + locPort + "]");
-    props.setProperty(JMX_MANAGER, "true");
+    Properties config = new Properties();
+    config.setProperty(LOCATORS, hostName + "[" + locatorPort + "]");
+    config.setProperty(JMX_MANAGER, "true");
 
-    createCache(managedNode2, props);
-    createCache(managedNode3, props);
+    createCache(managedNode2, config);
+    createCache(managedNode3, config);
 
-    listWillingManagers(locator);
+    validatePotentialManagers(locatorVM, 3);
   }
 
   /**
    * Starts a locator with given configuration. If DS is already started it will use the same DS
-   * 
-   * @param vm reference to VM
    */
-  protected Integer startLocator(final VM vm, final int port) {
+  private int startLocator(final VM locatorVM, final int port) {
+    return locatorVM.invoke("Start Locator In VM", () -> {
+      assertThat(InternalLocator.hasLocator()).isFalse();
 
-    return (Integer) vm.invoke(new SerializableCallable("Start Locator In VM") {
+      Properties config = new Properties();
+      config.setProperty(LOCATORS, "");
 
-      public Object call() throws Exception {
+      InetAddress bindAddress = InetAddress.getByName(hostName);
 
-        assertFalse(InternalLocator.hasLocator());
+      File logFile = new File(getTestMethodName() + "-locator" + port + ".log");
+      Locator locator = Locator.startLocatorAndDS(port, logFile, bindAddress, config);
 
-        Properties props = new Properties();
-        props.setProperty(MCAST_PORT, "0");
-
-        props.setProperty(LOCATORS, "");
-        props.setProperty(LOG_LEVEL, LogWriterUtils.getDUnitLogLevel());
-
-        InetAddress bindAddr = null;
-        try {
-          bindAddr = InetAddress.getByName(getServerHostName(vm.getHost()));
-        } catch (UnknownHostException uhe) {
-          Assert.fail("While resolving bind address ", uhe);
-        }
-
-        Locator locator = null;
-        try {
-          File logFile = new File(getTestMethodName() + "-locator" + port + ".log");
-          locator = Locator.startLocatorAndDS(port, logFile, bindAddr, props);
-        } catch (IOException ex) {
-          Assert.fail("While starting locator on port " + port, ex);
-        }
-
-        assertTrue(InternalLocator.hasLocator());
-        return locator.getPort();
-      }
+      assertThat(InternalLocator.hasLocator()).isTrue();
+      return locator.getPort();
     });
   }
 
-  /**
-   * Creates a persistent region
-   * 
-   * @param vm reference to VM
-   */
-  protected String stopLocator(VM vm) {
-
-    return (String) vm.invoke(new SerializableCallable("Stop Locator In VM") {
-
-      public Object call() throws Exception {
+  private void stopLocator(final VM vm) {
+    vm.invoke("Stop Locator In VM", () -> {
+      assertThat(InternalLocator.hasLocator()).isTrue();
 
-        assertTrue(InternalLocator.hasLocator());
-        InternalLocator.getLocator().stop();
-        return null;
-      }
+      InternalLocator.getLocator().stop();
     });
   }
 
-  /**
-   * Creates a persistent region
-   *
-   * @param vm reference to VM
-   */
-  protected void locatorMBeanExist(VM vm, final int locPort) {
-
-    vm.invoke(new SerializableCallable("Locator MBean created") {
-
-      public Object call() throws Exception {
-        GemFireCacheImpl cache = GemFireCacheImpl.getInstance();
-
-        ManagementService service = ManagementService.getExistingManagementService(cache);
-        assertNotNull(service);
-        LocatorMXBean bean = service.getLocalLocatorMXBean();
-        assertNotNull(bean);
-        assertEquals(locPort, bean.getPort());
-        LogWriterUtils.getLogWriter().info("Log of Locator" + bean.viewLog());
-        LogWriterUtils.getLogWriter().info("BindAddress" + bean.getBindAddress());
-        return null;
-      }
+  private void validateLocatorMXBean(final VM locatorVM, final int port) {
+    locatorVM.invoke("validateLocatorMXBean", () -> {
+      LocatorMXBean locatorMXBean = awaitLocalLocatorMXBean();
+
+      assertThat(locatorMXBean.getPort()).isEqualTo(port);
     });
   }
 
-  /**
-   * Creates a persistent region
-   * 
-   * @param vm reference to VM
-   */
-  protected void remoteLocatorMBeanExist(VM vm, final DistributedMember member) {
-
-    vm.invoke(new SerializableCallable("Locator MBean created") {
-
-      public Object call() throws Exception {
-        GemFireCacheImpl cache = GemFireCacheImpl.getInstance();
-        ManagementService service = ManagementService.getExistingManagementService(cache);
-        assertNotNull(service);
-        LocatorMXBean bean = MBeanUtil.getLocatorMbeanProxy(member);
-        assertNotNull(bean);
-
-        LogWriterUtils.getLogWriter().info("Log of Locator" + bean.viewLog());
-        LogWriterUtils.getLogWriter().info("BindAddress" + bean.getBindAddress());
-
-        return null;
-      }
+  private void validateLocatorMXBean(final VM vm, final DistributedMember member) {
+    vm.invoke("validateLocatorMXBean", () -> {
+      LocatorMXBean locatorMXBean = awaitLocatorMXBeanProxy(member);
+      assertThat(locatorMXBean).isNotNull();
     });
   }
 
-  /**
-   * Creates a persistent region
-   *
-   * @param vm reference to VM
-   */
-  protected void listManagers(VM vm, final int locPort) {
-
-    vm.invoke(new SerializableCallable("List Managers") {
-
-      public Object call() throws Exception {
-        GemFireCacheImpl cache = GemFireCacheImpl.getInstance();
-
-        ManagementService service = ManagementService.getExistingManagementService(cache);
-        assertNotNull(service);
-        final LocatorMXBean bean = service.getLocalLocatorMXBean();
-        assertNotNull(bean);
-
-        Wait.waitForCriterion(new WaitCriterion() {
-
-          public String description() {
-            return "Waiting for the managers List";
-          }
-
-          public boolean done() {
+  private void validateManagers(final VM locatorVM) {
+    locatorVM.invoke("validateManagers", () -> {
+      LocatorMXBean locatorMXBean = awaitLocalLocatorMXBean();
 
-            boolean done = bean.listManagers().length == 1;
-            return done;
-          }
-
-        }, MAX_WAIT, 500, true);
-
-        return null;
-      }
+      await().atMost(2, MINUTES).until(() -> assertThat(locatorMXBean.listManagers()).hasSize(1));
     });
   }
 
-  /**
-   * Creates a persistent region
-   *
-   * @param vm reference to VM
-   */
-  protected void listWillingManagers(VM vm) {
-
-    vm.invoke(new SerializableCallable("List Willing Managers") {
-
-      public Object call() throws Exception {
-        GemFireCacheImpl cache = GemFireCacheImpl.getInstance();
-
-        ManagementService service = ManagementService.getExistingManagementService(cache);
-        assertNotNull(service);
-        final LocatorMXBean bean = service.getLocalLocatorMXBean();
-        assertNotNull(bean);
-
-        Wait.waitForCriterion(new WaitCriterion() {
-
-          public String description() {
-            return "Waiting for the Willing managers List";
-          }
+  private void validatePotentialManagers(final VM locatorVM,
+      final int expectedNumberPotentialManagers) {
+    locatorVM.invoke("List Willing Managers", () -> {
+      LocatorMXBean locatorMXBean = awaitLocalLocatorMXBean();
 
-          public boolean done() {
-
-            boolean done = bean.listPotentialManagers().length == 3;
-            return done;
-          }
-
-        }, MAX_WAIT, 500, true);
-
-        return null;
-      }
+      await().atMost(2, MINUTES).until(() -> assertThat(locatorMXBean.listPotentialManagers())
+          .hasSize(expectedNumberPotentialManagers));
     });
   }
-
-  /**
-   * get the host name to use for a server cache in client/server dunit testing
-   * 
-   * @param host
-   * @return the host name
-   */
-  public static String getServerHostName(Host host) {
-    return System.getProperty(DistributionConfig.GEMFIRE_PREFIX + "server-bind-address") != null
-        ? System.getProperty(DistributionConfig.GEMFIRE_PREFIX + "server-bind-address")
-        : host.getHostName();
-  }
-
 }
diff --git a/geode-core/src/test/java/org/apache/geode/management/MBeanUtil.java b/geode-core/src/test/java/org/apache/geode/management/MBeanUtil.java
index 13b2536..ae9f0c1 100644
--- a/geode-core/src/test/java/org/apache/geode/management/MBeanUtil.java
+++ b/geode-core/src/test/java/org/apache/geode/management/MBeanUtil.java
@@ -14,7 +14,7 @@
  */
 package org.apache.geode.management;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.fail;
 
 import javax.management.InstanceNotFoundException;
 import javax.management.IntrospectionException;
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
new file mode 100644
index 0000000..80add3f
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/management/MXBeanAwaitility.java
@@ -0,0 +1,80 @@
+/*
+ * 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.management;
+
+import static java.util.concurrent.TimeUnit.MINUTES;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import javax.management.ObjectName;
+
+import org.awaitility.Awaitility;
+import org.awaitility.core.ConditionFactory;
+
+import org.apache.geode.cache.Cache;
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.internal.cache.GemFireCacheImpl;
+import org.apache.geode.management.internal.SystemManagementService;
+
+class MXBeanAwaitility {
+
+  static LocatorMXBean awaitLocalLocatorMXBean() {
+    SystemManagementService service = getSystemManagementService();
+
+    await().atMost(2, MINUTES).until(() -> assertThat(service.getLocalLocatorMXBean()).isNotNull());
+
+    return service.getLocalLocatorMXBean();
+  }
+
+  static LocatorMXBean awaitLocatorMXBeanProxy(final DistributedMember member) {
+    SystemManagementService service = getSystemManagementService();
+    ObjectName objectName = service.getLocatorMBeanName(member);
+
+    String alias = "Awaiting LocatorMXBean proxy for " + member;
+    await(alias).until(
+        () -> assertThat(service.getMBeanProxy(objectName, LocatorMXBean.class)).isNotNull());
+
+    return service.getMBeanProxy(objectName, LocatorMXBean.class);
+  }
+
+  static SystemManagementService getSystemManagementService() {
+    Cache cache = GemFireCacheImpl.getInstance();
+    return (SystemManagementService) ManagementService.getExistingManagementService(cache);
+  }
+
+  static ConditionFactory await() {
+    return Awaitility.await().atMost(2, MINUTES);
+  }
+
+  static ConditionFactory await(final String alias) {
+    return Awaitility.await(alias).atMost(2, MINUTES);
+  }
+
+  static MemberMXBean awaitMemberMXBeanProxy(final DistributedMember member) {
+    return awaitMemberMXBeanProxy(member, getSystemManagementService());
+  }
+
+  static MemberMXBean awaitMemberMXBeanProxy(final DistributedMember member,
+      final SystemManagementService managementService) {
+    ObjectName objectName = managementService.getMemberMBeanName(member);
+
+    String alias = "Awaiting MemberMXBean proxy for " + member;
+    await(alias)
+        .until(() -> assertThat(managementService.getMBeanProxy(objectName, MemberMXBean.class))
+            .isNotNull());
+
+    return managementService.getMBeanProxy(objectName, MemberMXBean.class);
+  }
+}
diff --git a/geode-core/src/test/java/org/apache/geode/management/ManagementTestBase.java b/geode-core/src/test/java/org/apache/geode/management/ManagementTestBase.java
index ef1c4fa..36b3787 100644
--- a/geode-core/src/test/java/org/apache/geode/management/ManagementTestBase.java
+++ b/geode-core/src/test/java/org/apache/geode/management/ManagementTestBase.java
@@ -14,55 +14,44 @@
  */
 package org.apache.geode.management;
 
-import static org.apache.geode.distributed.ConfigurationProperties.*;
-import static org.junit.Assert.*;
+import static org.apache.geode.distributed.ConfigurationProperties.ENABLE_TIME_STATISTICS;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_HTTP_PORT;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_PORT;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_START;
+import static org.apache.geode.distributed.ConfigurationProperties.LOG_FILE;
+import static org.apache.geode.distributed.ConfigurationProperties.STATISTIC_SAMPLING_ENABLED;
 
-import java.lang.management.ManagementFactory;
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Properties;
-import java.util.Set;
 
 import javax.management.ObjectName;
 
 import org.junit.Rule;
 
 import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.cache.Region;
 import org.apache.geode.cache.RegionFactory;
 import org.apache.geode.cache.RegionShortcut;
+import org.apache.geode.cache30.CacheTestCase;
 import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.distributed.DistributedSystem;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.internal.cache.GemFireCacheImpl;
-import org.apache.geode.management.internal.FederatingManager;
-import org.apache.geode.management.internal.LocalManager;
-import org.apache.geode.management.internal.ManagementStrings;
+import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.management.internal.SystemManagementService;
-import org.apache.geode.test.dunit.Assert;
-import org.apache.geode.test.dunit.AsyncInvocation;
 import org.apache.geode.test.dunit.Host;
-import org.apache.geode.test.dunit.Invoke;
-import org.apache.geode.test.dunit.LogWriterUtils;
 import org.apache.geode.test.dunit.SerializableCallable;
-import org.apache.geode.test.dunit.SerializableRunnable;
 import org.apache.geode.test.dunit.VM;
 import org.apache.geode.test.dunit.Wait;
 import org.apache.geode.test.dunit.WaitCriterion;
-import org.apache.geode.test.dunit.cache.internal.JUnit4CacheTestCase;
-import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
 import org.apache.geode.test.dunit.rules.DistributedRestoreSystemProperties;
 
 @SuppressWarnings("serial")
-public abstract class ManagementTestBase extends JUnit4CacheTestCase {
+public abstract class ManagementTestBase extends CacheTestCase {
 
   private static final int MAX_WAIT = 70 * 1000;
 
-  // protected static DistributedSystem ds;
   protected static ManagementService managementService;
-  // protected static Cache cache;
 
   /**
    * List containing all the Managed Node VM
@@ -77,7 +66,6 @@ public abstract class ManagementTestBase extends JUnit4CacheTestCase {
   protected static VM managedNode1;
   protected static VM managedNode2;
   protected static VM managedNode3;
-  protected static VM locatorVM;
 
   @Rule
   public DistributedRestoreSystemProperties restoreSystemProperties =
@@ -93,16 +81,17 @@ public abstract class ManagementTestBase extends JUnit4CacheTestCase {
     managedNode2 = host.getVM(2);
     managedNode3 = host.getVM(3);
 
-    managedNodeList = new ArrayList<VM>();
-
+    managedNodeList = new ArrayList<>();
     managedNodeList.add(managedNode1);
     managedNodeList.add(managedNode2);
     managedNodeList.add(managedNode3);
-    locatorVM = host.getLocator();
+
     postSetUpManagementTestBase();
   }
 
-  protected void postSetUpManagementTestBase() throws Exception {}
+  protected void postSetUpManagementTestBase() throws Exception {
+    // override if needed
+  }
 
   @Override
   public final void preTearDownCacheTestCase() throws Exception {
@@ -116,15 +105,19 @@ public abstract class ManagementTestBase extends JUnit4CacheTestCase {
     postTearDownManagementTestBase();
   }
 
-  protected void preTearDownManagementTestBase() throws Exception {}
+  protected void preTearDownManagementTestBase() throws Exception {
+    // override if needed
+  }
 
-  protected void postTearDownManagementTestBase() throws Exception {}
+  protected void postTearDownManagementTestBase() throws Exception {
+    // override if needed
+  }
 
   /**
    * managingNodeFirst variable tests for two different test cases where Managing & Managed Node
    * creation time lines are reversed.
    */
-  protected void initManagement(final boolean managingNodeFirst) throws Exception {
+  protected void initManagement(final boolean managingNodeFirst) {
     if (managingNodeFirst) {
       createManagementCache(managingNode);
       startManagingNode(managingNode);
@@ -141,34 +134,34 @@ public abstract class ManagementTestBase extends JUnit4CacheTestCase {
     }
   }
 
-  protected void createCache(final VM vm1) throws Exception {
-    vm1.invoke("Create Cache", () -> {
+  protected void createCache(final VM vm) {
+    vm.invoke("Create Cache", () -> {
       createCache(false);
     });
   }
 
-  protected void createCache(final VM vm1, final Properties props) throws Exception {
-    vm1.invoke("Create Cache", () -> {
+  protected void createCache(final VM vm, final Properties props) {
+    vm.invoke("Create Cache", () -> {
       createCache(props);
     });
   }
 
-  private Cache createCache(final Properties props) {
-    Cache cache = getCache(props);
+  private Cache createCache(final Properties config) {
+    Cache cache = getCache(config);
     managementService = ManagementService.getManagementService(cache);
-
     return cache;
   }
 
-  protected Cache createCache(final boolean management) {
-
+  protected Cache createCache(final boolean isManager) {
     Properties props = new Properties();
-    if (management) {
+
+    if (isManager) {
       props.setProperty(JMX_MANAGER, "true");
       props.setProperty(JMX_MANAGER_START, "false");
       props.setProperty(JMX_MANAGER_PORT, "0");
       props.setProperty(JMX_MANAGER_HTTP_PORT, "0");
     }
+
     props.setProperty(ENABLE_TIME_STATISTICS, "true");
     props.setProperty(STATISTIC_SAMPLING_ENABLED, "true");
     props.setProperty(LOG_FILE, getTestMethodName() + "-.log");
@@ -179,15 +172,15 @@ public abstract class ManagementTestBase extends JUnit4CacheTestCase {
     return cache;
   }
 
-  protected void createManagementCache(final VM vm1) throws Exception {
-    vm1.invoke("Create Management Cache", () -> {
+  protected void createManagementCache(final VM vm) {
+    vm.invoke("Create Management Cache", () -> {
       createCache(true);
     });
   }
 
-  protected void closeCache(final VM vm1) throws Exception {
-    vm1.invoke("Close Cache", () -> {
-      GemFireCacheImpl existingInstance = GemFireCacheImpl.getInstance();
+  protected void closeCache(final VM vm) {
+    vm.invoke("Close Cache", () -> {
+      InternalCache existingInstance = GemFireCacheImpl.getInstance();
       if (existingInstance != null) {
         existingInstance.close();
       }
@@ -200,7 +193,7 @@ public abstract class ManagementTestBase extends JUnit4CacheTestCase {
 
   protected String getMemberId(final VM vm) {
     return vm.invoke("getMemberId", () -> {
-      GemFireCacheImpl cache = GemFireCacheImpl.getInstance();
+      InternalCache cache = GemFireCacheImpl.getInstance();
       return cache.getDistributedSystem().getDistributedMember().getId();
     });
   }
@@ -216,11 +209,7 @@ public abstract class ManagementTestBase extends JUnit4CacheTestCase {
       @Override
       public boolean done() {
         SystemManagementService service = (SystemManagementService) managementService;
-        if (service.getMBeanProxy(objectName, interfaceClass) != null) {
-          return true;
-        } else {
-          return false;
-        }
+        return service.getMBeanProxy(objectName, interfaceClass) != null;
       }
     }, MAX_WAIT, 500, true);
   }
@@ -228,23 +217,21 @@ public abstract class ManagementTestBase extends JUnit4CacheTestCase {
   /**
    * Marks a VM as Managing
    */
-  protected void startManagingNode(final VM vm1) {
-    vm1.invoke("Start Being Managing Node", () -> {
+  protected void startManagingNode(final VM vm) {
+    vm.invoke("Start Being Managing Node", () -> {
       Cache existingCache = GemFireCacheImpl.getInstance();
-      // if (existingCache != null && !existingCache.isClosed()) {
       managementService = ManagementService.getManagementService(existingCache);
       SystemManagementService service = (SystemManagementService) managementService;
       service.createManager();
       service.startManager();
-      // }
     });
   }
 
   /**
    * Stops a VM as a Managing node
    */
-  protected void stopManagingNode(final VM vm1) {
-    vm1.invoke("Stop Being Managing Node", () -> {
+  protected void stopManagingNode(final VM vm) {
+    vm.invoke("Stop Being Managing Node", () -> {
       Cache existingCache = GemFireCacheImpl.getInstance();
       if (existingCache != null && !existingCache.isClosed()) {
         if (managementService.isManager()) {
@@ -267,60 +254,14 @@ public abstract class ManagementTestBase extends JUnit4CacheTestCase {
   }
 
   /**
-   * Creates a Distributed region
-   */
-  protected void createDistributedRegion(final VM vm, final String regionName)
-      throws InterruptedException {
-    AsyncInvocation future = createDistributedRegionAsync(vm, regionName);
-    future.join(MAX_WAIT);
-    if (future.isAlive()) {
-      fail("Region not created within" + MAX_WAIT);
-    }
-    if (future.exceptionOccurred()) {
-      throw new RuntimeException(future.getException());
-    }
-  }
-
-  /**
    * Creates a Local region
    */
-  protected void createLocalRegion(final VM vm, final String localRegionName) throws Exception {
+  protected void createLocalRegion(final VM vm, final String localRegionName) {
     vm.invoke("Create Local region", () -> {
-      GemFireCacheImpl cache = GemFireCacheImpl.getInstance();
-      SystemManagementService service = (SystemManagementService) getManagementService();
-      RegionFactory rf = cache.createRegionFactory(RegionShortcut.LOCAL);
-
-      LogWriterUtils.getLogWriter().info("Creating Local Region");
-      rf.create(localRegionName);
-    });
-  }
-
-  /**
-   * Creates a Sub region
-   */
-  protected void createSubRegion(final VM vm, final String parentRegionPath,
-      final String subregionName) throws Exception {
-    vm.invoke("Create Sub region", () -> {
-      GemFireCacheImpl cache = GemFireCacheImpl.getInstance();
+      InternalCache cache = GemFireCacheImpl.getInstance();
       SystemManagementService service = (SystemManagementService) getManagementService();
-      Region region = cache.getRegion(parentRegionPath);
-
-      LogWriterUtils.getLogWriter().info("Creating Sub Region");
-      region.createSubregion(subregionName, region.getAttributes());
-    });
-  }
-
-  /**
-   * Creates a Distributed Region
-   */
-  private AsyncInvocation createDistributedRegionAsync(final VM vm, final String regionName) {
-    return vm.invokeAsync("Create Distributed region", () -> {
-      GemFireCacheImpl cache = GemFireCacheImpl.getInstance();
-      SystemManagementService service = (SystemManagementService) getManagementService();
-
-      RegionFactory rf = cache.createRegionFactory(RegionShortcut.REPLICATE);
-      LogWriterUtils.getLogWriter().info("Creating Dist Region");
-      rf.create(regionName);
+      RegionFactory factory = cache.createRegionFactory(RegionShortcut.LOCAL);
+      factory.create(localRegionName);
     });
   }
 
@@ -329,48 +270,19 @@ public abstract class ManagementTestBase extends JUnit4CacheTestCase {
    */
   protected void createPartitionRegion(final VM vm, final String partitionRegionName) {
     vm.invoke("Create Partitioned region", () -> {
-      GemFireCacheImpl cache = GemFireCacheImpl.getInstance();
+      InternalCache cache = GemFireCacheImpl.getInstance();
       SystemManagementService service = (SystemManagementService) getManagementService();
-      RegionFactory rf = cache.createRegionFactory(RegionShortcut.PARTITION_REDUNDANT);
-      LogWriterUtils.getLogWriter().info("Creating Par Region");
-      rf.create(partitionRegionName);
+      RegionFactory factory = cache.createRegionFactory(RegionShortcut.PARTITION_REDUNDANT);
+      factory.create(partitionRegionName);
     });
   }
 
-  protected void waitForAllMembers(final int expectedCount) {
-    ManagementService service = getManagementService();
-    final DistributedSystemMXBean bean = service.getDistributedSystemMXBean();
-
-    assertNotNull(service.getDistributedSystemMXBean());
-
-    Wait.waitForCriterion(new WaitCriterion() {
-      @Override
-      public String description() {
-        return "Waiting All members to intimate DistributedSystemMBean";
-      }
-
-      @Override
-      public boolean done() {
-        if (bean.listMemberObjectNames() != null) {
-          LogWriterUtils.getLogWriter()
-              .info("Member Length " + bean.listMemberObjectNames().length);
-        }
-        if (bean.listMemberObjectNames().length >= expectedCount) {
-          return true;
-        } else {
-          return false;
-        }
-      }
-    }, MAX_WAIT, 500, true);
-
-    assertNotNull(bean.getManagerObjectName());
-  }
-
   protected static void waitForRefresh(final int expectedRefreshCount,
       final ObjectName objectName) {
-    final ManagementService service = getManagementService();
+    ManagementService service = getManagementService();
 
     Wait.waitForCriterion(new WaitCriterion() {
+
       private int actualRefreshCount = 0;
       private long lastRefreshTime = service.getLastUpdateTime(objectName);
 
@@ -387,10 +299,7 @@ public abstract class ManagementTestBase extends JUnit4CacheTestCase {
           actualRefreshCount++;
 
         }
-        if (actualRefreshCount >= expectedRefreshCount) {
-          return true;
-        }
-        return false;
+        return actualRefreshCount >= expectedRefreshCount;
       }
     }, MAX_WAIT, 500, true);
   }
@@ -398,19 +307,14 @@ public abstract class ManagementTestBase extends JUnit4CacheTestCase {
   protected DistributedMember getMember(final VM vm) {
     SerializableCallable getMember = new SerializableCallable("Get Member") {
       public Object call() {
-        GemFireCacheImpl cache = GemFireCacheImpl.getInstance();
+        InternalCache cache = GemFireCacheImpl.getInstance();
         return cache.getDistributedSystem().getDistributedMember();
-
       }
     };
     return (DistributedMember) vm.invoke(getMember);
   }
 
-  protected boolean mbeanExists(final ObjectName objectName) {
-    return ManagementFactory.getPlatformMBeanServer().isRegistered(objectName);
-  }
-
-  protected <T> T getMBeanProxy(final ObjectName objectName, Class<T> interfaceClass) {
+  protected <T> T getMBeanProxy(final ObjectName objectName, final Class<T> interfaceClass) {
     SystemManagementService service =
         (SystemManagementService) ManagementService.getManagementService(getCache());
     return service.getMBeanProxy(objectName, interfaceClass);
diff --git a/geode-core/src/test/java/org/apache/geode/management/ManagementTestRule.java b/geode-core/src/test/java/org/apache/geode/management/ManagementTestRule.java
index aff5d6c..d4291d4 100644
--- a/geode-core/src/test/java/org/apache/geode/management/ManagementTestRule.java
+++ b/geode-core/src/test/java/org/apache/geode/management/ManagementTestRule.java
@@ -14,9 +14,15 @@
  */
 package org.apache.geode.management;
 
-import static org.apache.geode.distributed.ConfigurationProperties.*;
-import static org.apache.geode.test.dunit.Host.*;
-import static org.assertj.core.api.Assertions.*;
+import static org.apache.geode.distributed.ConfigurationProperties.ENABLE_TIME_STATISTICS;
+import static org.apache.geode.distributed.ConfigurationProperties.HTTP_SERVICE_PORT;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_PORT;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_START;
+import static org.apache.geode.distributed.ConfigurationProperties.NAME;
+import static org.apache.geode.distributed.ConfigurationProperties.STATISTIC_SAMPLING_ENABLED;
+import static org.apache.geode.test.dunit.Host.getHost;
+import static org.assertj.core.api.Assertions.assertThat;
 
 import java.io.Serializable;
 import java.lang.annotation.Annotation;
@@ -42,7 +48,6 @@ import org.apache.geode.test.dunit.VM;
 import org.apache.geode.test.dunit.cache.internal.JUnit4CacheTestCase;
 import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
 import org.apache.geode.test.dunit.standalone.DUnitLauncher;
-import org.apache.geode.test.junit.rules.serializable.SerializableStatement;
 
 /**
  * Note: Overriding MethodRule is only way to get {@code Object target}
diff --git a/geode-core/src/test/java/org/apache/geode/management/MemberMBeanAttributesDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/MemberMBeanAttributesDUnitTest.java
index 97f766e..403b548 100644
--- a/geode-core/src/test/java/org/apache/geode/management/MemberMBeanAttributesDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/MemberMBeanAttributesDUnitTest.java
@@ -14,265 +14,220 @@
  */
 package org.apache.geode.management;
 
+import static org.apache.geode.management.MXBeanAwaitility.await;
+import static org.apache.geode.management.MXBeanAwaitility.getSystemManagementService;
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
 
 import java.lang.management.ManagementFactory;
 
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
+import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.Region;
 import org.apache.geode.cache.RegionFactory;
 import org.apache.geode.cache.RegionShortcut;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.internal.NanoTimer;
 import org.apache.geode.internal.cache.GemFireCacheImpl;
-import org.apache.geode.internal.process.PidUnavailableException;
+import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.internal.process.ProcessUtils;
-import org.apache.geode.test.dunit.LogWriterUtils;
-import org.apache.geode.test.dunit.SerializableRunnable;
+import org.apache.geode.internal.statistics.HostStatSampler;
+import org.apache.geode.internal.statistics.SampleCollector;
 import org.apache.geode.test.dunit.VM;
 import org.apache.geode.test.junit.categories.DistributedTest;
 import org.apache.geode.test.junit.categories.FlakyTest;
 
 /**
- * This test class checks around 89 attributes of Member MBeans
- *
+ * Distributed tests for {@link MemberMXBean} attributes.
  */
 @Category(DistributedTest.class)
+@SuppressWarnings({"serial", "unused"})
 public class MemberMBeanAttributesDUnitTest extends ManagementTestBase {
 
-
-  private static final long serialVersionUID = 1L;
-
-  /**
-   * Factor converting bytes to MB
-   */
-  private static final long MBFactor = 1024 * 1024;
-
-  // This must be bigger than the dunit ack-wait-threshold for the revoke
-  // tests. The command line is setting the ack-wait-threshold to be
-  // 60 seconds.
-  private static final int MAX_WAIT = 70 * 1000;
-
-  protected static final long SLEEP = 100;
-
-
-
-  public MemberMBeanAttributesDUnitTest() {
-    super();
-  }
-
-  protected void sample(VM vm1) {
-    vm1.invoke(new SerializableRunnable("Create Cache") {
-      public void run() {
-        InternalDistributedSystem.getConnectedInstance().getStatSampler().getSampleCollector()
-            .sample(NanoTimer.getTime());
-      }
-
-    });
-  }
-
-
+  private static final long BYTES_PER_MEGABYTE = 1024 * 1024;
 
   @Test
   public void testReplRegionAttributes() throws Exception {
     initManagement(false);
     setupForReplicateRegionAttributes(managedNodeList.get(0), 1);
     setupForReplicateRegionAttributes(managedNodeList.get(1), 201);
-    sample(managedNodeList.get(1));// Sample now
-    isReplicatedRegionAttrsOK(managedNodeList.get(1));
 
-  }
+    sampleStatistics(managedNodeList.get(1));// Sample now
 
+    validateReplicateRegionAttributes(managedNodeList.get(1));
+  }
 
   @Test
   public void testPRRegionAttributes() throws Exception {
     initManagement(false);
     setupForPartitionedRegionAttributes(managedNodeList.get(0), 1);
-    sample(managedNodeList.get(0));// Sample now
-    isPartitionedRegionAttrsOK(managedNodeList.get(0));
 
+    sampleStatistics(managedNodeList.get(0));// Sample now
+
+    validatePartitionedRegionAttributes(managedNodeList.get(0));
   }
 
   @Test
   public void testOSAttributes() throws Exception {
     initManagement(false);
-    isOSRelatedAttrsOK(managedNodeList.get(0));
+
+    validateSystemAndOSAttributes(managedNodeList.get(0));
   }
 
   @Category(FlakyTest.class) // GEODE-1482
   @Test
   public void testConfigAttributes() throws Exception {
     initManagement(false);
-    isConfigRelatedAttrsOK(managedNodeList.get(0));
-  }
 
+    validateConfigAttributes(managedNodeList.get(0));
+  }
 
-  public void setupForReplicateRegionAttributes(VM vm1, final int offset) {
-    vm1.invoke(new SerializableRunnable("Create Cache") {
-      public void run() {
-        GemFireCacheImpl cache = GemFireCacheImpl.getInstance();
-        RegionFactory rf = cache.createRegionFactory(RegionShortcut.REPLICATE);
-        LogWriterUtils.getLogWriter().info("Creating Dist Region");
-        rf.create("testRegion1");
-        rf.create("testRegion2");
-        rf.create("testRegion3");
-
+  private void sampleStatistics(final VM vm) {
+    vm.invoke("sampleStatistics", () -> {
+      InternalDistributedSystem system = getInternalDistributedSystem();
+      HostStatSampler sampler = system.getStatSampler();
+      SampleCollector sampleCollector = sampler.getSampleCollector();
+      sampleCollector.sample(NanoTimer.getTime());
+    });
+  }
 
-        Region r1 = cache.getRegion("/testRegion1");
-        rf.createSubregion(r1, "testSubRegion1");
+  private void setupForReplicateRegionAttributes(final VM vm, final int offset) {
+    vm.invoke("setupForReplicateRegionAttributes", () -> {
+      Cache cache = getInternalCache();
 
-        Region r2 = cache.getRegion("/testRegion2");
-        rf.createSubregion(r2, "testSubRegion2");
+      RegionFactory regionFactory = cache.createRegionFactory(RegionShortcut.REPLICATE);
+      regionFactory.create("testRegion1");
+      regionFactory.create("testRegion2");
+      regionFactory.create("testRegion3");
 
-        Region r3 = cache.getRegion("/testRegion3");
-        rf.createSubregion(r3, "testSubRegion3");
+      Region region1 = cache.getRegion("/testRegion1");
+      regionFactory.createSubregion(region1, "testSubRegion1");
 
+      Region region2 = cache.getRegion("/testRegion2");
+      regionFactory.createSubregion(region2, "testSubRegion2");
 
-        for (int i = offset; i < offset + 200; i++) {
-          r1.put(new Integer(i), new Integer(i));
-          r2.put(new Integer(i), new Integer(i));
-          r3.put(new Integer(i), new Integer(i));
-        }
+      Region region3 = cache.getRegion("/testRegion3");
+      regionFactory.createSubregion(region3, "testSubRegion3");
 
+      for (int i = offset; i < offset + 200; i++) {
+        region1.put(i, i);
+        region2.put(i, i);
+        region3.put(i, i);
       }
     });
-
   }
 
-  public void setupForPartitionedRegionAttributes(VM vm1, final int offset) {
-    vm1.invoke(new SerializableRunnable("Create Cache") {
-      public void run() {
-        GemFireCacheImpl cache = GemFireCacheImpl.getInstance();
-        RegionFactory prRF = cache.createRegionFactory(RegionShortcut.PARTITION_REDUNDANT);
+  private void setupForPartitionedRegionAttributes(final VM vm, final int offset) {
+    vm.invoke("setupForPartitionedRegionAttributes", () -> {
+      Cache cache = getInternalCache();
+      RegionFactory regionFactory = cache.createRegionFactory(RegionShortcut.PARTITION_REDUNDANT);
 
-        prRF.create("testPRRegion1");
-        prRF.create("testPRRegion2");
-        prRF.create("testPRRegion3");
-
-        Region pr1 = cache.getRegion("/testPRRegion1");
-        Region pr2 = cache.getRegion("/testPRRegion2");
-        Region pr3 = cache.getRegion("/testPRRegion3");
-
-        for (int i = offset; i < offset + 200; i++) {
-          pr1.put(new Integer(i), new Integer(i));
-          pr2.put(new Integer(i), new Integer(i));
-          pr3.put(new Integer(i), new Integer(i));
-        }
+      regionFactory.create("testPRRegion1");
+      regionFactory.create("testPRRegion2");
+      regionFactory.create("testPRRegion3");
 
+      Region region1 = cache.getRegion("/testPRRegion1");
+      Region region2 = cache.getRegion("/testPRRegion2");
+      Region region3 = cache.getRegion("/testPRRegion3");
 
+      for (int i = offset; i < offset + 200; i++) {
+        region1.put(i, i);
+        region2.put(i, i);
+        region3.put(i, i);
       }
     });
-
   }
 
   /**
    * This will check all the attributes which does not depend on any distribution message.
-   * 
-   * @param vm1
-   * @throws Exception
    */
-  @SuppressWarnings("serial")
-  public void isPartitionedRegionAttrsOK(VM vm1) {
-    vm1.invoke(new SerializableRunnable("Create Cache") {
-      public void run() {
-        MemberMXBean bean = managementService.getMemberMXBean();
-        assertEquals(3, bean.getPartitionRegionCount());
-        assertEquals(339, bean.getTotalBucketCount());
-        assertEquals(339, bean.getTotalPrimaryBucketCount());
+  private void validatePartitionedRegionAttributes(final VM vm) {
+    vm.invoke("validatePartitionedRegionAttributes", () -> {
+      MemberMXBean memberMXBean = getSystemManagementService().getMemberMXBean();
 
-      }
+      assertEquals(3, memberMXBean.getPartitionRegionCount());
+      assertEquals(339, memberMXBean.getTotalBucketCount());
+      assertEquals(339, memberMXBean.getTotalPrimaryBucketCount());
     });
-
   }
 
   /**
    * This will check all the attributes which does not depend on any distribution message.
-   * 
-   * @param vm1
-   * @throws Exception
    */
-  @SuppressWarnings("serial")
-  public void isReplicatedRegionAttrsOK(VM vm1) {
-    vm1.invoke(new SerializableRunnable("Create Cache") {
-      public void run() {
-        MemberMXBean bean = managementService.getMemberMXBean();
-
-        assertEquals(6, bean.getTotalRegionCount());
-        assertEquals(1200, bean.getTotalRegionEntryCount());
-
-        assertEquals(3, bean.getRootRegionNames().length);
-        assertEquals(600, bean.getInitialImageKeysReceived());
-        assertEquals(6, bean.listRegions().length);
-      }
-    });
+  private void validateReplicateRegionAttributes(final VM vm) {
+    vm.invoke("validateReplicateRegionAttributes", () -> {
+      MemberMXBean memberMXBean = getSystemManagementService().getMemberMXBean();
 
+      assertEquals(6, memberMXBean.getTotalRegionCount());
+      assertEquals(1200, memberMXBean.getTotalRegionEntryCount());
+
+      assertEquals(3, memberMXBean.getRootRegionNames().length);
+      assertEquals(600, memberMXBean.getInitialImageKeysReceived());
+      assertEquals(6, memberMXBean.listRegions().length);
+    });
   }
 
   /**
    * This will check all the attributes which does not depend on any distribution message.
-   * 
-   * @param vm1
-   * @throws Exception
    */
-  @SuppressWarnings("serial")
-  public void isOSRelatedAttrsOK(VM vm1) {
-    vm1.invoke(new SerializableRunnable("Create Cache") {
-      public void run() {
-        MemberMXBean bean = managementService.getMemberMXBean();
-
-        try {
-          assertEquals(ProcessUtils.identifyPid(), bean.getProcessId());
-        } catch (PidUnavailableException e) {
-          e.printStackTrace();
-        }
-        assertEquals(ManagementFactory.getRuntimeMXBean().getClassPath(), bean.getClassPath());
-
-        assertTrue(bean.getCurrentTime() > 0);
-        // Sleep for one second
-        try {
-          Thread.sleep(1000);
-        } catch (InterruptedException e) {
-          e.printStackTrace();
-        }
-        assertTrue(bean.getMemberUpTime() > 0);
-        assertTrue(bean.getCurrentHeapSize() > 10);
-        assertTrue(bean.getFreeHeapSize() > 0);
-        assertEquals(bean.getMaximumHeapSize(),
-            ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getMax() / MBFactor);
-
-        // @TODO Need more definitive test case
-        assertTrue(bean.fetchJvmThreads().length > 0);
-
-        // @TODO Need more definitive test case
-        // System.out.println(" CPU Usage is "+ bean.getCpuUsage());
-        // assertTrue(bean.getCpuUsage() > 0.0f);
-
-        // bean.getFileDescriptorLimit()
-      }
-    });
+  private void validateSystemAndOSAttributes(final VM vm) {
+    vm.invoke("validateSystemAndOSAttributes", () -> {
+      MemberMXBean memberMXBean = getSystemManagementService().getMemberMXBean();
 
-  }
+      assertThat(memberMXBean.getProcessId()).isEqualTo(ProcessUtils.identifyPid());
+      assertThat(memberMXBean.getClassPath()).isEqualTo(getClassPath());
+      assertThat(memberMXBean.getCurrentTime()).isGreaterThan(0);
 
-  @SuppressWarnings("serial")
-  public void isConfigRelatedAttrsOK(VM vm1) {
-    vm1.invoke(new SerializableRunnable("Create Cache") {
-      public void run() {
-        MemberMXBean bean = managementService.getMemberMXBean();
+      await().until(() -> assertThat(memberMXBean.getMemberUpTime()).isGreaterThan(0));
 
-        assertFalse(bean.hasGatewayReceiver());
-        assertFalse(bean.hasGatewaySender());
-        assertFalse(bean.isLocator());
-        assertFalse(bean.isManager());
-        assertFalse(bean.isServer());
-        assertFalse(bean.isManagerCreated());
+      assertThat(memberMXBean.getUsedMemory()).isGreaterThan(10);
+      assertThat(memberMXBean.getCurrentHeapSize()).isGreaterThan(10);
 
+      assertThat(memberMXBean.getFreeMemory()).isGreaterThan(0);
+      assertThat(memberMXBean.getFreeHeapSize()).isGreaterThan(0);
 
-      }
+      assertThat(memberMXBean.getMaxMemory()).isEqualTo(getHeapMemoryUsageMegabytes());
+      assertThat(memberMXBean.getMaximumHeapSize()).isEqualTo(getHeapMemoryUsageMegabytes());
+
+      assertThat(memberMXBean.fetchJvmThreads().length).isGreaterThan(0);
+
+      // TODO: provide better/more validation
+      // System.out.println(" CPU Usage is "+ bean.getCpuUsage());
+      // assertTrue(bean.getCpuUsage() > 0.0f);
+
+      // bean.getFileDescriptorLimit()
     });
+  }
+
+  private void validateConfigAttributes(final VM vm) {
+    vm.invoke("validateConfigAttributes", () -> {
+      MemberMXBean memberMXBean = getSystemManagementService().getMemberMXBean();
+
+      assertFalse(memberMXBean.hasGatewayReceiver());
+      assertFalse(memberMXBean.hasGatewaySender());
+      assertFalse(memberMXBean.isLocator());
+      assertFalse(memberMXBean.isManager());
+      assertFalse(memberMXBean.isServer());
+      assertFalse(memberMXBean.isManagerCreated());
+    });
+  }
+
+  private String getClassPath() {
+    return ManagementFactory.getRuntimeMXBean().getClassPath();
+  }
+
+  private long getHeapMemoryUsageMegabytes() {
+    return ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getMax() / BYTES_PER_MEGABYTE;
+  }
+
+  private InternalDistributedSystem getInternalDistributedSystem() {
+    return InternalDistributedSystem.getConnectedInstance();
+  }
 
+  private InternalCache getInternalCache() {
+    return GemFireCacheImpl.getInstance();
   }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/management/OffHeapManagementDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/OffHeapManagementDUnitTest.java
index 25fa3bb..a254f9a 100644
--- a/geode-core/src/test/java/org/apache/geode/management/OffHeapManagementDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/OffHeapManagementDUnitTest.java
@@ -14,10 +14,16 @@
  */
 package org.apache.geode.management;
 
-import static org.awaitility.Awaitility.*;
-import static org.apache.geode.distributed.ConfigurationProperties.*;
-import static org.junit.Assert.*;
-
+import static java.util.concurrent.TimeUnit.MINUTES;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_PORT;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_START;
+import static org.apache.geode.distributed.ConfigurationProperties.OFF_HEAP_MEMORY_SIZE;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.awaitility.Awaitility.await;
+import static org.junit.Assert.fail;
+
+import java.lang.management.ManagementFactory;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -32,6 +38,10 @@ import javax.management.Notification;
 import javax.management.NotificationListener;
 import javax.management.ObjectName;
 
+import com.google.common.base.Stopwatch;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -39,15 +49,14 @@ import org.apache.geode.OutOfOffHeapMemoryException;
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.DataPolicy;
 import org.apache.geode.cache.Region;
+import org.apache.geode.cache30.CacheTestCase;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.internal.offheap.OffHeapStorage;
 import org.apache.geode.internal.offheap.OffHeapStoredObject;
 import org.apache.geode.management.internal.MBeanJMXAdapter;
-import org.apache.geode.management.internal.beans.MemberMBean;
 import org.apache.geode.test.dunit.Host;
-import org.apache.geode.test.dunit.SerializableRunnable;
 import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.cache.internal.JUnit4CacheTestCase;
+import org.apache.geode.test.dunit.rules.DistributedRestoreSystemProperties;
 import org.apache.geode.test.junit.categories.DistributedTest;
 
 /**
@@ -55,7 +64,7 @@ import org.apache.geode.test.junit.categories.DistributedTest;
  */
 @Category(DistributedTest.class)
 @SuppressWarnings("serial")
-public class OffHeapManagementDUnitTest extends JUnit4CacheTestCase {
+public class OffHeapManagementDUnitTest extends CacheTestCase {
 
   /**
    * Specified assertion operations.
@@ -77,7 +86,7 @@ public class OffHeapManagementDUnitTest extends JUnit4CacheTestCase {
   /**
    * Expected total off-heap reserved memory (1 megabyte).
    */
-  private static final long TOTAL_MEMORY = 1048576;
+  private static final int TOTAL_MEMORY = 1048576;
 
   /**
    * Half of expected memory total.
@@ -135,20 +144,41 @@ public class OffHeapManagementDUnitTest extends JUnit4CacheTestCase {
   /**
    * Local MBeanServer.
    */
-  private static MBeanServer mbeanServer = MBeanJMXAdapter.mbeanServer;
+  private static MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();
 
-  @Override
-  public final void postSetUp() throws Exception {
-    Host.getHost(0).getVM(0).invoke(() -> {
+  private VM vm;
+
+  @Rule
+  public DistributedRestoreSystemProperties restoreSystemProperties =
+      new DistributedRestoreSystemProperties();
+
+  @Before
+  public void setUp() throws Exception {
+    vm = Host.getHost(0).getVM(0);
+
+    vm.invoke(() -> {
       System.setProperty(OffHeapStorage.STAY_CONNECTED_ON_OUTOFOFFHEAPMEMORY_PROPERTY, "true");
     });
   }
 
+  @After
+  public void tearDown() throws Exception {
+    doCleanupOnVm(vm);
+  }
+
+  /**
+   * Returns off-heap system properties for enabling off-heap and the JMX system.
+   */
   @Override
-  public final void preTearDownCacheTestCase() throws Exception {
-    Host.getHost(0).getVM(0).invoke(() -> {
-      System.clearProperty(OffHeapStorage.STAY_CONNECTED_ON_OUTOFOFFHEAPMEMORY_PROPERTY);
-    });
+  public Properties getDistributedSystemProperties() {
+    Properties config = new Properties();
+
+    config.setProperty(OFF_HEAP_MEMORY_SIZE, "1m");
+    config.setProperty(JMX_MANAGER, "true");
+    config.setProperty(JMX_MANAGER_START, "true");
+    config.setProperty(JMX_MANAGER_PORT, "0");
+
+    return config;
   }
 
   /**
@@ -156,47 +186,39 @@ public class OffHeapManagementDUnitTest extends JUnit4CacheTestCase {
    */
   @Test
   public void testOffHeapMBeanAttributesAndStats() throws Exception {
-    final VM vm = Host.getHost(0).getVM(0);
-
-    try {
-      // Setup off-heap memory for cache
-      setSystemPropertiesOnVm(vm, true, getSystemProperties());
+    // Setup off-heap memory for cache
+    setSystemPropertiesOnVm(vm, true, getDistributedSystemProperties());
 
-      // Create our off-heap region
-      assertNotNull(createOffHeapRegionOnVm(vm, OFF_HEAP_REGION_NAME, DataPolicy.REPLICATE));
+    // Create our off-heap region
+    assertThat(createOffHeapRegionOnVm(vm, OFF_HEAP_REGION_NAME, DataPolicy.REPLICATE)).isNotNull();
 
-      // Make sure our off-heap region has off-heap enabled.
-      assertOffHeapRegionAttributesOnVm(vm);
+    // Make sure our off-heap region has off-heap enabled.
+    assertOffHeapRegionAttributesOnVm(vm);
 
-      // Make sure our starting off heap stats are correct
-      assertOffHeapMetricsOnVm(vm, TOTAL_MEMORY, 0, 0, 0);
+    // Make sure our starting off heap stats are correct
+    assertOffHeapMetricsOnVm(vm, TOTAL_MEMORY, 0, 0, 0);
 
-      /*
-       * Perform ops on the off-heap region and assert that the off-heap metrics correctly reflect
-       * the ops
-       */
-      {
-        doPutOnVm(vm, KEY, VALUE, OFF_HEAP_REGION_NAME, false);
-        assertOffHeapMetricsOnVm(vm, (TOTAL_MEMORY - OBJECT_SIZE), OBJECT_SIZE, 1, 0);
+    /*
+     * Perform ops on the off-heap region and assert that the off-heap metrics correctly reflect the
+     * ops
+     */
+    doPutOnVm(vm, KEY, VALUE, OFF_HEAP_REGION_NAME, false);
+    assertOffHeapMetricsOnVm(vm, (TOTAL_MEMORY - OBJECT_SIZE), OBJECT_SIZE, 1, 0);
 
-        doPutOnVm(vm, KEY2, VALUE, OFF_HEAP_REGION_NAME, false);
-        assertOffHeapMetricsOnVm(vm, (TOTAL_MEMORY - (2 * OBJECT_SIZE)), (2 * OBJECT_SIZE), 2, 0);
+    doPutOnVm(vm, KEY2, VALUE, OFF_HEAP_REGION_NAME, false);
+    assertOffHeapMetricsOnVm(vm, (TOTAL_MEMORY - (2 * OBJECT_SIZE)), (2 * OBJECT_SIZE), 2, 0);
 
-        doPutOnVm(vm, KEY3, VALUE, OFF_HEAP_REGION_NAME, false);
-        assertOffHeapMetricsOnVm(vm, (TOTAL_MEMORY - (3 * OBJECT_SIZE)), (3 * OBJECT_SIZE), 3, 0);
+    doPutOnVm(vm, KEY3, VALUE, OFF_HEAP_REGION_NAME, false);
+    assertOffHeapMetricsOnVm(vm, (TOTAL_MEMORY - (3 * OBJECT_SIZE)), (3 * OBJECT_SIZE), 3, 0);
 
-        doDestroyOnVm(vm, KEY3, OFF_HEAP_REGION_NAME);
-        assertOffHeapMetricsOnVm(vm, (TOTAL_MEMORY - (2 * OBJECT_SIZE)), (2 * OBJECT_SIZE), 2, 0);
+    doDestroyOnVm(vm, KEY3, OFF_HEAP_REGION_NAME);
+    assertOffHeapMetricsOnVm(vm, (TOTAL_MEMORY - (2 * OBJECT_SIZE)), (2 * OBJECT_SIZE), 2, 0);
 
-        doDestroyOnVm(vm, KEY2, OFF_HEAP_REGION_NAME);
-        assertOffHeapMetricsOnVm(vm, (TOTAL_MEMORY - OBJECT_SIZE), OBJECT_SIZE, 1, 0);
+    doDestroyOnVm(vm, KEY2, OFF_HEAP_REGION_NAME);
+    assertOffHeapMetricsOnVm(vm, (TOTAL_MEMORY - OBJECT_SIZE), OBJECT_SIZE, 1, 0);
 
-        doDestroyOnVm(vm, KEY, OFF_HEAP_REGION_NAME);
-        assertOffHeapMetricsOnVm(vm, TOTAL_MEMORY, 0, 0, 0);
-      }
-    } finally {
-      doCleanupOnVm(vm);
-    }
+    doDestroyOnVm(vm, KEY, OFF_HEAP_REGION_NAME);
+    assertOffHeapMetricsOnVm(vm, TOTAL_MEMORY, 0, 0, 0);
   }
 
   /**
@@ -204,89 +226,78 @@ public class OffHeapManagementDUnitTest extends JUnit4CacheTestCase {
    */
   @Test
   public void testFragmentationStat() throws Exception {
-    final VM vm = Host.getHost(0).getVM(0);
+    // Setup off-heap memory for cache
+    setSystemPropertiesOnVm(vm, true, getDistributedSystemProperties());
 
-    try {
-      // Setup off-heap memory for cache
-      setSystemPropertiesOnVm(vm, true, getSystemProperties());
-
-      // Create our off-heap region
-      assertNotNull(createOffHeapRegionOnVm(vm, OFF_HEAP_REGION_NAME, DataPolicy.REPLICATE));
-      vm.invoke(new SerializableRunnable() {
-        @Override
-        public void run() {
-          Region region = getCache().getRegion(OFF_HEAP_REGION_NAME);
-          assertNotNull(region);
-        }
-      });
-
-      // Make sure our off-heap region has off-heap enabled.
-      assertOffHeapRegionAttributesOnVm(vm);
-
-      // Make sure our starting off heap stats are correct
-      assertOffHeapMetricsOnVm(vm, TOTAL_MEMORY, 0, 0, 0);
-
-      // After allocating large chunk (equal to total memory)
-      // we should still have no fragmentation
-      int largeChunk = (int) TOTAL_MEMORY - OffHeapStoredObject.HEADER_SIZE;
-      doPutOnVm(vm, KEY, new byte[largeChunk], OFF_HEAP_REGION_NAME, false);
-      // No compaction has run, so fragmentation should be zero
-      assertFragmentationStatOnVm(vm, 0, ASSERT_OP.EQUAL);
-
-      // Allocate more memory to trigger compaction
-      doPutOnVm(vm, KEY, new byte[ALLOCATION_SIZE], OFF_HEAP_REGION_NAME, true);
-      // When total memory is used no fragmentation
-      assertFragmentationStatOnVm(vm, 0, ASSERT_OP.EQUAL);
-
-      // After freeing all memory we should have no fragmentation
-      doDestroyOnVm(vm, KEY, OFF_HEAP_REGION_NAME);
-      assertFragmentationStatOnVm(vm, 0, ASSERT_OP.EQUAL);
-
-      // Allocate HALF_TOTAL_MEMORY twice and release one to create one fragment
-      int halfChunk = HALF_TOTAL_MEMORY - OffHeapStoredObject.HEADER_SIZE;
-      doPutOnVm(vm, KEY + "0", new byte[halfChunk], OFF_HEAP_REGION_NAME, false);
-      doPutOnVm(vm, KEY + "1", new byte[halfChunk], OFF_HEAP_REGION_NAME, false);
-      doDestroyOnVm(vm, KEY + "0", OFF_HEAP_REGION_NAME);
-
-      // Allocate largeChunk to trigger compaction and fragmentation should be zero
-      // as all free memory is available as one fragment
-      doPutOnVm(vm, KEY + "1", new byte[largeChunk], OFF_HEAP_REGION_NAME, true);
-      assertFragmentationStatOnVm(vm, 0, ASSERT_OP.EQUAL);
-
-      // Consume the available fragment as below
-      // [16][262120][16][262120][16] = [524288] (HALF_TOTAL_MEMORY)
-      int smallChunk = OffHeapStoredObject.MIN_CHUNK_SIZE - OffHeapStoredObject.HEADER_SIZE;
-      int mediumChunk = 262112; // (262120 - ObjectChunk.OFF_HEAP_HEADER_SIZE)
-      doPutOnVm(vm, KEY + "S1", new byte[smallChunk], OFF_HEAP_REGION_NAME, false);
-      doPutOnVm(vm, KEY + "M1", new byte[mediumChunk], OFF_HEAP_REGION_NAME, false);
-      doPutOnVm(vm, KEY + "S2", new byte[smallChunk], OFF_HEAP_REGION_NAME, false);
-      doPutOnVm(vm, KEY + "M2", new byte[mediumChunk], OFF_HEAP_REGION_NAME, false);
-      doPutOnVm(vm, KEY + "S3", new byte[smallChunk], OFF_HEAP_REGION_NAME, false);
-
-      // free small chunks to create gaps
-      doDestroyOnVm(vm, KEY + "S1", OFF_HEAP_REGION_NAME);
-      doDestroyOnVm(vm, KEY + "S2", OFF_HEAP_REGION_NAME);
-      doDestroyOnVm(vm, KEY + "S3", OFF_HEAP_REGION_NAME);
-
-      // Now free memory should be 48 so allocate a 40 byte object
-      doPutOnVm(vm, KEY + "newKey", new byte[40], OFF_HEAP_REGION_NAME, true);
-
-      /*
-       * Setup a fragmentation attribute monitor
-       */
-      {
-        setupOffHeapMonitorOnVm(vm, "OffHeapFragmentation", 0, 0);
-        clearNotificationListenerOnVm(vm);
-      }
+    // Create our off-heap region
+    assertThat(createOffHeapRegionOnVm(vm, OFF_HEAP_REGION_NAME, DataPolicy.REPLICATE)).isNotNull();
+    vm.invoke(() -> {
+      Region region = getCache().getRegion(OFF_HEAP_REGION_NAME);
+      assertThat(region).isNotNull();
+    });
 
-      // Make sure we have some fragmentation
-      assertFragmentationStatOnVm(vm, 100, ASSERT_OP.EQUAL);
+    // Make sure our off-heap region has off-heap enabled.
+    assertOffHeapRegionAttributesOnVm(vm);
 
-      // Make sure our fragmentation monitor was triggered
-      waitForNotificationListenerOnVm(vm, 5000, 500, true);
-    } finally {
-      doCleanupOnVm(vm);
-    }
+    // Make sure our starting off heap stats are correct
+    assertOffHeapMetricsOnVm(vm, TOTAL_MEMORY, 0, 0, 0);
+
+    // After allocating large chunk (equal to total memory)
+    // we should still have no fragmentation
+    int largeChunk = (int) TOTAL_MEMORY - OffHeapStoredObject.HEADER_SIZE;
+    doPutOnVm(vm, KEY, new byte[largeChunk], OFF_HEAP_REGION_NAME, false);
+    // No compaction has run, so fragmentation should be zero
+    assertFragmentationStatOnVm(vm, 0, ASSERT_OP.EQUAL);
+
+    // Allocate more memory to trigger compaction
+    doPutOnVm(vm, KEY, new byte[ALLOCATION_SIZE], OFF_HEAP_REGION_NAME, true);
+    // When total memory is used no fragmentation
+    assertFragmentationStatOnVm(vm, 0, ASSERT_OP.EQUAL);
+
+    // After freeing all memory we should have no fragmentation
+    doDestroyOnVm(vm, KEY, OFF_HEAP_REGION_NAME);
+    assertFragmentationStatOnVm(vm, 0, ASSERT_OP.EQUAL);
+
+    // Allocate HALF_TOTAL_MEMORY twice and release one to create one fragment
+    int halfChunk = HALF_TOTAL_MEMORY - OffHeapStoredObject.HEADER_SIZE;
+    doPutOnVm(vm, KEY + "0", new byte[halfChunk], OFF_HEAP_REGION_NAME, false);
+    doPutOnVm(vm, KEY + "1", new byte[halfChunk], OFF_HEAP_REGION_NAME, false);
+    doDestroyOnVm(vm, KEY + "0", OFF_HEAP_REGION_NAME);
+
+    // Allocate largeChunk to trigger compaction and fragmentation should be zero
+    // as all free memory is available as one fragment
+    doPutOnVm(vm, KEY + "1", new byte[largeChunk], OFF_HEAP_REGION_NAME, true);
+    assertFragmentationStatOnVm(vm, 0, ASSERT_OP.EQUAL);
+
+    // Consume the available fragment as below
+    // [16][262120][16][262120][16] = [524288] (HALF_TOTAL_MEMORY)
+    int smallChunk = OffHeapStoredObject.MIN_CHUNK_SIZE - OffHeapStoredObject.HEADER_SIZE;
+    int mediumChunk = 262112; // (262120 - ObjectChunk.OFF_HEAP_HEADER_SIZE)
+    doPutOnVm(vm, KEY + "S1", new byte[smallChunk], OFF_HEAP_REGION_NAME, false);
+    doPutOnVm(vm, KEY + "M1", new byte[mediumChunk], OFF_HEAP_REGION_NAME, false);
+    doPutOnVm(vm, KEY + "S2", new byte[smallChunk], OFF_HEAP_REGION_NAME, false);
+    doPutOnVm(vm, KEY + "M2", new byte[mediumChunk], OFF_HEAP_REGION_NAME, false);
+    doPutOnVm(vm, KEY + "S3", new byte[smallChunk], OFF_HEAP_REGION_NAME, false);
+
+    // free small chunks to create gaps
+    doDestroyOnVm(vm, KEY + "S1", OFF_HEAP_REGION_NAME);
+    doDestroyOnVm(vm, KEY + "S2", OFF_HEAP_REGION_NAME);
+    doDestroyOnVm(vm, KEY + "S3", OFF_HEAP_REGION_NAME);
+
+    // Now free memory should be 48 so allocate a 40 byte object
+    doPutOnVm(vm, KEY + "newKey", new byte[40], OFF_HEAP_REGION_NAME, true);
+
+    /*
+     * Setup a fragmentation attribute monitor
+     */
+    setupOffHeapMonitorOnVm(vm, "OffHeapFragmentation", 0, 0);
+    clearNotificationListenerOnVm(vm);
+
+    // Make sure we have some fragmentation
+    assertFragmentationStatOnVm(vm, 100, ASSERT_OP.EQUAL);
+
+    // Make sure our fragmentation monitor was triggered
+    waitForNotificationListenerOnVm(vm, 5000);
   }
 
   /**
@@ -294,58 +305,50 @@ public class OffHeapManagementDUnitTest extends JUnit4CacheTestCase {
    */
   @Test
   public void testCompactionTimeStat() throws Exception {
-    final VM vm = Host.getHost(0).getVM(0);
+    // Setup off-heap memory for cache
+    setSystemPropertiesOnVm(vm, true, getDistributedSystemProperties());
 
-    try {
-      // Setup off-heap memory for cache
-      setSystemPropertiesOnVm(vm, true, getSystemProperties());
+    // Create our off-heap region
+    assertThat(createOffHeapRegionOnVm(vm, OFF_HEAP_REGION_NAME, DataPolicy.REPLICATE)).isNotNull();
 
-      // Create our off-heap region
-      assertNotNull(createOffHeapRegionOnVm(vm, OFF_HEAP_REGION_NAME, DataPolicy.REPLICATE));
+    // Make sure our off-heap region has off-heap enabled.
+    assertOffHeapRegionAttributesOnVm(vm);
 
-      // Make sure our off-heap region has off-heap enabled.
-      assertOffHeapRegionAttributesOnVm(vm);
+    // Make sure our starting off heap stats are correct
+    assertOffHeapMetricsOnVm(vm, TOTAL_MEMORY, 0, 0, 0);
 
-      // Make sure our starting off heap stats are correct
-      assertOffHeapMetricsOnVm(vm, TOTAL_MEMORY, 0, 0, 0);
+    // After allocating large chunck we should still have no compaction time
+    doPutOnVm(vm, KEY, new byte[HALF_TOTAL_MEMORY], OFF_HEAP_REGION_NAME, false);
+    assertCompactionTimeStatOnVm(vm, 0, ASSERT_OP.EQUAL);
 
-      // After allocating large chunck we should still have no compaction time
-      doPutOnVm(vm, KEY, new byte[HALF_TOTAL_MEMORY], OFF_HEAP_REGION_NAME, false);
-      assertCompactionTimeStatOnVm(vm, 0, ASSERT_OP.EQUAL);
+    // After freeing all memory we should have no compaction time
+    doDestroyOnVm(vm, KEY, OFF_HEAP_REGION_NAME);
+    assertCompactionTimeStatOnVm(vm, 0, ASSERT_OP.EQUAL);
 
-      // After freeing all memory we should have no compaction time
-      doDestroyOnVm(vm, KEY, OFF_HEAP_REGION_NAME);
-      assertCompactionTimeStatOnVm(vm, 0, ASSERT_OP.EQUAL);
+    // Consume all off-heap memory using an allocation size
+    int numAllocations = doConsumeOffHeapMemoryOnVm(vm, ALLOCATION_SIZE);
+    assertThat(numAllocations > 0).isTrue();
 
-      // Consume all off-heap memory using an allocation size
-      int numAllocations = doConsumeOffHeapMemoryOnVm(vm, ALLOCATION_SIZE);
-      assertTrue(numAllocations > 0);
+    // Randomly free 3 allocations to produce off-heap gaps
+    doFreeOffHeapMemoryOnVm(vm, numAllocations, 3);
 
-      // Randomly free 3 allocations to produce off-heap gaps
-      doFreeOffHeapMemoryOnVm(vm, numAllocations, 3);
+    /*
+     * Setup a compaction time attribute monitor
+     */
+    setupOffHeapMonitorOnVm(vm, "OffHeapCompactionTime", 0, 0);
+    clearNotificationListenerOnVm(vm);
 
-      /*
-       * Setup a compaction time attribute monitor
-       */
-      {
-        setupOffHeapMonitorOnVm(vm, "OffHeapCompactionTime", 0, 0);
-        clearNotificationListenerOnVm(vm);
-      }
+    // Allocate enough memory to force compaction which will update compaction time stat
+    doPutOnVm(vm, KEY, new byte[NEW_ALLOCATION_SIZE], OFF_HEAP_REGION_NAME, true);
 
-      // Allocate enough memory to force compaction which will update compaction time stat
-      doPutOnVm(vm, KEY, new byte[NEW_ALLOCATION_SIZE], OFF_HEAP_REGION_NAME, true);
+    // Make sure our compaction time monitor was triggered
+    waitForNotificationListenerOnVm(vm, 5000);
 
-      // Make sure our compaction time monitor was triggered
-      waitForNotificationListenerOnVm(vm, 5000, 500, true);
-
-      /*
-       * Make sure we have some compaction time. In some environments the compaction time is
-       * reported as 0 due to time sample granularity and compaction speed.
-       */
-      assertCompactionTimeStatOnVm(vm, 0, ASSERT_OP.GREATER_THAN_OR_EQUAL);
-    } finally {
-      doCleanupOnVm(vm);
-    }
+    /*
+     * Make sure we have some compaction time. In some environments the compaction time is reported
+     * as 0 due to time sample granularity and compaction speed.
+     */
+    assertCompactionTimeStatOnVm(vm, 0, ASSERT_OP.GREATER_THAN_OR_EQUAL);
   }
 
   /**
@@ -353,37 +356,28 @@ public class OffHeapManagementDUnitTest extends JUnit4CacheTestCase {
    */
   @Test
   public void testOffHeapObjectsMonitoring() throws Exception {
-    final VM vm = Host.getHost(0).getVM(0);
-
-    try {
-      // Setup off-heap memory for cache
-      setSystemPropertiesOnVm(vm, true, getSystemProperties());
+    // Setup off-heap memory for cache
+    setSystemPropertiesOnVm(vm, true, getDistributedSystemProperties());
 
-      // Create our off-heap region
-      assertNotNull(createOffHeapRegionOnVm(vm, OFF_HEAP_REGION_NAME, DataPolicy.REPLICATE));
+    // Create our off-heap region
+    assertThat(createOffHeapRegionOnVm(vm, OFF_HEAP_REGION_NAME, DataPolicy.REPLICATE)).isNotNull();
 
-      // Make sure our off-heap region has off-heap enabled.
-      assertOffHeapRegionAttributesOnVm(vm);
+    // Make sure our off-heap region has off-heap enabled.
+    assertOffHeapRegionAttributesOnVm(vm);
 
-      // Make sure our starting off heap stats are correct
-      assertOffHeapMetricsOnVm(vm, TOTAL_MEMORY, 0, 0, 0);
+    // Make sure our starting off heap stats are correct
+    assertOffHeapMetricsOnVm(vm, TOTAL_MEMORY, 0, 0, 0);
 
-      /*
-       * Tests off-heap objects notification
-       */
-      {
-        setupOffHeapMonitorOnVm(vm, "OffHeapObjects", 0, -1);
+    /*
+     * Tests off-heap objects notification
+     */
+    setupOffHeapMonitorOnVm(vm, "OffHeapObjects", 0, -1);
 
-        clearNotificationListenerOnVm(vm);
+    clearNotificationListenerOnVm(vm);
 
-        doPutOnVm(vm, KEY, VALUE, OFF_HEAP_REGION_NAME, false);
+    doPutOnVm(vm, KEY, VALUE, OFF_HEAP_REGION_NAME, false);
 
-        waitForNotificationListenerOnVm(vm, 5000, 500, true);
-      }
-
-    } finally {
-      doCleanupOnVm(vm);
-    }
+    waitForNotificationListenerOnVm(vm, 5000);
   }
 
   /**
@@ -391,37 +385,28 @@ public class OffHeapManagementDUnitTest extends JUnit4CacheTestCase {
    */
   @Test
   public void testOffHeapFreeSizeMonitoring() throws Exception {
-    final VM vm = Host.getHost(0).getVM(0);
-
-    try {
-      // Setup off-heap memory for cache
-      setSystemPropertiesOnVm(vm, true, getSystemProperties());
+    // Setup off-heap memory for cache
+    setSystemPropertiesOnVm(vm, true, getDistributedSystemProperties());
 
-      // Create our off-heap region
-      assertNotNull(createOffHeapRegionOnVm(vm, OFF_HEAP_REGION_NAME, DataPolicy.REPLICATE));
+    // Create our off-heap region
+    assertThat(createOffHeapRegionOnVm(vm, OFF_HEAP_REGION_NAME, DataPolicy.REPLICATE)).isNotNull();
 
-      // Make sure our off-heap region has off-heap enabled.
-      assertOffHeapRegionAttributesOnVm(vm);
+    // Make sure our off-heap region has off-heap enabled.
+    assertOffHeapRegionAttributesOnVm(vm);
 
-      // Make sure our starting off heap stats are correct
-      assertOffHeapMetricsOnVm(vm, TOTAL_MEMORY, 0, 0, 0);
+    // Make sure our starting off heap stats are correct
+    assertOffHeapMetricsOnVm(vm, TOTAL_MEMORY, 0, 0, 0);
 
-      /*
-       * Tests off-heap objects notification
-       */
-      {
-        setupOffHeapMonitorOnVm(vm, "OffHeapFreeSize", TOTAL_MEMORY, TOTAL_MEMORY);
+    /*
+     * Tests off-heap objects notification
+     */
+    setupOffHeapMonitorOnVm(vm, "OffHeapFreeSize", TOTAL_MEMORY, TOTAL_MEMORY);
 
-        clearNotificationListenerOnVm(vm);
+    clearNotificationListenerOnVm(vm);
 
-        doPutOnVm(vm, KEY, VALUE, OFF_HEAP_REGION_NAME, false);
+    doPutOnVm(vm, KEY, VALUE, OFF_HEAP_REGION_NAME, false);
 
-        waitForNotificationListenerOnVm(vm, 5000, 500, true);
-      }
-
-    } finally {
-      doCleanupOnVm(vm);
-    }
+    waitForNotificationListenerOnVm(vm, 5000);
   }
 
   /**
@@ -429,37 +414,28 @@ public class OffHeapManagementDUnitTest extends JUnit4CacheTestCase {
    */
   @Test
   public void testOffHeapAllocatedSizeMonitoring() throws Exception {
-    final VM vm = Host.getHost(0).getVM(0);
-
-    try {
-      // Setup off-heap memory for cache
-      setSystemPropertiesOnVm(vm, true, getSystemProperties());
+    // Setup off-heap memory for cache
+    setSystemPropertiesOnVm(vm, true, getDistributedSystemProperties());
 
-      // Create our off-heap region
-      assertNotNull(createOffHeapRegionOnVm(vm, OFF_HEAP_REGION_NAME, DataPolicy.REPLICATE));
+    // Create our off-heap region
+    assertThat(createOffHeapRegionOnVm(vm, OFF_HEAP_REGION_NAME, DataPolicy.REPLICATE)).isNotNull();
 
-      // Make sure our off-heap region has off-heap enabled.
-      assertOffHeapRegionAttributesOnVm(vm);
+    // Make sure our off-heap region has off-heap enabled.
+    assertOffHeapRegionAttributesOnVm(vm);
 
-      // Make sure our starting off heap stats are correct
-      assertOffHeapMetricsOnVm(vm, TOTAL_MEMORY, 0, 0, 0);
+    // Make sure our starting off heap stats are correct
+    assertOffHeapMetricsOnVm(vm, TOTAL_MEMORY, 0, 0, 0);
 
-      /*
-       * Tests off-heap objects notification
-       */
-      {
-        setupOffHeapMonitorOnVm(vm, "OffHeapAllocatedSize", 0, OBJECT_SIZE);
+    /*
+     * Tests off-heap objects notification
+     */
+    setupOffHeapMonitorOnVm(vm, "OffHeapAllocatedSize", 0, OBJECT_SIZE);
 
-        clearNotificationListenerOnVm(vm);
+    clearNotificationListenerOnVm(vm);
 
-        doPutOnVm(vm, KEY, VALUE, OFF_HEAP_REGION_NAME, false);
+    doPutOnVm(vm, KEY, VALUE, OFF_HEAP_REGION_NAME, false);
 
-        waitForNotificationListenerOnVm(vm, 5000, 500, true);
-      }
-
-    } finally {
-      doCleanupOnVm(vm);
-    }
+    waitForNotificationListenerOnVm(vm, 5000);
   }
 
   /**
@@ -471,11 +447,8 @@ public class OffHeapManagementDUnitTest extends JUnit4CacheTestCase {
    */
   private void doFreeOffHeapMemoryOnVm(final VM vm, final int numAllocations,
       final int numDestroys) {
-    vm.invoke(new SerializableRunnable() {
-      @Override
-      public void run() {
-        doFreeOffHeapMemory(numAllocations, numDestroys);
-      }
+    vm.invoke(() -> {
+      doFreeOffHeapMemory(numAllocations, numDestroys);
     });
   }
 
@@ -486,11 +459,11 @@ public class OffHeapManagementDUnitTest extends JUnit4CacheTestCase {
    * @param numDestroys the number of destroys to perform
    */
   private void doFreeOffHeapMemory(final int numAllocations, final int numDestroys) {
-    assertTrue(numDestroys <= numAllocations);
+    assertThat(numDestroys <= numAllocations).isTrue();
 
     Region region = getCache().getRegion(OFF_HEAP_REGION_NAME);
-    assertNotNull(region);
-    assertTrue(numDestroys <= region.size());
+    assertThat(region).isNotNull();
+    assertThat(numDestroys <= region.size()).isTrue();
 
     String key = "KEY0";
     Object value = key;
@@ -531,7 +504,8 @@ public class OffHeapManagementDUnitTest extends JUnit4CacheTestCase {
 
     // Loop until we fail
     try {
-      while (true) { // TODO: put a time limit on this just in case
+      Stopwatch stopwatch = Stopwatch.createStarted();
+      while (stopwatch.elapsed(MINUTES) < 2) {
         doPut("KEY" + (i++), new byte[allocationSize], OFF_HEAP_REGION_NAME, false);
       }
     } catch (OutOfOffHeapMemoryException e) {
@@ -560,25 +534,25 @@ public class OffHeapManagementDUnitTest extends JUnit4CacheTestCase {
    */
   private void assertCompactionTimeStat(final long compactionTime, final ASSERT_OP op) {
     ManagementService service = ManagementService.getExistingManagementService(getCache());
-    assertNotNull(service);
+    assertThat(service).isNotNull();
 
-    assertTrue(service.isManager());
+    assertThat(service.isManager()).isTrue();
 
     MemberMXBean memberBean = service.getMemberMXBean();
-    assertNotNull(memberBean);
+    assertThat(memberBean).isNotNull();
 
     switch (op) {
       case EQUAL:
-        assertEquals(compactionTime, memberBean.getOffHeapCompactionTime());
+        assertThat(memberBean.getOffHeapCompactionTime()).isEqualTo(compactionTime);
         break;
       case GREATER_THAN:
-        assertTrue(compactionTime < memberBean.getOffHeapCompactionTime());
+        assertThat(compactionTime < memberBean.getOffHeapCompactionTime()).isTrue();
         break;
       case GREATER_THAN_OR_EQUAL:
-        assertTrue(compactionTime <= memberBean.getOffHeapCompactionTime());
+        assertThat(compactionTime <= memberBean.getOffHeapCompactionTime()).isTrue();
         break;
       case LESS_THAN:
-        assertTrue(compactionTime > memberBean.getOffHeapCompactionTime());
+        assertThat(compactionTime > memberBean.getOffHeapCompactionTime()).isTrue();
         break;
     }
   }
@@ -603,41 +577,27 @@ public class OffHeapManagementDUnitTest extends JUnit4CacheTestCase {
    */
   private void assertFragmentationStat(final int fragmentation, final ASSERT_OP op) {
     ManagementService service = ManagementService.getExistingManagementService(getCache());
-    assertNotNull(service);
+    assertThat(service).isNotNull();
 
-    assertTrue(service.isManager());
+    assertThat(service.isManager()).isTrue();
 
     MemberMXBean memberBean = service.getMemberMXBean();
-    assertNotNull(memberBean);
+    assertThat(memberBean).isNotNull();
 
     switch (op) {
       case EQUAL:
-        assertEquals(fragmentation, memberBean.getOffHeapFragmentation());
+        assertThat(memberBean.getOffHeapFragmentation()).isEqualTo(fragmentation);
         break;
       case GREATER_THAN:
-        assertTrue(fragmentation < memberBean.getOffHeapFragmentation());
+        assertThat(fragmentation < memberBean.getOffHeapFragmentation()).isTrue();
         break;
       case LESS_THAN:
-        assertTrue(fragmentation > memberBean.getOffHeapFragmentation());
+        assertThat(fragmentation > memberBean.getOffHeapFragmentation()).isTrue();
         break;
     }
   }
 
   /**
-   * Returns off-heap system properties for enabling off-heap and the JMX system.
-   */
-  private Properties getSystemProperties() {
-    Properties props = getDistributedSystemProperties();
-
-    props.setProperty(OFF_HEAP_MEMORY_SIZE, "1m");
-    props.setProperty(JMX_MANAGER, "true");
-    props.setProperty(JMX_MANAGER_START, "true");
-    props.setProperty(JMX_MANAGER_PORT, "0");
-
-    return props;
-  }
-
-  /**
    * Removes off heap region on vm and disconnects.
    *
    * @param vm a virtual machine.
@@ -675,17 +635,17 @@ public class OffHeapManagementDUnitTest extends JUnit4CacheTestCase {
    */
   private void assertOffHeapRegionAttributes() {
     ManagementService service = ManagementService.getExistingManagementService(getCache());
-    assertNotNull(service);
+    assertThat(service).isNotNull();
 
-    assertTrue(service.isManager());
+    assertThat(service.isManager()).isTrue();
 
     RegionMXBean regionBean = service.getLocalRegionMBean(OFF_HEAP_REGION_PATH);
-    assertNotNull(regionBean);
+    assertThat(regionBean).isNotNull();
 
     RegionAttributesData regionData = regionBean.listRegionAttributes();
-    assertNotNull(regionData);
+    assertThat(regionData).isNotNull();
 
-    assertTrue(regionData.getOffHeap());
+    assertThat(regionData.getOffHeap()).isTrue();
   }
 
   /**
@@ -697,8 +657,8 @@ public class OffHeapManagementDUnitTest extends JUnit4CacheTestCase {
    * @param objects number of objects stored in off-heap memory.
    * @param fragmentation the fragmentation percentage.
    */
-  private void assertOffHeapMetricsOnVm(final VM vm, final long freeMemory,
-      final long allocatedMemory, final long objects, final int fragmentation) {
+  private void assertOffHeapMetricsOnVm(final VM vm, final int freeMemory,
+      final int allocatedMemory, final int objects, final int fragmentation) {
     vm.invoke(() -> assertOffHeapMetrics(freeMemory, allocatedMemory, objects, fragmentation));
   }
 
@@ -710,20 +670,20 @@ public class OffHeapManagementDUnitTest extends JUnit4CacheTestCase {
    * @param objects number of objects stored in off-heap memory.
    * @param fragmentation the fragmentation percentage.
    */
-  private void assertOffHeapMetrics(final long freeMemory, final long allocatedMemory,
-      final long objects, final int fragmentation) {
+  private void assertOffHeapMetrics(final int freeMemory, final int allocatedMemory,
+      final int objects, final int fragmentation) {
     ManagementService service = ManagementService.getExistingManagementService(getCache());
-    assertNotNull(service);
+    assertThat(service).isNotNull();
 
-    assertTrue(service.isManager());
+    assertThat(service.isManager()).isTrue();
 
     MemberMXBean memberBean = service.getMemberMXBean();
-    assertNotNull(memberBean);
+    assertThat(memberBean).isNotNull();
 
-    assertEquals(freeMemory, memberBean.getOffHeapFreeMemory());
-    assertEquals(allocatedMemory, memberBean.getOffHeapUsedMemory());
-    assertEquals(objects, memberBean.getOffHeapObjects());
-    assertEquals(fragmentation, memberBean.getOffHeapFragmentation());
+    assertThat(memberBean.getOffHeapFreeMemory()).isEqualTo(freeMemory);
+    assertThat(memberBean.getOffHeapUsedMemory()).isEqualTo(allocatedMemory);
+    assertThat(memberBean.getOffHeapObjects()).isEqualTo(objects);
+    assertThat(memberBean.getOffHeapFragmentation()).isEqualTo(fragmentation);
   }
 
   /**
@@ -800,7 +760,7 @@ public class OffHeapManagementDUnitTest extends JUnit4CacheTestCase {
    */
   private void doDestroy(final Object key, final String regionName) {
     Region region = getCache().getRegion(regionName);
-    assertNotNull(region);
+    assertThat(region).isNotNull();
 
     region.destroy(key);
   }
@@ -828,7 +788,7 @@ public class OffHeapManagementDUnitTest extends JUnit4CacheTestCase {
   private void doPut(final Object key, final Object value, final String regionName,
       final boolean expectException) {
     Region region = getCache().getRegion(regionName);
-    assertNotNull(region);
+    assertThat(region).isNotNull();
 
     try {
       region.put(key, value);
@@ -843,32 +803,6 @@ public class OffHeapManagementDUnitTest extends JUnit4CacheTestCase {
   }
 
   /**
-   * Adds an off-heap notification listener to the MemberMXBean for a vm.
-   *
-   * @param vm a virtual machine.
-   */
-  private void addOffHeapNotificationListenerOnVm(final VM vm) {
-    vm.invoke(() -> addOffHeapNotificationListener());
-  }
-
-  /**
-   * Adds an off-heap notification listener to the MemberMXBean.
-   */
-  private void addOffHeapNotificationListener() {
-    ManagementService service = ManagementService.getExistingManagementService(getCache());
-    assertNotNull(service);
-
-    assertTrue(service.isManager());
-
-    MemberMXBean memberBean = service.getMemberMXBean();
-    assertNotNull(memberBean);
-
-    assertTrue(memberBean instanceof MemberMBean);
-
-    ((MemberMBean) memberBean).addNotificationListener(notificationListener, null, null);
-  }
-
-  /**
    * Creates and adds a generic GaugeMonitor for an attribute of the MemberMXBean on a VM.
    *
    * @param vm a virtual machine.
@@ -876,8 +810,8 @@ public class OffHeapManagementDUnitTest extends JUnit4CacheTestCase {
    * @param highThreshold the high threshold trigger.
    * @param lowThreshold the low threshold trigger.
    */
-  private void setupOffHeapMonitorOnVm(final VM vm, final String attribute,
-      final long highThreshold, final long lowThreshold) {
+  private void setupOffHeapMonitorOnVm(final VM vm, final String attribute, final int highThreshold,
+      final int lowThreshold) {
     vm.invoke(() -> setupOffHeapMonitor(attribute, highThreshold, lowThreshold));
   }
 
@@ -888,11 +822,11 @@ public class OffHeapManagementDUnitTest extends JUnit4CacheTestCase {
    * @param highThreshold the high threshold trigger.
    * @param lowThreshold the low threshold trigger.
    */
-  private void setupOffHeapMonitor(final String attribute, final long highThreshold,
-      final long lowThreshold) throws JMException {
+  private void setupOffHeapMonitor(final String attribute, final int highThreshold,
+      final int lowThreshold) throws JMException {
     ObjectName memberMBeanObjectName = MBeanJMXAdapter.getMemberMBeanName(
         InternalDistributedSystem.getConnectedInstance().getDistributedMember());
-    assertNotNull(memberMBeanObjectName);
+    assertThat(memberMBeanObjectName).isNotNull();
 
     ObjectName offHeapMonitorName = new ObjectName("monitors:type=Gauge,attr=" + attribute);
     mbeanServer.createMBean("javax.management.monitor.GaugeMonitor", offHeapMonitorName);
@@ -914,16 +848,13 @@ public class OffHeapManagementDUnitTest extends JUnit4CacheTestCase {
 
   /**
    * Waits to receive MBean notifications.
-   *
+   * 
    * @param vm a virtual machine.
    * @param wait how long to wait for in millis.
-   * @param interval the polling interval to check for notifications.
-   * @param throwOnTimeout throws an exception on timeout if true.
    */
-  private void waitForNotificationListenerOnVm(final VM vm, final long wait, final long interval,
-      final boolean throwOnTimeout) {
+  private void waitForNotificationListenerOnVm(final VM vm, final long wait) {
     vm.invoke(() -> await("Awaiting Notification Listener").atMost(wait, TimeUnit.MILLISECONDS)
-        .until(() -> assertTrue(notificationListener.getNotificationSize() > 0)));
+        .until(() -> assertThat(notificationListener.getNotificationSize() > 0).isTrue()));
   }
 
   /**
@@ -940,20 +871,20 @@ public class OffHeapManagementDUnitTest extends JUnit4CacheTestCase {
    */
   private static class OffHeapNotificationListener implements NotificationListener {
 
-    List<Notification> notificationList =
+    private List<Notification> notificationList =
         Collections.synchronizedList(new ArrayList<Notification>());
 
     @Override
     public void handleNotification(final Notification notification, final Object handback) {
-      this.notificationList.add(notification);
+      notificationList.add(notification);
     }
 
-    public void clear() {
-      this.notificationList.clear();
+    void clear() {
+      notificationList.clear();
     }
 
-    public int getNotificationSize() {
-      return this.notificationList.size();
+    int getNotificationSize() {
+      return notificationList.size();
     }
   }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/management/QueryDataDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/QueryDataDUnitTest.java
index 131d2fc..4a6aafe 100644
--- a/geode-core/src/test/java/org/apache/geode/management/QueryDataDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/QueryDataDUnitTest.java
@@ -14,14 +14,20 @@
  */
 package org.apache.geode.management;
 
-import static com.jayway.jsonpath.matchers.JsonPathMatchers.*;
-import static java.util.concurrent.TimeUnit.*;
-import static org.apache.geode.cache.FixedPartitionAttributes.*;
-import static org.apache.geode.cache.query.Utils.*;
-import static org.apache.geode.management.internal.ManagementConstants.*;
-import static org.apache.geode.management.internal.ManagementStrings.*;
+import static com.jayway.jsonpath.matchers.JsonPathMatchers.hasJsonPath;
+import static com.jayway.jsonpath.matchers.JsonPathMatchers.isJson;
+import static com.jayway.jsonpath.matchers.JsonPathMatchers.withJsonPath;
+import static java.util.concurrent.TimeUnit.MINUTES;
+import static org.apache.geode.cache.FixedPartitionAttributes.createFixedPartition;
+import static org.apache.geode.cache.query.Utils.createPortfoliosAndPositions;
+import static org.apache.geode.management.internal.ManagementConstants.DEFAULT_QUERY_LIMIT;
+import static org.apache.geode.management.internal.ManagementStrings.QUERY__MSG__INVALID_QUERY;
+import static org.apache.geode.management.internal.ManagementStrings.QUERY__MSG__JOIN_OP_EX;
+import static org.apache.geode.management.internal.ManagementStrings.QUERY__MSG__REGIONS_NOT_FOUND;
+import static org.apache.geode.management.internal.ManagementStrings.QUERY__MSG__REGIONS_NOT_FOUND_ON_MEMBERS;
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.hamcrest.Matchers.*;
+import static org.hamcrest.Matchers.anything;
+import static org.hamcrest.Matchers.equalTo;
 import static org.junit.Assert.assertThat;
 
 import java.io.Serializable;
@@ -55,12 +61,12 @@ import org.apache.geode.cache.PartitionResolver;
 import org.apache.geode.cache.Region;
 import org.apache.geode.cache.RegionFactory;
 import org.apache.geode.cache.RegionShortcut;
-import org.apache.geode.cache.query.data.Portfolio; // TODO
+import org.apache.geode.cache.query.data.Portfolio;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.internal.cache.BucketRegion;
 import org.apache.geode.internal.cache.PartitionedRegion;
 import org.apache.geode.internal.cache.PartitionedRegionHelper;
-import org.apache.geode.internal.cache.partitioned.fixed.SingleHopQuarterPartitionResolver; // TODO
+import org.apache.geode.internal.cache.partitioned.fixed.SingleHopQuarterPartitionResolver;
 import org.apache.geode.management.internal.SystemManagementService;
 import org.apache.geode.management.internal.beans.BeanUtilFuncs;
 import org.apache.geode.management.internal.cli.json.TypedJson;
@@ -162,9 +168,9 @@ public class QueryDataDUnitTest implements Serializable {
 
   @Before
   public void before() throws Exception {
-    this.member1 = this.managementTestRule.getDistributedMember(this.memberVMs[0]);
-    this.member2 = this.managementTestRule.getDistributedMember(this.memberVMs[1]);
-    this.member3 = this.managementTestRule.getDistributedMember(this.memberVMs[2]);
+    member1 = managementTestRule.getDistributedMember(memberVMs[0]);
+    member2 = managementTestRule.getDistributedMember(memberVMs[1]);
+    member3 = managementTestRule.getDistributedMember(memberVMs[2]);
 
     createRegionsInNodes();
     generateValuesInRegions();
@@ -172,9 +178,9 @@ public class QueryDataDUnitTest implements Serializable {
 
   @Test
   public void testQueryOnPartitionedRegion() throws Exception {
-    this.managerVM.invoke(this.testName.getMethodName(), () -> {
+    managerVM.invoke(testName.getMethodName(), () -> {
       DistributedSystemMXBean distributedSystemMXBean =
-          this.managementTestRule.getSystemManagementService().getDistributedSystemMXBean();
+          managementTestRule.getSystemManagementService().getDistributedSystemMXBean();
 
       String jsonString = distributedSystemMXBean.queryData(QUERIES[0], null, 10);
       assertThat(jsonString).contains("result").doesNotContain("No Data Found");
@@ -200,9 +206,9 @@ public class QueryDataDUnitTest implements Serializable {
 
   @Test
   public void testQueryOnReplicatedRegion() throws Exception {
-    this.managerVM.invoke(this.testName.getMethodName(), () -> {
+    managerVM.invoke(testName.getMethodName(), () -> {
       DistributedSystemMXBean distributedSystemMXBean =
-          this.managementTestRule.getSystemManagementService().getDistributedSystemMXBean();
+          managementTestRule.getSystemManagementService().getDistributedSystemMXBean();
 
       String jsonString = distributedSystemMXBean.queryData(QUERIES_FOR_REPLICATED[0], null, 10);
       assertThat(jsonString).contains("result").doesNotContain("No Data Found");
@@ -216,9 +222,9 @@ public class QueryDataDUnitTest implements Serializable {
 
   @Test
   public void testMemberWise() throws Exception {
-    this.managerVM.invoke(this.testName.getMethodName(), () -> {
+    managerVM.invoke(testName.getMethodName(), () -> {
       DistributedSystemMXBean distributedSystemMXBean =
-          this.managementTestRule.getSystemManagementService().getDistributedSystemMXBean();
+          managementTestRule.getSystemManagementService().getDistributedSystemMXBean();
 
       byte[] bytes = distributedSystemMXBean.queryDataForCompressedResult(QUERIES_FOR_REPLICATED[0],
           member1.getId() + "," + member2.getId(), 2);
@@ -230,11 +236,11 @@ public class QueryDataDUnitTest implements Serializable {
 
   @Test
   public void testLimitForQuery() throws Exception {
-    this.memberVMs[0].invoke("putBigInstances", () -> putBigInstances(REPLICATE_REGION_NAME4));
+    memberVMs[0].invoke("putBigInstances", () -> putBigInstances(REPLICATE_REGION_NAME4));
 
-    this.managerVM.invoke(this.testName.getMethodName(), () -> {
+    managerVM.invoke(testName.getMethodName(), () -> {
       DistributedSystemMXBean distributedSystemMXBean =
-          this.managementTestRule.getSystemManagementService().getDistributedSystemMXBean();
+          managementTestRule.getSystemManagementService().getDistributedSystemMXBean();
 
       // Query With Default values
       assertThat(distributedSystemMXBean.getQueryCollectionsDepth())
@@ -292,9 +298,9 @@ public class QueryDataDUnitTest implements Serializable {
 
   @Test
   public void testErrors() throws Exception {
-    this.managerVM.invoke(this.testName.getMethodName(), () -> {
+    managerVM.invoke(testName.getMethodName(), () -> {
       DistributedSystemMXBean distributedSystemMXBean =
-          this.managementTestRule.getSystemManagementService().getDistributedSystemMXBean();
+          managementTestRule.getSystemManagementService().getDistributedSystemMXBean();
 
       String invalidQuery = "SELECT * FROM " + PARTITIONED_REGION_NAME1;
       String invalidQueryResult = distributedSystemMXBean.queryData(invalidQuery, null, 2);
@@ -302,7 +308,7 @@ public class QueryDataDUnitTest implements Serializable {
           isJson(withJsonPath("$.message", equalTo(QUERY__MSG__INVALID_QUERY
               .toLocalizedString("Region mentioned in query probably missing /")))));
 
-      String nonexistentRegionName = this.testName.getMethodName() + "_NONEXISTENT_REGION";
+      String nonexistentRegionName = testName.getMethodName() + "_NONEXISTENT_REGION";
       String regionsNotFoundQuery = "SELECT * FROM /" + nonexistentRegionName
           + " r1, PARTITIONED_REGION_NAME2 r2 WHERE r1.ID = r2.ID";
       String regionsNotFoundResult =
@@ -310,11 +316,11 @@ public class QueryDataDUnitTest implements Serializable {
       assertThat(regionsNotFoundResult, isJson(withJsonPath("$.message",
           equalTo(QUERY__MSG__REGIONS_NOT_FOUND.toLocalizedString("/" + nonexistentRegionName)))));
 
-      String regionName = this.testName.getMethodName() + "_REGION";
+      String regionName = testName.getMethodName() + "_REGION";
       String regionsNotFoundOnMembersQuery = "SELECT * FROM /" + regionName;
 
       RegionFactory regionFactory =
-          this.managementTestRule.getCache().createRegionFactory(RegionShortcut.REPLICATE);
+          managementTestRule.getCache().createRegionFactory(RegionShortcut.REPLICATE);
       regionFactory.create(regionName);
 
       String regionsNotFoundOnMembersResult =
@@ -332,18 +338,18 @@ public class QueryDataDUnitTest implements Serializable {
 
   @Test
   public void testNormalRegions() throws Exception {
-    this.managerVM.invoke(this.testName.getMethodName(), () -> {
+    managerVM.invoke(testName.getMethodName(), () -> {
       DistributedSystemMXBean distributedSystemMXBean =
-          this.managementTestRule.getSystemManagementService().getDistributedSystemMXBean();
+          managementTestRule.getSystemManagementService().getDistributedSystemMXBean();
 
-      String normalRegionName1 = this.testName.getMethodName() + "_NORMAL_REGION_1";
-      String tempRegionName1 = this.testName.getMethodName() + "_TEMP_REGION_1";
+      String normalRegionName1 = testName.getMethodName() + "_NORMAL_REGION_1";
+      String tempRegionName1 = testName.getMethodName() + "_TEMP_REGION_1";
 
       // to Reverse order of regions while getting Random region in QueryDataFunction [?]
-      String normalRegionName2 = this.testName.getMethodName() + "_NORMAL_REGION_2";
-      String tempRegionName2 = this.testName.getMethodName() + "_TEMP_REGION_2";
+      String normalRegionName2 = testName.getMethodName() + "_NORMAL_REGION_2";
+      String tempRegionName2 = testName.getMethodName() + "_TEMP_REGION_2";
 
-      Cache cache = this.managementTestRule.getCache();
+      Cache cache = managementTestRule.getCache();
 
       RegionFactory regionFactory = cache.createRegionFactory(RegionShortcut.LOCAL_HEAP_LRU);
       regionFactory.create(normalRegionName1);
@@ -372,12 +378,12 @@ public class QueryDataDUnitTest implements Serializable {
 
   @Test
   public void testRegionsLocalDataSet() throws Exception {
-    String partitionedRegionName = this.testName.getMethodName() + "_PARTITIONED_REGION";
+    String partitionedRegionName = testName.getMethodName() + "_PARTITIONED_REGION";
 
     String[] values1 = new String[] {"val1", "val2", "val3"};
     String[] values2 = new String[] {"val4", "val5", "val6"};
 
-    this.memberVMs[0].invoke(this.testName.getMethodName() + " Create Region", () -> {
+    memberVMs[0].invoke(testName.getMethodName() + " Create Region", () -> {
       PartitionAttributesFactory partitionAttributesFactory = new PartitionAttributesFactory();
       partitionAttributesFactory.setRedundantCopies(2).setTotalNumBuckets(12);
 
@@ -388,7 +394,7 @@ public class QueryDataDUnitTest implements Serializable {
       partitionAttributesFactory.setPartitionResolver(new SingleHopQuarterPartitionResolver());
 
       RegionFactory regionFactory =
-          this.managementTestRule.getCache().createRegionFactory(RegionShortcut.PARTITION)
+          managementTestRule.getCache().createRegionFactory(RegionShortcut.PARTITION)
               .setPartitionAttributes(partitionAttributesFactory.create());
       Region region = regionFactory.create(partitionedRegionName);
 
@@ -397,7 +403,7 @@ public class QueryDataDUnitTest implements Serializable {
       }
     });
 
-    this.memberVMs[1].invoke(this.testName.getMethodName() + " Create Region", () -> {
+    memberVMs[1].invoke(testName.getMethodName() + " Create Region", () -> {
       PartitionAttributesFactory partitionAttributesFactory = new PartitionAttributesFactory();
       partitionAttributesFactory.setRedundantCopies(2).setTotalNumBuckets(12);
 
@@ -408,7 +414,7 @@ public class QueryDataDUnitTest implements Serializable {
       partitionAttributesFactory.setPartitionResolver(new SingleHopQuarterPartitionResolver());
 
       RegionFactory regionFactory =
-          this.managementTestRule.getCache().createRegionFactory(RegionShortcut.PARTITION)
+          managementTestRule.getCache().createRegionFactory(RegionShortcut.PARTITION)
               .setPartitionAttributes(partitionAttributesFactory.create());
       Region region = regionFactory.create(partitionedRegionName);
 
@@ -417,7 +423,7 @@ public class QueryDataDUnitTest implements Serializable {
       }
     });
 
-    this.memberVMs[2].invoke(this.testName.getMethodName() + " Create Region", () -> {
+    memberVMs[2].invoke(testName.getMethodName() + " Create Region", () -> {
       PartitionAttributesFactory partitionAttributesFactory = new PartitionAttributesFactory();
       partitionAttributesFactory.setRedundantCopies(2).setTotalNumBuckets(12);
 
@@ -426,21 +432,21 @@ public class QueryDataDUnitTest implements Serializable {
       partitionAttributesFactory.setPartitionResolver(new SingleHopQuarterPartitionResolver());
 
       RegionFactory regionFactory =
-          this.managementTestRule.getCache().createRegionFactory(RegionShortcut.PARTITION)
+          managementTestRule.getCache().createRegionFactory(RegionShortcut.PARTITION)
               .setPartitionAttributes(partitionAttributesFactory.create());
       regionFactory.create(partitionedRegionName);
     });
 
     List<String> member1RealData =
-        this.memberVMs[0].invoke(() -> getLocalDataSet(partitionedRegionName));
+        memberVMs[0].invoke(() -> getLocalDataSet(partitionedRegionName));
     List<String> member2RealData =
-        this.memberVMs[1].invoke(() -> getLocalDataSet(partitionedRegionName));
+        memberVMs[1].invoke(() -> getLocalDataSet(partitionedRegionName));
     List<String> member3RealData =
-        this.memberVMs[2].invoke(() -> getLocalDataSet(partitionedRegionName));
+        memberVMs[2].invoke(() -> getLocalDataSet(partitionedRegionName));
 
-    this.managerVM.invoke(this.testName.getMethodName(), () -> {
+    managerVM.invoke(testName.getMethodName(), () -> {
       DistributedSystemMXBean distributedSystemMXBean =
-          this.managementTestRule.getSystemManagementService().getDistributedSystemMXBean();
+          managementTestRule.getSystemManagementService().getDistributedSystemMXBean();
       DistributedRegionMXBean distributedRegionMXBean =
           awaitDistributedRegionMXBean("/" + partitionedRegionName, 3);
 
@@ -486,7 +492,7 @@ public class QueryDataDUnitTest implements Serializable {
 
   private void putDataInRegion(final String regionName, final Object[] portfolio, final int from,
       final int to) {
-    Region region = this.managementTestRule.getCache().getRegion(regionName);
+    Region region = managementTestRule.getCache().getRegion(regionName);
     for (int i = from; i < to; i++) {
       region.put(new Integer(i), portfolio[i]);
     }
@@ -500,32 +506,32 @@ public class QueryDataDUnitTest implements Serializable {
     Portfolio[] portfolio = createPortfoliosAndPositions(COUNT_DESTINATION);
 
     // Fill local region
-    this.memberVMs[0]
+    memberVMs[0]
         .invoke(() -> putDataInRegion(LOCAL_REGION_NAME, portfolio, COUNT_FROM, COUNT_DESTINATION));
 
     // Fill replicated region
-    this.memberVMs[0].invoke(
+    memberVMs[0].invoke(
         () -> putDataInRegion(REPLICATE_REGION_NAME1, portfolio, COUNT_FROM, COUNT_DESTINATION));
-    this.memberVMs[1].invoke(
+    memberVMs[1].invoke(
         () -> putDataInRegion(REPLICATE_REGION_NAME2, portfolio, COUNT_FROM, COUNT_DESTINATION));
 
     // Fill Partition Region
-    this.memberVMs[0].invoke(
+    memberVMs[0].invoke(
         () -> putDataInRegion(PARTITIONED_REGION_NAME1, portfolio, COUNT_FROM, COUNT_DESTINATION));
-    this.memberVMs[0].invoke(
+    memberVMs[0].invoke(
         () -> putDataInRegion(PARTITIONED_REGION_NAME2, portfolio, COUNT_FROM, COUNT_DESTINATION));
-    this.memberVMs[0].invoke(
+    memberVMs[0].invoke(
         () -> putDataInRegion(PARTITIONED_REGION_NAME3, portfolio, COUNT_FROM, COUNT_DESTINATION));
-    this.memberVMs[0].invoke(
+    memberVMs[0].invoke(
         () -> putDataInRegion(PARTITIONED_REGION_NAME4, portfolio, COUNT_FROM, COUNT_DESTINATION));
-    this.memberVMs[0].invoke(
+    memberVMs[0].invoke(
         () -> putDataInRegion(PARTITIONED_REGION_NAME5, portfolio, COUNT_FROM, COUNT_DESTINATION));
 
-    this.memberVMs[0].invoke(() -> putPdxInstances(REPLICATE_REGION_NAME3));
+    memberVMs[0].invoke(() -> putPdxInstances(REPLICATE_REGION_NAME3));
   }
 
   private void putPdxInstances(final String regionName) throws CacheException {
-    Region region = this.managementTestRule.getCache().getRegion(regionName);
+    Region region = managementTestRule.getCache().getRegion(regionName);
 
     PdxInstanceFactory pdxInstanceFactory = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
     pdxInstanceFactory.writeInt("ID", 111);
@@ -557,7 +563,7 @@ public class QueryDataDUnitTest implements Serializable {
   }
 
   private void putBigInstances(final String regionName) {
-    Region region = this.managementTestRule.getCache().getRegion(regionName);
+    Region region = managementTestRule.getCache().getRegion(regionName);
 
     for (int i = 0; i < 1200; i++) {
       List<String> bigCollection = new ArrayList<>();
@@ -569,36 +575,36 @@ public class QueryDataDUnitTest implements Serializable {
   }
 
   private void createLocalRegion() {
-    this.managementTestRule.getCache().createRegionFactory(RegionShortcut.LOCAL)
+    managementTestRule.getCache().createRegionFactory(RegionShortcut.LOCAL)
         .create(LOCAL_REGION_NAME);
   }
 
   private void createReplicatedRegion() {
-    this.managementTestRule.getCache().createRegionFactory(RegionShortcut.REPLICATE)
+    managementTestRule.getCache().createRegionFactory(RegionShortcut.REPLICATE)
         .create(REPLICATE_REGION_NAME1);
   }
 
   private void createColocatedPR() {
     PartitionResolver testKeyBasedResolver = new TestPartitionResolver();
-    this.managementTestRule.getCache().createRegionFactory(RegionShortcut.PARTITION)
+    managementTestRule.getCache().createRegionFactory(RegionShortcut.PARTITION)
         .setPartitionAttributes(new PartitionAttributesFactory().setTotalNumBuckets(NUM_OF_BUCKETS)
             .setPartitionResolver(testKeyBasedResolver).create())
         .create(PARTITIONED_REGION_NAME1);
-    this.managementTestRule.getCache().createRegionFactory(RegionShortcut.PARTITION)
+    managementTestRule.getCache().createRegionFactory(RegionShortcut.PARTITION)
         .setPartitionAttributes(new PartitionAttributesFactory().setTotalNumBuckets(NUM_OF_BUCKETS)
             .setPartitionResolver(testKeyBasedResolver).setColocatedWith(PARTITIONED_REGION_NAME1)
             .create())
         .create(PARTITIONED_REGION_NAME2);
-    this.managementTestRule.getCache().createRegionFactory(RegionShortcut.PARTITION)
+    managementTestRule.getCache().createRegionFactory(RegionShortcut.PARTITION)
         .setPartitionAttributes(new PartitionAttributesFactory().setTotalNumBuckets(NUM_OF_BUCKETS)
             .setPartitionResolver(testKeyBasedResolver).setColocatedWith(PARTITIONED_REGION_NAME2)
             .create())
         .create(PARTITIONED_REGION_NAME3);
-    this.managementTestRule.getCache().createRegionFactory(RegionShortcut.PARTITION)
+    managementTestRule.getCache().createRegionFactory(RegionShortcut.PARTITION)
         .setPartitionAttributes(new PartitionAttributesFactory().setTotalNumBuckets(NUM_OF_BUCKETS)
             .setPartitionResolver(testKeyBasedResolver).create())
         .create(PARTITIONED_REGION_NAME4); // not collocated
-    this.managementTestRule.getCache().createRegionFactory(RegionShortcut.PARTITION)
+    managementTestRule.getCache().createRegionFactory(RegionShortcut.PARTITION)
         .setPartitionAttributes(new PartitionAttributesFactory().setTotalNumBuckets(NUM_OF_BUCKETS)
             .setPartitionResolver(testKeyBasedResolver).setColocatedWith(PARTITIONED_REGION_NAME4)
             .create())
@@ -606,30 +612,29 @@ public class QueryDataDUnitTest implements Serializable {
   }
 
   private void createDistributedRegion(final String regionName) {
-    this.managementTestRule.getCache().createRegionFactory(RegionShortcut.REPLICATE)
-        .create(regionName);
+    managementTestRule.getCache().createRegionFactory(RegionShortcut.REPLICATE).create(regionName);
   }
 
   private void createRegionsInNodes()
       throws InterruptedException, TimeoutException, ExecutionException {
     // Create local Region on servers
-    this.memberVMs[0].invoke(() -> createLocalRegion());
+    memberVMs[0].invoke(() -> createLocalRegion());
 
     // Create ReplicatedRegion on servers
-    this.memberVMs[0].invoke(() -> createReplicatedRegion());
-    this.memberVMs[1].invoke(() -> createReplicatedRegion());
-    this.memberVMs[2].invoke(() -> createReplicatedRegion());
+    memberVMs[0].invoke(() -> createReplicatedRegion());
+    memberVMs[1].invoke(() -> createReplicatedRegion());
+    memberVMs[2].invoke(() -> createReplicatedRegion());
 
-    this.memberVMs[1].invoke(() -> createDistributedRegion(REPLICATE_REGION_NAME2));
-    this.memberVMs[0].invoke(() -> createDistributedRegion(REPLICATE_REGION_NAME3));
-    this.memberVMs[0].invoke(() -> createDistributedRegion(REPLICATE_REGION_NAME4));
+    memberVMs[1].invoke(() -> createDistributedRegion(REPLICATE_REGION_NAME2));
+    memberVMs[0].invoke(() -> createDistributedRegion(REPLICATE_REGION_NAME3));
+    memberVMs[0].invoke(() -> createDistributedRegion(REPLICATE_REGION_NAME4));
 
     // Create two co-located PartitionedRegions On Servers.
-    this.memberVMs[0].invoke(() -> createColocatedPR());
-    this.memberVMs[1].invoke(() -> createColocatedPR());
-    this.memberVMs[2].invoke(() -> createColocatedPR());
+    memberVMs[0].invoke(() -> createColocatedPR());
+    memberVMs[1].invoke(() -> createColocatedPR());
+    memberVMs[2].invoke(() -> createColocatedPR());
 
-    this.managerVM.invoke("Wait for all Region Proxies to get replicated", () -> {
+    managerVM.invoke("Wait for all Region Proxies to get replicated", () -> {
       awaitDistributedRegionMXBean("/" + PARTITIONED_REGION_NAME1, 3);
       awaitDistributedRegionMXBean("/" + PARTITIONED_REGION_NAME2, 3);
       awaitDistributedRegionMXBean("/" + PARTITIONED_REGION_NAME3, 3);
@@ -644,7 +649,7 @@ public class QueryDataDUnitTest implements Serializable {
 
   private List<String> getLocalDataSet(final String region) {
     PartitionedRegion partitionedRegion =
-        PartitionedRegionHelper.getPartitionedRegion(region, this.managementTestRule.getCache());
+        PartitionedRegionHelper.getPartitionedRegion(region, managementTestRule.getCache());
     Set<BucketRegion> localPrimaryBucketRegions =
         partitionedRegion.getDataStore().getAllLocalPrimaryBucketRegions();
 
@@ -680,7 +685,7 @@ public class QueryDataDUnitTest implements Serializable {
   }
 
   private MemberMXBean awaitMemberMXBeanProxy(final DistributedMember member) {
-    SystemManagementService service = this.managementTestRule.getSystemManagementService();
+    SystemManagementService service = managementTestRule.getSystemManagementService();
     ObjectName objectName = service.getMemberMBeanName(member);
     String alias = "awaiting MemberMXBean proxy for " + member;
 
@@ -691,7 +696,7 @@ public class QueryDataDUnitTest implements Serializable {
   }
 
   private DistributedSystemMXBean awaitDistributedSystemMXBean() {
-    SystemManagementService service = this.managementTestRule.getSystemManagementService();
+    SystemManagementService service = managementTestRule.getSystemManagementService();
 
     await().until(() -> assertThat(service.getDistributedSystemMXBean()).isNotNull());
 
@@ -699,7 +704,7 @@ public class QueryDataDUnitTest implements Serializable {
   }
 
   private DistributedRegionMXBean awaitDistributedRegionMXBean(final String name) {
-    SystemManagementService service = this.managementTestRule.getSystemManagementService();
+    SystemManagementService service = managementTestRule.getSystemManagementService();
 
     await().until(() -> assertThat(service.getDistributedRegionMXBean(name)).isNotNull());
 
@@ -708,7 +713,7 @@ public class QueryDataDUnitTest implements Serializable {
 
   private DistributedRegionMXBean awaitDistributedRegionMXBean(final String name,
       final int memberCount) {
-    SystemManagementService service = this.managementTestRule.getSystemManagementService();
+    SystemManagementService service = managementTestRule.getSystemManagementService();
 
     await().until(() -> assertThat(service.getDistributedRegionMXBean(name)).isNotNull());
     await().until(() -> assertThat(service.getDistributedRegionMXBean(name).getMemberCount())
diff --git a/geode-core/src/test/java/org/apache/geode/management/QueryDataFunctionIntegrationTest.java b/geode-core/src/test/java/org/apache/geode/management/QueryDataFunctionIntegrationTest.java
index 7f19416..a3f0667 100644
--- a/geode-core/src/test/java/org/apache/geode/management/QueryDataFunctionIntegrationTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/QueryDataFunctionIntegrationTest.java
@@ -109,8 +109,11 @@ public class QueryDataFunctionIntegrationTest {
   }
 
   /**
-   * #Issue 51048 Tests a model where Objects have a circular reference with object reference. e.g.
-   * Order1-- Has--> Items each Item --Has --> OrderN where (OrderN == Order1)
+   * Tests a model where Objects have a circular reference with object reference. e.g. Order1--
+   * Has--> Items each Item --Has --> OrderN where (OrderN == Order1)
+   * <p>
+   *
+   * RegressionTest for TRAC #51048: Disk Read/ Write shows negative at cluster level JMX
    */
   @Test
   public void testCyclicWithNestedObjectReference() throws Exception {
@@ -316,5 +319,4 @@ public class QueryDataFunctionIntegrationTest {
     }
     return portfolios;
   }
-
 }
diff --git a/geode-core/src/test/java/org/apache/geode/management/RegionCreateDestroyDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/RegionCreateDestroyDUnitTest.java
index d336069..bf141ed 100644
--- a/geode-core/src/test/java/org/apache/geode/management/RegionCreateDestroyDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/RegionCreateDestroyDUnitTest.java
@@ -14,9 +14,11 @@
  */
 package org.apache.geode.management;
 
-import static org.apache.geode.distributed.ConfigurationProperties.*;
+import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
+import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
+import static org.apache.geode.distributed.ConfigurationProperties.SECURITY_LOG_LEVEL;
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 
 import java.io.IOException;
diff --git a/geode-core/src/test/java/org/apache/geode/management/RegionManagementDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/RegionManagementDUnitTest.java
index ee7cb95..c97b83c 100644
--- a/geode-core/src/test/java/org/apache/geode/management/RegionManagementDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/RegionManagementDUnitTest.java
@@ -12,20 +12,6 @@
  * or implied. See the License for the specific language governing permissions and limitations under
  * the License.
  */
-/*
- * 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.management;
 
 import static java.lang.management.ManagementFactory.getPlatformMBeanServer;
@@ -34,11 +20,11 @@ import static org.apache.geode.cache.Region.SEPARATOR;
 import static org.apache.geode.management.internal.MBeanJMXAdapter.getDistributedRegionMbeanName;
 import static org.apache.geode.management.internal.MBeanJMXAdapter.getMemberMBeanName;
 import static org.apache.geode.management.internal.MBeanJMXAdapter.getRegionMBeanName;
-import static org.apache.geode.test.dunit.Host.getHost;
 import static org.apache.geode.test.dunit.Invoke.invokeInEveryVM;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.fail;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashSet;
@@ -53,7 +39,7 @@ import javax.management.ObjectName;
 import org.awaitility.Awaitility;
 import org.awaitility.core.ConditionFactory;
 import org.junit.After;
-import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -85,16 +71,19 @@ import org.apache.geode.test.junit.categories.DistributedTest;
 import org.apache.geode.test.junit.categories.FlakyTest;
 
 /**
+ * Distributed tests for {@link RegionMXBean}.
+ * <p>
+ *
  * This class checks and verifies various data and operations exposed through RegionMXBean
  * interface.
- * </p>
+ * <p>
+ *
  * Goal of the Test : RegionMBean gets created once region is created. Data like Region Attributes
  * data and stats are of proper value
- * </p>
- * TODO: complete refactoring this test to use ManagementTestRule
  */
 @Category(DistributedTest.class)
-public class RegionManagementDUnitTest extends ManagementTestBase {
+@SuppressWarnings({"serial", "unused"})
+public class RegionManagementDUnitTest implements Serializable {
 
   private static final String REGION_NAME = "MANAGEMENT_TEST_REGION";
   private static final String PARTITIONED_REGION_NAME = "MANAGEMENT_PAR_REGION";
@@ -111,9 +100,9 @@ public class RegionManagementDUnitTest extends ManagementTestBase {
   // field used in manager VM
   private static Region fixedPartitionedRegion;
 
-  private static final AtomicReference<List<Notification>> MEMBER_NOTIFICATIONS_REF =
+  private static final AtomicReference<List<Notification>> MEMBER_NOTIFICATIONS =
       new AtomicReference<>();
-  private static final AtomicReference<List<Notification>> SYSTEM_NOTIFICATIONS_REF =
+  private static final AtomicReference<List<Notification>> SYSTEM_NOTIFICATIONS =
       new AtomicReference<>();
 
   @Manager
@@ -122,33 +111,28 @@ public class RegionManagementDUnitTest extends ManagementTestBase {
   @Member
   private VM[] memberVMs;
 
-  @Before
-  public void before() throws Exception {
-    this.managerVM = getHost(0).getVM(0);
-
-    this.memberVMs = new VM[3];
-    this.memberVMs[0] = getHost(0).getVM(1);
-    this.memberVMs[1] = getHost(0).getVM(2);
-    this.memberVMs[2] = getHost(0).getVM(3);
-  }
+  @Rule
+  public ManagementTestRule managementTestRule = ManagementTestRule.builder().build();
 
   @After
   public void after() throws Exception {
-    invokeInEveryVM(() -> MEMBER_NOTIFICATIONS_REF.set(null));
-    invokeInEveryVM(() -> SYSTEM_NOTIFICATIONS_REF.set(null));
-    disconnectAllFromDS_tmp();
+    disconnectAllFromDS();
+
+    MEMBER_NOTIFICATIONS.set(null);
+    SYSTEM_NOTIFICATIONS.set(null);
+    invokeInEveryVM(() -> MEMBER_NOTIFICATIONS.set(null));
+    invokeInEveryVM(() -> SYSTEM_NOTIFICATIONS.set(null));
   }
 
   /**
-   * Tests all Region MBean related Management APIs
-   * <p>
-   * a) Notification propagated to member MBean while a region is created
+   * Tests all Region MBean related Management APIs:
    * <p>
+   * a) Notification propagated to member MBean while a region is created<br>
    * b) Creates and check a Distributed Region
    */
   @Test
   public void testDistributedRegion() throws Exception {
-    createMembersAndThenManagers_tmp();
+    createMembersAndThenManagers();
 
     // Adding notification listener for remote cache memberVMs
     addMemberNotificationListener(this.managerVM, 3); // TODO: why?
@@ -171,15 +155,14 @@ public class RegionManagementDUnitTest extends ManagementTestBase {
   }
 
   /**
-   * Tests all Region MBean related Management APIs
-   * <p>
-   * a) Notification propagated to member MBean while a region is created
+   * Tests all Region MBean related Management APIs:
    * <p>
+   * a) Notification propagated to member MBean while a region is created<br>
    * b) Created and check a Partitioned Region
    */
   @Test
   public void testPartitionedRegion() throws Exception {
-    createMembersAndThenManagers_tmp();
+    createMembersAndThenManagers();
 
     // Adding notification listener for remote cache memberVMs
     addMemberNotificationListener(this.managerVM, 3); // TODO: why?
@@ -200,15 +183,14 @@ public class RegionManagementDUnitTest extends ManagementTestBase {
   }
 
   /**
-   * Tests all Region MBean related Management APIs
-   * <p>
-   * a) Notification propagated to member MBean while a region is created
+   * Tests all Region MBean related Management APIs:
    * <p>
+   * a) Notification propagated to member MBean while a region is created<br>
    * b) Creates and check a Fixed Partitioned Region
    */
   @Test
   public void testFixedPRRegionMBean() throws Exception {
-    createMembersAndThenManagers_tmp();
+    createMembersAndThenManagers();
 
     // Adding notification listener for remote cache memberVMs
     addMemberNotificationListener(this.managerVM, 3); // TODO: why?
@@ -234,10 +216,10 @@ public class RegionManagementDUnitTest extends ManagementTestBase {
    * Tests a Distributed Region at Managing Node side while region is created in a member node
    * asynchronously.
    */
-  @Category(FlakyTest.class) // GEODE-1930
   @Test
+  @Category(FlakyTest.class) // GEODE-1930
   public void testRegionAggregate() throws Exception {
-    createManagersAndThenMembers_tmp();
+    createManagersAndThenMembers();
 
     // Adding notification listener for remote cache memberVMs
     addSystemNotificationListener(this.managerVM); // TODO: why?
@@ -267,7 +249,7 @@ public class RegionManagementDUnitTest extends ManagementTestBase {
   @Test
   @Category(FlakyTest.class) // GEODE-3335
   public void testNavigationAPIS() throws Exception {
-    createManagersAndThenMembers_tmp();
+    createManagersAndThenMembers();
 
     for (VM memberVM : this.memberVMs) {
       createDistributedRegion_tmp(memberVM, REGION_NAME);
@@ -292,7 +274,7 @@ public class RegionManagementDUnitTest extends ManagementTestBase {
 
   @Test
   public void testSubRegions() throws Exception {
-    createMembersAndThenManagers_tmp();
+    createMembersAndThenManagers();
 
     for (VM memberVM : this.memberVMs) {
       createLocalRegion_tmp(memberVM, LOCAL_REGION_NAME);
@@ -311,43 +293,45 @@ public class RegionManagementDUnitTest extends ManagementTestBase {
 
   @Test
   public void testSpecialRegions() throws Exception {
-    createMembersAndThenManagers_tmp();
+    createMembersAndThenManagers();
     createSpecialRegion(this.memberVMs[0]);
     verifySpecialRegion(this.managerVM);
   }
 
-  @Category(FlakyTest.class) // GEODE-1930
   @Test
+  @Category(FlakyTest.class) // GEODE-1930
   public void testLruStats() throws Exception {
-    createMembersAndThenManagers_tmp();
+    createMembersAndThenManagers();
     for (VM memberVM : this.memberVMs) {
       createDiskRegion(memberVM);
     }
     verifyEntrySize(this.managerVM, 3);
   }
 
-  private void createMembersAndThenManagers_tmp() throws Exception {
-    initManagement(false);
+  private void createMembersAndThenManagers() throws Exception {
+    this.managementTestRule.createMembers();
+    this.managementTestRule.createManagers();
   }
 
-  private void createManagersAndThenMembers_tmp() throws Exception {
-    initManagement(true);
+  private void createManagersAndThenMembers() throws Exception {
+    this.managementTestRule.createManagers();
+    this.managementTestRule.createMembers();
   }
 
-  private void disconnectAllFromDS_tmp() {
-    disconnectAllFromDS();
+  private void disconnectAllFromDS() {
+    this.managementTestRule.disconnectAllFromDS();
   }
 
-  private ManagementService getManagementService_tmp() {
-    return getManagementService();
+  private ManagementService getManagementService() {
+    return this.managementTestRule.getManagementService();
   }
 
-  private Cache getCache_tmp() {
-    return getCache();
+  private Cache getCache() {
+    return this.managementTestRule.getCache();
   }
 
   private void closeRegion(final VM anyVM, final String regionPath) {
-    anyVM.invoke("closeRegion", () -> getCache_tmp().getRegion(regionPath).close());
+    anyVM.invoke("closeRegion", () -> getCache().getRegion(regionPath).close());
   }
 
   private void createSpecialRegion(final VM memberVM) {
@@ -356,7 +340,7 @@ public class RegionManagementDUnitTest extends ManagementTestBase {
       attributesFactory.setValueConstraint(Portfolio.class);
       RegionAttributes regionAttributes = attributesFactory.create();
 
-      Cache cache = getCache_tmp();
+      Cache cache = getCache();
       cache.createRegion("p-os", regionAttributes);
       cache.createRegion("p_os", regionAttributes);
     });
@@ -376,13 +360,13 @@ public class RegionManagementDUnitTest extends ManagementTestBase {
       factory.setEvictionAttributes(EvictionAttributes.createLRUMemoryAttributes(20,
           new TestObjectSizerImpl(), EvictionAction.LOCAL_DESTROY));
 
-      Region region = getCache_tmp().createRegion(REGION_NAME, factory.create());
+      Region region = getCache().createRegion(REGION_NAME, factory.create());
 
       LRUStatistics lruStats =
           ((AbstractRegion) region).getEvictionController().getLRUHelper().getStats();
       assertThat(lruStats).isNotNull();
 
-      RegionMXBean regionMXBean = getManagementService_tmp().getLocalRegionMBean(REGION_PATH);
+      RegionMXBean regionMXBean = getManagementService().getLocalRegionMBean(REGION_PATH);
       assertThat(regionMXBean).isNotNull();
 
       int total;
@@ -406,21 +390,21 @@ public class RegionManagementDUnitTest extends ManagementTestBase {
 
   private void verifySubRegions(final VM memberVM, final String subRegionPath) {
     memberVM.invoke("verifySubRegions", () -> {
-      RegionMXBean regionMXBean = getManagementService_tmp().getLocalRegionMBean(subRegionPath);
+      RegionMXBean regionMXBean = getManagementService().getLocalRegionMBean(subRegionPath);
       assertThat(regionMXBean).isNotNull();
     });
   }
 
   private void verifyNullRegions(final VM memberVM, final String subRegionPath) {
     memberVM.invoke("verifyNullRegions", () -> {
-      RegionMXBean regionMXBean = getManagementService_tmp().getLocalRegionMBean(subRegionPath);
+      RegionMXBean regionMXBean = getManagementService().getLocalRegionMBean(subRegionPath);
       assertThat(regionMXBean).isNull();
     });
   }
 
   private void verifyNavigationApis(final VM managerVM, final List<String> memberIds) {
     managerVM.invoke("verifyNavigationApis", () -> {
-      ManagementService service = getManagementService_tmp();
+      ManagementService service = getManagementService();
       assertThat(service.getDistributedSystemMXBean()).isNotNull();
 
       awaitMemberCount(4);
@@ -522,7 +506,7 @@ public class RegionManagementDUnitTest extends ManagementTestBase {
     AttributesFactory attributesFactory = new AttributesFactory();
     attributesFactory.setPartitionAttributes(partitionAttributesFactory.create());
 
-    fixedPartitionedRegion = getCache_tmp().createRegion(FIXED_PR_NAME, attributesFactory.create());
+    fixedPartitionedRegion = getCache().createRegion(FIXED_PR_NAME, attributesFactory.create());
     assertThat(fixedPartitionedRegion).isNotNull();
 
     RegionMXBean regionMXBean = service.getLocalRegionMBean(FIXED_PR_PATH);
@@ -551,7 +535,7 @@ public class RegionManagementDUnitTest extends ManagementTestBase {
       SystemManagementService service = getSystemManagementService_tmp();
 
       List<Notification> notifications = new ArrayList<>();
-      MEMBER_NOTIFICATIONS_REF.set(notifications);
+      MEMBER_NOTIFICATIONS.set(notifications);
 
       for (DistributedMember member : otherMemberSet) {
         MemberNotificationListener listener = new MemberNotificationListener(notifications);
@@ -573,7 +557,7 @@ public class RegionManagementDUnitTest extends ManagementTestBase {
       awaitDistributedSystemMXBean();
 
       List<Notification> notifications = new ArrayList<>();
-      SYSTEM_NOTIFICATIONS_REF.set(notifications);
+      SYSTEM_NOTIFICATIONS.set(notifications);
 
       DistributedSystemNotificationListener listener =
           new DistributedSystemNotificationListener(notifications);
@@ -585,11 +569,11 @@ public class RegionManagementDUnitTest extends ManagementTestBase {
   private void verifyMemberNotifications(final VM managerVM, final String regionName,
       final int expectedMembers) {
     managerVM.invoke("verifyMemberNotifications", () -> {
-      await().until(() -> assertThat(MEMBER_NOTIFICATIONS_REF.get()).hasSize(expectedMembers * 2));
+      await().until(() -> assertThat(MEMBER_NOTIFICATIONS.get()).hasSize(expectedMembers * 2));
 
       int regionCreatedCount = 0;
       int regionDestroyedCount = 0;
-      for (Notification notification : MEMBER_NOTIFICATIONS_REF.get()) {
+      for (Notification notification : MEMBER_NOTIFICATIONS.get()) {
         if (JMXNotificationType.REGION_CREATED.equals(notification.getType())) {
           regionCreatedCount++;
           assertThat(notification.getMessage()).contains(regionName);
@@ -622,13 +606,13 @@ public class RegionManagementDUnitTest extends ManagementTestBase {
   private void verifySystemNotifications(final VM managerVM, final String regionName,
       final int expectedMembers) {
     managerVM.invoke("verifySystemNotifications", () -> {
-      assertThat(SYSTEM_NOTIFICATIONS_REF.get()).isNotNull();
-      assertThat(SYSTEM_NOTIFICATIONS_REF.get()).hasSize(expectedMembers + 2); // 2 for the manager
+      assertThat(SYSTEM_NOTIFICATIONS.get()).isNotNull();
+      assertThat(SYSTEM_NOTIFICATIONS.get()).hasSize(expectedMembers + 2); // 2 for the manager
 
 
       int regionCreatedCount = 0;
       int regionDestroyedCount = 0;
-      for (Notification notification : SYSTEM_NOTIFICATIONS_REF.get()) {
+      for (Notification notification : SYSTEM_NOTIFICATIONS.get()) {
         if (JMXNotificationType.REGION_CREATED.equals(notification.getType())) {
           regionCreatedCount++;
           assertThat(notification.getMessage()).contains(regionName);
@@ -699,7 +683,7 @@ public class RegionManagementDUnitTest extends ManagementTestBase {
   private void verifyDistributedMBean(final VM managerVM, final int expectedMembers) {
     managerVM.invoke("verifyDistributedMBean", () -> {
       if (expectedMembers == 0) {
-        ManagementService service = getManagementService_tmp();
+        ManagementService service = getManagementService();
         String alias = "Waiting for the proxy to get deleted at managing node";
         await(alias)
             .until(() -> assertThat(service.getDistributedRegionMXBean(REGION_PATH)).isNull());
@@ -733,7 +717,7 @@ public class RegionManagementDUnitTest extends ManagementTestBase {
         assertThat(partitionAttributesData).isNotNull();
       }
 
-      ManagementService service = getManagementService_tmp();
+      ManagementService service = getManagementService();
       DistributedRegionMXBean distributedRegionMXBean =
           service.getDistributedRegionMXBean(PARTITIONED_REGION_PATH);
       assertThat(distributedRegionMXBean.getMembers()).hasSize(3);
@@ -742,7 +726,7 @@ public class RegionManagementDUnitTest extends ManagementTestBase {
 
   private void verifyReplicateRegionAfterCreate(final VM memberVM) {
     memberVM.invoke("verifyReplicateRegionAfterCreate", () -> {
-      Cache cache = getCache_tmp();
+      Cache cache = getCache();
 
       String memberId =
           MBeanJMXAdapter.getMemberNameOrId(cache.getDistributedSystem().getDistributedMember());
@@ -775,7 +759,7 @@ public class RegionManagementDUnitTest extends ManagementTestBase {
 
   private void verifyPartitionRegionAfterCreate(final VM memberVM) {
     memberVM.invoke("verifyPartitionRegionAfterCreate", () -> {
-      Region region = getCache_tmp().getRegion(PARTITIONED_REGION_PATH);
+      Region region = getCache().getRegion(PARTITIONED_REGION_PATH);
 
       SystemManagementService service = getSystemManagementService_tmp();
       RegionMXBean regionMXBean = service.getLocalRegionMBean(PARTITIONED_REGION_PATH);
@@ -791,7 +775,7 @@ public class RegionManagementDUnitTest extends ManagementTestBase {
       assertThat(regionMXBean).isNull();
 
       ObjectName objectName = service.getRegionMBeanName(
-          getCache_tmp().getDistributedSystem().getDistributedMember(), REGION_PATH);
+          getCache().getDistributedSystem().getDistributedMember(), REGION_PATH);
       assertThat(service.getLocalManager().getManagementResourceRepo()
           .getEntryFromLocalMonitoringRegion(objectName)).isNull();
     });
@@ -799,7 +783,7 @@ public class RegionManagementDUnitTest extends ManagementTestBase {
 
   private void verifyPartitionRegionAfterClose(final VM memberVM) {
     memberVM.invoke("verifyPartitionRegionAfterClose", () -> {
-      ManagementService service = getManagementService_tmp();
+      ManagementService service = getManagementService();
       RegionMXBean regionMXBean = service.getLocalRegionMBean(PARTITIONED_REGION_PATH);
       assertThat(regionMXBean).isNull();
     });
@@ -1001,14 +985,14 @@ public class RegionManagementDUnitTest extends ManagementTestBase {
   }
 
   private void createDistributedRegion_tmp(final String regionName) {
-    getCache_tmp().createRegionFactory(RegionShortcut.REPLICATE).create(regionName);
+    getCache().createRegionFactory(RegionShortcut.REPLICATE).create(regionName);
   }
 
   private void createPartitionRegion_tmp(final VM vm, final String partitionRegionName) {
     vm.invoke("Create Partitioned region", () -> {
       SystemManagementService service = getSystemManagementService_tmp();
       RegionFactory regionFactory =
-          getCache_tmp().createRegionFactory(RegionShortcut.PARTITION_REDUNDANT);
+          getCache().createRegionFactory(RegionShortcut.PARTITION_REDUNDANT);
       regionFactory.create(partitionRegionName);
     });
   }
@@ -1016,7 +1000,7 @@ public class RegionManagementDUnitTest extends ManagementTestBase {
   private void createLocalRegion_tmp(final VM vm, final String localRegionName) {
     vm.invoke("Create Local region", () -> {
       SystemManagementService service = getSystemManagementService_tmp();
-      RegionFactory regionFactory = getCache_tmp().createRegionFactory(RegionShortcut.LOCAL);
+      RegionFactory regionFactory = getCache().createRegionFactory(RegionShortcut.LOCAL);
       regionFactory.create(localRegionName);
     });
   }
@@ -1025,31 +1009,31 @@ public class RegionManagementDUnitTest extends ManagementTestBase {
       final String subregionName) {
     vm.invoke("Create Sub region", () -> {
       SystemManagementService service = getSystemManagementService_tmp();
-      Region region = getCache_tmp().getRegion(parentRegionPath);
+      Region region = getCache().getRegion(parentRegionPath);
       region.createSubregion(subregionName, region.getAttributes());
     });
   }
 
   private String getDistributedMemberId_tmp(final VM vm) {
     return vm.invoke("getMemberId",
-        () -> getCache_tmp().getDistributedSystem().getDistributedMember().getId());
+        () -> getCache().getDistributedSystem().getDistributedMember().getId());
   }
 
   private DistributedMember getDistributedMember_tmp(final VM anyVM) {
     return anyVM.invoke("getDistributedMember_tmp",
-        () -> getCache_tmp().getDistributedSystem().getDistributedMember());
+        () -> getCache().getDistributedSystem().getDistributedMember());
   }
 
   private SystemManagementService getSystemManagementService_tmp() {
-    return (SystemManagementService) getManagementService_tmp();
+    return (SystemManagementService) getManagementService();
   }
 
   private DM getDistributionManager_tmp() {
-    return ((GemFireCacheImpl) getCache_tmp()).getDistributionManager();
+    return ((GemFireCacheImpl) getCache()).getDistributionManager();
   }
 
   private DistributedMember getDistributedMember_tmp() {
-    return getCache_tmp().getDistributedSystem().getDistributedMember();
+    return getCache().getDistributedSystem().getDistributedMember();
   }
 
   private Set<DistributedMember> getOtherNormalMembers_tmp() {
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 0773262..5d45239 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
@@ -14,156 +14,159 @@
  */
 package org.apache.geode.management;
 
-import static org.apache.geode.distributed.ConfigurationProperties.*;
+import static java.util.concurrent.TimeUnit.MILLISECONDS;
+import static java.util.concurrent.TimeUnit.SECONDS;
+import static org.apache.geode.distributed.ConfigurationProperties.CLUSTER_SSL_CIPHERS;
+import static org.apache.geode.distributed.ConfigurationProperties.CLUSTER_SSL_ENABLED;
+import static org.apache.geode.distributed.ConfigurationProperties.CLUSTER_SSL_PROTOCOLS;
+import static org.apache.geode.distributed.ConfigurationProperties.CLUSTER_SSL_REQUIRE_AUTHENTICATION;
+import static org.apache.geode.distributed.ConfigurationProperties.ENABLE_NETWORK_PARTITION_DETECTION;
+import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
+import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
 import static org.apache.geode.distributed.internal.DistributionConfig.RESTRICT_MEMBERSHIP_PORT_RANGE;
-import static org.apache.geode.test.dunit.Assert.*;
-import static org.apache.geode.test.dunit.LogWriterUtils.*;
-
-import org.apache.geode.internal.net.SocketCreator;
-import org.apache.geode.test.dunit.Invoke;
-import org.awaitility.Awaitility;
+import static org.apache.geode.internal.AvailablePort.SOCKET;
+import static org.apache.geode.internal.AvailablePort.getRandomAvailablePort;
+import static org.apache.geode.test.dunit.IgnoredException.addIgnoredException;
+import static org.apache.geode.test.dunit.Invoke.invokeInEveryVM;
+import static org.apache.geode.test.dunit.NetworkUtils.getServerHostName;
+import static org.apache.geode.test.dunit.Wait.pause;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.awaitility.Awaitility.await;
 
 import java.io.IOException;
+import java.io.Serializable;
+import java.net.ConnectException;
 import java.util.Collections;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Properties;
 import java.util.Set;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicReference;
 
-import org.apache.geode.distributed.internal.ServerLocation;
+import org.awaitility.core.ConditionTimeoutException;
+import org.junit.After;
 import org.junit.Before;
 import org.junit.ClassRule;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 import org.apache.geode.InternalGemFireException;
-import org.apache.geode.LogWriter;
 import org.apache.geode.cache.AttributesFactory;
+import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.cache.Region;
 import org.apache.geode.cache.Scope;
 import org.apache.geode.cache.client.PoolManager;
 import org.apache.geode.cache.client.ServerConnectivityException;
 import org.apache.geode.cache.client.internal.PoolImpl;
 import org.apache.geode.cache30.ClientServerTestCase;
-import org.apache.geode.distributed.*;
-import org.apache.geode.internal.*;
-import org.apache.geode.internal.cache.GemFireCacheImpl;
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.distributed.DurableClientAttributes;
+import org.apache.geode.distributed.Role;
+import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.internal.cache.tier.InternalClientMembership;
 import org.apache.geode.internal.cache.tier.sockets.ServerConnection;
-import org.apache.geode.internal.logging.InternalLogWriter;
-import org.apache.geode.internal.logging.LocalLogWriter;
+import org.apache.geode.internal.net.SocketCreator;
 import org.apache.geode.management.membership.ClientMembership;
 import org.apache.geode.management.membership.ClientMembershipEvent;
 import org.apache.geode.management.membership.ClientMembershipListener;
 import org.apache.geode.management.membership.MembershipEvent;
 import org.apache.geode.management.membership.MembershipListener;
 import org.apache.geode.management.membership.UniversalMembershipListenerAdapter;
+import org.apache.geode.management.membership.UniversalMembershipListenerAdapter.AdaptedMembershipEvent;
 import org.apache.geode.test.dunit.Host;
-import org.apache.geode.test.dunit.IgnoredException;
-import org.apache.geode.test.dunit.NetworkUtils;
 import org.apache.geode.test.dunit.SerializableCallable;
 import org.apache.geode.test.dunit.SerializableRunnable;
 import org.apache.geode.test.dunit.VM;
-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.FlakyTest;
 
 /**
- * Tests the UniversalMembershipListenerAdapter.
+ * Distributed tests for {@link UniversalMembershipListenerAdapter}.
  *
  * @since GemFire 4.2.1
  */
 @Category(DistributedTest.class)
 public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTestCase {
-  @ClassRule
-  public static DistributedRestoreSystemProperties distributedRestoreSystemProperties =
-      new DistributedRestoreSystemProperties();
 
-  protected static final boolean CLIENT = true;
-  protected static final boolean SERVER = false;
+  private static final int JOINED = 0;
+  private static final int LEFT = 1;
+  private static final int CRASHED = 2;
 
-  protected static final int JOINED = 0;
-  protected static final int LEFT = 1;
-  protected static final int CRASHED = 2;
+  /** Maximum millis allowed for client to fully connect before test fails */
+  private static final int JOIN_FAIL_MILLIS = 30 * 1000;
 
-  /** Brief pause for basic testing of asynchronous event notification */
-  private static final int BRIEF_PAUSE_MILLIS = 2000;
-  /** Maximum millis allowed for bridge client to fully connect before test fails */
-  private static final int JOIN_FAIL_MILLIS = 30000;
+  /**
+   * Millis to wait for notification of all three event listeners to be notified
+   * <p>
+   *
+   * Use Integer.MAX_VALUE for debugging
+   */
+  private static final int ASYNC_EVENT_WAIT_MILLIS = 30 * 1000;
+
+  private static int serverPort;
 
-  // the following wait millis are max wait time until notify occurs
+  private final MembershipNotification joinSystemNotification = new MembershipNotification();
+  private final MembershipNotification leftSystemNotification = new MembershipNotification();
+  private final MembershipNotification crashedSystemNotification = new MembershipNotification();
 
-  /** Millis to wait for connection to AdminDS */
-  private static final int CONNECT_WAIT_MILLIS = 5000;
-  /** Millis to wait for basic synchronous listener to be notified */
-  private static final int SYNC_ASYNC_EVENT_WAIT_MILLIS = 2000;
-  /** Millis to wait for all three event listeners to be notified */
-  private static final int ASYNC_EVENT_WAIT_MILLIS = 30000; // use Integer.MAX_VALUE for debugging
+  private final MembershipNotification joinAdapterNotification = new MembershipNotification();
+  private final MembershipNotification leftAdapterNotification = new MembershipNotification();
+  private final MembershipNotification crashedAdapterNotification = new MembershipNotification();
+
+  private final MembershipNotification joinClientNotification = new MembershipNotification();
+  private final MembershipNotification leftClientNotification = new MembershipNotification();
+  private final MembershipNotification crashedClientNotification = new MembershipNotification();
+
+  @ClassRule
+  public static DistributedRestoreSystemProperties distributedRestoreSystemProperties =
+      new DistributedRestoreSystemProperties();
 
   @Before
-  public void setTestToUseIpAddresses() {
+  public void setUp() throws Exception {
     SocketCreator.resolve_dns = false;
     SocketCreator.use_client_host_name = false;
-    Invoke.invokeInEveryVM(() -> {
+    invokeInEveryVM(() -> {
       SocketCreator.resolve_dns = false;
       SocketCreator.use_client_host_name = false;
     });
   }
 
-  @Override
-  public final void postTearDownCacheTestCase() throws Exception {
+  @After
+  public void tearDown() throws Exception {
+    disconnectAllFromDS();
     InternalClientMembership.unregisterAllListeners();
+    ServerConnection.setForceClientCrashEvent(false);
   }
 
   @Override
   public Properties getDistributedSystemProperties() {
-    Properties result = super.getDistributedSystemProperties();
-    result.put(ConfigurationProperties.ENABLE_NETWORK_PARTITION_DETECTION, "false");
-    return result;
+    Properties config = new Properties();
+    config.put(ENABLE_NETWORK_PARTITION_DETECTION, "false");
+    return config;
   }
 
   /**
-   * Tests wrapping of BridgeMembershipEvent fired as MembershipEvent.
+   * Tests wrapping of ClientMembershipEvent fired as MembershipEvent.
    */
   @Test
   public void testAdaptedBridgeEvents() throws Exception {
     getSystem();
 
-    final boolean[] fired = new boolean[1];
-    final DistributedMember[] member = new DistributedMember[1];
-    final String[] memberId = new String[1];
-
-    UniversalMembershipListenerAdapter listener = new UniversalMembershipListenerAdapter() {
+    // apparently construction registers with ClientMembership
+    new UniversalMembershipListenerAdapter() {
       @Override
-      public synchronized void memberJoined(MembershipEvent event) {
-        assertFalse(fired[0]); // assures no dupes
-        assertNull(member[0]);
-        assertNull(memberId[0]);
-        fired[0] = true;
-        member[0] = event.getDistributedMember();
-        memberId[0] = event.getMemberId();
-        notify();
+      public void memberJoined(final MembershipEvent event) {
+        joinAdapterNotification.notify(event);
       }
-
-      @Override
-      public void memberLeft(MembershipEvent event) {}
-
-      @Override
-      public void memberCrashed(MembershipEvent event) {}
     };
 
-    DistributedMember clientJoined = new TestDistributedMember("clientJoined");
-    InternalClientMembership.notifyClientJoined(clientJoined);
-    synchronized (listener) {
-      if (!fired[0]) {
-        listener.wait(SYNC_ASYNC_EVENT_WAIT_MILLIS);
-      }
-    }
-    assertTrue(fired[0]);
-    assertEquals(clientJoined, member[0]);
-    assertEquals(clientJoined.getId(), memberId[0]);
+    DistributedMember member = new FakeDistributedMember("member");
+    InternalClientMembership.notifyClientJoined(member);
+
+    joinAdapterNotification.awaitNotification(30, SECONDS);
+    joinAdapterNotification.validate(member);
   }
 
   /**
@@ -173,100 +176,57 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
   public void testNoDuplicates() throws Exception {
     getSystem();
 
-    final boolean[] fired = new boolean[3];
-    final DistributedMember[] member = new DistributedMember[3];
-    final String[] memberId = new String[3];
-
-    UniversalMembershipListenerAdapter listener = new UniversalMembershipListenerAdapter() {
+    // apparently construction registers with ClientMembership
+    new UniversalMembershipListenerAdapter() {
       @Override
-      public synchronized void memberJoined(MembershipEvent event) {
-        assertFalse(fired[JOINED]);
-        assertNull(member[JOINED]);
-        assertNull(memberId[JOINED]);
-        fired[JOINED] = true;
-        member[JOINED] = event.getDistributedMember();
-        memberId[JOINED] = event.getMemberId();
-        notify();
+      public void memberJoined(final MembershipEvent event) {
+        joinAdapterNotification.notify(event);
       }
 
       @Override
-      public synchronized void memberLeft(MembershipEvent event) {
-        assertFalse(fired[LEFT]);
-        assertNull(member[LEFT]);
-        assertNull(memberId[LEFT]);
-        fired[LEFT] = true;
-        member[LEFT] = event.getDistributedMember();
-        memberId[LEFT] = event.getMemberId();
-        notify();
+      public void memberLeft(final MembershipEvent event) {
+        joinAdapterNotification.notify(event);
       }
 
       @Override
-      public synchronized void memberCrashed(MembershipEvent event) {
-        assertFalse(fired[CRASHED]); // assures no dupes
-        assertNull(member[CRASHED]);
-        assertNull(memberId[CRASHED]);
-        fired[CRASHED] = true;
-        member[CRASHED] = event.getDistributedMember();
-        memberId[CRASHED] = event.getMemberId();
-        notify();
+      public void memberCrashed(final MembershipEvent event) {
+        joinAdapterNotification.notify(event);
       }
     };
 
-    DistributedMember memberA = new TestDistributedMember("memberA");
-    ServerLocation serverA = new ServerLocation("serverA", 0);
+    DistributedMember member = new FakeDistributedMember("member");
 
     // first join
-    InternalClientMembership.notifyClientJoined(memberA);
-    synchronized (listener) {
-      if (!fired[JOINED]) {
-        listener.wait(SYNC_ASYNC_EVENT_WAIT_MILLIS);
-      }
-    }
-    assertTrue(fired[JOINED]);
-    assertEquals(memberA, member[JOINED]);
-    assertEquals(memberA.getId(), memberId[JOINED]);
-    fired[JOINED] = false;
-    member[JOINED] = null;
-    memberId[JOINED] = null;
+    InternalClientMembership.notifyClientJoined(member);
+
+    joinAdapterNotification.awaitNotification(30, SECONDS);
+    joinAdapterNotification.validate(member);
+    joinAdapterNotification.reset();
 
     // duplicate join
-    InternalClientMembership.notifyClientJoined(memberA);
-    Wait.pause(BRIEF_PAUSE_MILLIS);
-    assertFalse(fired[JOINED]);
-    assertNull(member[JOINED]);
-    assertNull(memberId[JOINED]);
+    InternalClientMembership.notifyClientJoined(member);
+
+    joinAdapterNotification.awaitWithoutNotification(5, SECONDS);
+    joinAdapterNotification.validateNotNotified();
 
     // first left
-    InternalClientMembership.notifyClientLeft(memberA);
-    synchronized (listener) {
-      if (!fired[LEFT]) {
-        listener.wait(SYNC_ASYNC_EVENT_WAIT_MILLIS);
-      }
-    }
-    assertTrue(fired[LEFT]);
-    assertEquals(memberA, member[LEFT]);
-    assertEquals(memberA.getId(), memberId[LEFT]);
-    fired[LEFT] = false;
-    member[LEFT] = null;
-    memberId[LEFT] = null;
+    InternalClientMembership.notifyClientLeft(member);
+
+    joinAdapterNotification.awaitNotification(30, SECONDS);
+    joinAdapterNotification.validate(member);
+    joinAdapterNotification.reset();
 
     // duplicate left
-    InternalClientMembership.notifyClientLeft(memberA);
-    Wait.pause(BRIEF_PAUSE_MILLIS);
-    assertFalse(fired[LEFT]);
-    assertNull(member[LEFT]);
-    assertNull(memberId[LEFT]);
+    InternalClientMembership.notifyClientLeft(member);
+
+    joinAdapterNotification.awaitWithoutNotification(5, SECONDS);
+    joinAdapterNotification.validateNotNotified();
 
     // rejoin
-    InternalClientMembership.notifyClientJoined(memberA);
-    synchronized (listener) {
-      if (!fired[JOINED]) {
-        listener.wait(SYNC_ASYNC_EVENT_WAIT_MILLIS);
-      }
-    }
-    assertTrue(fired[JOINED]);
-    assertEquals(memberA, member[JOINED]);
-    assertEquals(memberA.getId(), memberId[JOINED]);
+    InternalClientMembership.notifyClientJoined(member);
+
+    joinAdapterNotification.awaitNotification(30, SECONDS);
+    joinAdapterNotification.validate(member);
   }
 
   /**
@@ -274,178 +234,82 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
    */
   @Test
   public void testLonerClientEventsInServer() throws Exception {
-    try {
-      doTestLonerClientEventsInServer();
-    } finally {
-      disconnectAllFromDS();
-    }
-  }
-
-  private void doTestLonerClientEventsInServer() throws Exception {
-    final boolean[] firedSystem = new boolean[3];
-    final DistributedMember[] memberSystem = new DistributedMember[3];
-    final String[] memberIdSystem = new String[3];
-    final boolean[] isClientSystem = new boolean[3];
-
-    final boolean[] firedAdapter = new boolean[3];
-    final DistributedMember[] memberAdapter = new DistributedMember[3];
-    final String[] memberIdAdapter = new String[3];
-    final boolean[] isClientAdapter = new boolean[3];
-
-    final boolean[] firedBridge = new boolean[3];
-    final DistributedMember[] memberBridge = new DistributedMember[3];
-    final String[] memberIdBridge = new String[3];
-    final boolean[] isClientBridge = new boolean[3];
-
     MembershipListener systemListener = new MembershipListener() {
       @Override
-      public synchronized void memberJoined(MembershipEvent event) {
-        assertFalse(firedSystem[JOINED]);
-        assertNull(memberSystem[JOINED]);
-        assertNull(memberIdSystem[JOINED]);
-        firedSystem[JOINED] = true;
-        memberSystem[JOINED] = event.getDistributedMember();
-        memberIdSystem[JOINED] = event.getMemberId();
-        notify();
+      public void memberJoined(final MembershipEvent event) {
+        joinSystemNotification.notify(event);
       }
 
       @Override
-      public synchronized void memberLeft(MembershipEvent event) {
-        assertFalse(firedSystem[LEFT]);
-        assertNull(memberSystem[LEFT]);
-        assertNull(memberIdSystem[LEFT]);
-        firedSystem[LEFT] = true;
-        memberSystem[LEFT] = event.getDistributedMember();
-        memberIdSystem[LEFT] = event.getMemberId();
-        notify();
+      public void memberLeft(final MembershipEvent event) {
+        leftSystemNotification.notify(event);
       }
 
       @Override
-      public synchronized void memberCrashed(MembershipEvent event) {
-        assertFalse(firedSystem[CRASHED]);
-        assertNull(memberSystem[CRASHED]);
-        assertNull(memberIdSystem[CRASHED]);
-        firedSystem[CRASHED] = true;
-        memberSystem[CRASHED] = event.getDistributedMember();
-        memberIdSystem[CRASHED] = event.getMemberId();
-        notify();
+      public void memberCrashed(final MembershipEvent event) {
+        crashedSystemNotification.notify(event);
       }
     };
 
     UniversalMembershipListenerAdapter adapter = new UniversalMembershipListenerAdapter() {
       @Override
-      public synchronized void memberJoined(MembershipEvent event) {
-        assertFalse(firedAdapter[JOINED]);
-        assertNull(memberAdapter[JOINED]);
-        assertNull(memberIdAdapter[JOINED]);
-        assertFalse(isClientAdapter[JOINED]);
-        firedAdapter[JOINED] = true;
-        memberAdapter[JOINED] = event.getDistributedMember();
-        memberIdAdapter[JOINED] = event.getMemberId();
-        isClientAdapter[JOINED] =
-            ((UniversalMembershipListenerAdapter.AdaptedMembershipEvent) event).isClient();
-        notify();
+      public void memberJoined(final MembershipEvent event) {
+        joinAdapterNotification.notify((AdaptedMembershipEvent) event);
       }
 
       @Override
-      public synchronized void memberLeft(MembershipEvent event) {
-        assertFalse(firedAdapter[LEFT]);
-        assertNull(memberAdapter[LEFT]);
-        assertNull(memberIdAdapter[LEFT]);
-        assertFalse(isClientAdapter[LEFT]);
-        firedAdapter[LEFT] = true;
-        memberAdapter[LEFT] = event.getDistributedMember();
-        memberIdAdapter[LEFT] = event.getMemberId();
-        isClientAdapter[LEFT] =
-            ((UniversalMembershipListenerAdapter.AdaptedMembershipEvent) event).isClient();
-        notify();
+      public void memberLeft(final MembershipEvent event) {
+        leftAdapterNotification.notify((AdaptedMembershipEvent) event);
       }
 
       @Override
-      public synchronized void memberCrashed(MembershipEvent event) {
-        assertFalse(firedAdapter[CRASHED]);
-        assertNull(memberAdapter[CRASHED]);
-        assertNull(memberIdAdapter[CRASHED]);
-        assertFalse(isClientAdapter[CRASHED]);
-        firedAdapter[CRASHED] = true;
-        memberAdapter[CRASHED] = event.getDistributedMember();
-        memberIdAdapter[CRASHED] = event.getMemberId();
-        isClientAdapter[CRASHED] =
-            ((UniversalMembershipListenerAdapter.AdaptedMembershipEvent) event).isClient();
-        notify();
+      public synchronized void memberCrashed(final MembershipEvent event) {
+        crashedAdapterNotification.notify((AdaptedMembershipEvent) event);
       }
     };
 
     ClientMembershipListener bridgeListener = new ClientMembershipListener() {
       @Override
-      public synchronized void memberJoined(ClientMembershipEvent event) {
-        assertFalse(firedBridge[JOINED]);
-        assertNull(memberBridge[JOINED]);
-        assertNull(memberIdBridge[JOINED]);
-        assertFalse(isClientBridge[JOINED]);
-        firedBridge[JOINED] = true;
-        memberBridge[JOINED] = event.getMember();
-        memberIdBridge[JOINED] = event.getMemberId();
-        isClientBridge[JOINED] = event.isClient();
-        notify();
+      public void memberJoined(final ClientMembershipEvent event) {
+        joinClientNotification.notify(event);
       }
 
       @Override
-      public synchronized void memberLeft(ClientMembershipEvent event) {
-        assertFalse(firedBridge[LEFT]);
-        assertNull(memberBridge[LEFT]);
-        assertNull(memberIdBridge[LEFT]);
-        assertFalse(isClientBridge[LEFT]);
-        firedBridge[LEFT] = true;
-        memberBridge[LEFT] = event.getMember();
-        memberIdBridge[LEFT] = event.getMemberId();
-        isClientBridge[LEFT] = event.isClient();
-        notify();
+      public void memberLeft(final ClientMembershipEvent event) {
+        leftClientNotification.notify(event);
       }
 
       @Override
-      public synchronized void memberCrashed(ClientMembershipEvent event) {
-        assertFalse(firedBridge[CRASHED]);
-        assertNull(memberBridge[CRASHED]);
-        assertNull(memberIdBridge[CRASHED]);
-        assertFalse(isClientBridge[CRASHED]);
-        firedBridge[CRASHED] = true;
-        memberBridge[CRASHED] = event.getMember();
-        memberIdBridge[CRASHED] = event.getMemberId();
-        isClientBridge[CRASHED] = event.isClient();
-        notify();
+      public void memberCrashed(final ClientMembershipEvent event) {
+        crashedClientNotification.notify(event);
       }
     };
 
-    final Host host = Host.getHost(0);
-    final VM vm0 = host.getVM(0);
-    final String name = this.getUniqueName();
-    final int[] ports = new int[1];
+    Host host = Host.getHost(0);
+    VM vm0 = host.getVM(0);
+    String name = this.getUniqueName();
+    int[] ports = new int[1];
 
-    // create BridgeServer in controller vm...
-    System.out.println("[testLonerClientEventsInServer] Create BridgeServer");
+    // create CacheServer in controller vm...
     getSystem();
+
     AttributesFactory factory = new AttributesFactory();
     factory.setScope(Scope.LOCAL);
     Region region = createRegion(name, factory.create());
-    assertNotNull(region);
-    assertNotNull(getRootRegion().getSubregion(name));
+
+    assertThat(region).isNotNull();
+    assertThat(getRootRegion().getSubregion(name)).isNotNull();
 
     ports[0] = startBridgeServer(0);
-    assertTrue(ports[0] != 0);
-    final DistributedMember serverMember = getMemberId();
-    final String serverMemberId = serverMember.getId();
-    final Properties serverProperties = getSystem().getProperties();
+    assertThat(ports[0] != 0).isTrue();
 
-    System.out.println("[testLonerClientEventsInServer] ports[0]=" + ports[0]);
-    System.out.println("[testLonerClientEventsInServer] serverMemberId=" + serverMemberId);
-    System.out.println("[testLonerClientEventsInServer] serverMember=" + serverMember);
+    DistributedMember serverMember = getMemberId();
+    String serverMemberId = serverMember.getId();
 
     // register the bridge listener
     ClientMembership.registerClientMembershipListener(bridgeListener);
 
-    GemFireCacheImpl cache = GemFireCacheImpl.getExisting();
-    assertNotNull(cache);
+    InternalCache cache = getInternalCache();
     ManagementService service = ManagementService.getExistingManagementService(cache);
     // register the system listener
     service.addMembershipListener(systemListener);
@@ -453,11 +317,9 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
     // register the universal adapter. Not required as this test is only for BridgeClient test
     adapter.registerMembershipListener(service);
 
-
     SerializableCallable createBridgeClient = new SerializableCallable("Create bridge client") {
       @Override
       public Object call() {
-        System.out.println("[testLonerClientEventsInServer] create bridge client");
         Properties config = new Properties();
         config.setProperty(MCAST_PORT, "0");
         config.setProperty(LOCATORS, "");
@@ -465,281 +327,97 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
         getSystem(config);
         AttributesFactory factory = new AttributesFactory();
         factory.setScope(Scope.LOCAL);
-        ClientServerTestCase.configureConnectionPool(factory, NetworkUtils.getServerHostName(host),
-            ports, false, -1, -1, null);
+        ClientServerTestCase.configureConnectionPool(factory, getServerHostName(host), ports, false,
+            -1, -1, null);
         createRegion(name, factory.create());
-        assertNotNull(getRootRegion().getSubregion(name));
+        assertThat(getRootRegion().getSubregion(name)).isNotNull();
         return getMemberId();
       }
     };
 
-
     // create bridge client in vm0...
     DistributedMember clientMember = (DistributedMember) vm0.invoke(createBridgeClient);
     String clientMemberId = clientMember.getId();
 
     // should trigger both adapter and bridge listener but not system listener
-    synchronized (adapter) {
-      if (!firedAdapter[JOINED]) {
-        adapter.wait(ASYNC_EVENT_WAIT_MILLIS);
-      }
-    }
-    synchronized (bridgeListener) {
-      if (!firedBridge[JOINED]) {
-        bridgeListener.wait(ASYNC_EVENT_WAIT_MILLIS);
-      }
-    }
+    joinAdapterNotification.awaitNotification(30, SECONDS);
+    joinClientNotification.awaitNotification(30, SECONDS);
 
-    System.out.println("[testLonerClientEventsInServer] assert server detected client join");
-    assertTrue(firedBridge[JOINED]);
-    assertEquals(clientMember, memberBridge[JOINED]);
-    // as of 6.1 the id can change when a bridge is created or a connection pool is created
-    // assertIndexDetailsEquals(clientMemberId, memberIdBridge[JOINED]);
-    assertTrue(isClientBridge[JOINED]);
-    assertFalse(firedBridge[LEFT]);
-    assertNull(memberBridge[LEFT]);
-    assertNull(memberIdBridge[LEFT]);
-    assertFalse(isClientBridge[LEFT]);
-    assertFalse(firedBridge[CRASHED]);
-    assertNull(memberBridge[CRASHED]);
-    assertNull(memberIdBridge[CRASHED]);
-    assertFalse(isClientBridge[CRASHED]);
-    resetArraysForTesting(firedBridge, memberBridge, memberIdBridge, isClientBridge);
-
-    assertFalse(firedSystem[JOINED]);
-    assertNull(memberSystem[JOINED]);
-    assertNull(memberIdSystem[JOINED]);
-    assertFalse(isClientSystem[JOINED]);
-    assertFalse(firedSystem[LEFT]);
-    assertNull(memberSystem[LEFT]);
-    assertNull(memberIdSystem[LEFT]);
-    assertFalse(isClientSystem[LEFT]);
-    assertFalse(firedSystem[CRASHED]);
-    assertNull(memberSystem[CRASHED]);
-    assertNull(memberIdSystem[CRASHED]);
-    assertFalse(isClientSystem[CRASHED]);
-    resetArraysForTesting(firedSystem, memberSystem, memberIdSystem, isClientSystem);
+    joinSystemNotification.validateNotNotified();
+    joinAdapterNotification.validate(clientMember);
+    joinClientNotification.validate(clientMember);
 
-    assertTrue(firedAdapter[JOINED]);
-    assertEquals(clientMember, memberAdapter[JOINED]);
-    assertFalse(SocketCreator.resolve_dns);
-    assertEquals(clientMemberId, memberIdAdapter[JOINED]);
-    assertTrue(isClientAdapter[JOINED]);
-    assertFalse(firedAdapter[LEFT]);
-    assertNull(memberAdapter[LEFT]);
-    assertNull(memberIdAdapter[LEFT]);
-    assertFalse(isClientAdapter[LEFT]);
-    assertFalse(firedAdapter[CRASHED]);
-    assertNull(memberAdapter[CRASHED]);
-    assertNull(memberIdAdapter[CRASHED]);
-    assertFalse(isClientAdapter[CRASHED]);
-    resetArraysForTesting(firedAdapter, memberAdapter, memberIdAdapter, isClientAdapter);
+    joinSystemNotification.reset();
+    joinAdapterNotification.reset();
+    joinClientNotification.reset();
 
     vm0.invoke(new SerializableRunnable("Wait for client to fully connect") {
+      @Override
       public void run() {
-        System.out.println("[testLonerClientEventsInServer] wait for client to fully connect");
-        final String pl = getRootRegion().getSubregion(name).getAttributes().getPoolName();
-        PoolImpl pi = (PoolImpl) PoolManager.find(pl);
-        waitForClientToFullyConnect(pi);
+        String poolName = getRootRegion().getSubregion(name).getAttributes().getPoolName();
+        PoolImpl pool = (PoolImpl) PoolManager.find(poolName);
+        waitForClientToFullyConnect(pool);
       }
     });
 
     vm0.invoke(new SerializableRunnable("Close bridge client region") {
+      @Override
       public void run() {
-        System.out.println("[testLonerClientEventsInServer] close bridge client region");
         getRootRegion().getSubregion(name).close();
         PoolManager.close();
       }
     });
 
-    synchronized (adapter) {
-      if (!firedAdapter[LEFT]) {
-        adapter.wait(ASYNC_EVENT_WAIT_MILLIS);
-      }
-    }
-    synchronized (bridgeListener) {
-      if (!firedBridge[LEFT]) {
-        bridgeListener.wait(ASYNC_EVENT_WAIT_MILLIS);
-      }
-    }
+    leftAdapterNotification.awaitNotification(30, SECONDS);
+    leftClientNotification.awaitNotification(30, SECONDS);
 
-    System.out.println("[testLonerClientEventsInServer] assert server detected client left");
-
-    assertFalse(firedBridge[JOINED]);
-    assertNull(memberIdBridge[JOINED]);
-    assertNull(memberBridge[JOINED]);
-    assertFalse(isClientBridge[JOINED]);
-    assertTrue(firedBridge[LEFT]);
-    assertEquals(clientMember, memberBridge[LEFT]);
-    assertEquals(clientMemberId, memberIdBridge[LEFT]);
-    assertTrue(isClientBridge[LEFT]);
-    assertFalse(firedBridge[CRASHED]);
-    assertNull(memberBridge[CRASHED]);
-    assertNull(memberIdBridge[CRASHED]);
-    assertFalse(isClientBridge[CRASHED]);
-    resetArraysForTesting(firedBridge, memberBridge, memberIdBridge, isClientBridge);
+    leftSystemNotification.validateNotNotified();
+    leftAdapterNotification.validate(clientMember);
+    leftClientNotification.validate(clientMember);
 
-    assertFalse(firedSystem[JOINED]);
-    assertNull(memberSystem[JOINED]);
-    assertNull(memberIdSystem[JOINED]);
-    assertFalse(isClientSystem[JOINED]);
-    assertFalse(firedSystem[LEFT]);
-    assertNull(memberSystem[LEFT]);
-    assertNull(memberIdSystem[LEFT]);
-    assertFalse(isClientSystem[LEFT]);
-    assertFalse(firedSystem[CRASHED]);
-    assertNull(memberSystem[CRASHED]);
-    assertNull(memberIdSystem[CRASHED]);
-    assertFalse(isClientSystem[CRASHED]);
-    resetArraysForTesting(firedSystem, memberSystem, memberIdSystem, isClientSystem);
-
-    assertFalse(firedAdapter[JOINED]);
-    assertNull(memberAdapter[JOINED]);
-    assertNull(memberIdAdapter[JOINED]);
-    assertFalse(isClientAdapter[JOINED]);
-    assertTrue(firedAdapter[LEFT]);
-    assertEquals(clientMember, memberAdapter[LEFT]);
-    assertEquals(clientMemberId, memberIdAdapter[LEFT]);
-    assertTrue(isClientAdapter[LEFT]);
-    assertFalse(firedAdapter[CRASHED]);
-    assertNull(memberAdapter[CRASHED]);
-    assertNull(memberIdAdapter[CRASHED]);
-    assertFalse(isClientAdapter[CRASHED]);
-    resetArraysForTesting(firedAdapter, memberAdapter, memberIdAdapter, isClientAdapter);
+    leftSystemNotification.reset();
+    leftAdapterNotification.reset();
+    leftClientNotification.reset();
 
     // reconnect bridge client to test for crashed event
     clientMember = (DistributedMember) vm0.invoke(createBridgeClient);
-    clientMemberId = clientMember.getId();
 
-    synchronized (adapter) {
-      if (!firedAdapter[JOINED]) {
-        adapter.wait(ASYNC_EVENT_WAIT_MILLIS);
-      }
-    }
-    synchronized (bridgeListener) {
-      if (!firedBridge[JOINED]) {
-        bridgeListener.wait(ASYNC_EVENT_WAIT_MILLIS);
-      }
-    }
+    joinAdapterNotification.awaitNotification(30, SECONDS);
+    joinClientNotification.awaitNotification(30, SECONDS);
 
-    System.out.println("[testLonerClientEventsInServer] assert server detected client re-join");
-    assertTrue(firedBridge[JOINED]);
-    assertEquals(clientMember, memberBridge[JOINED]);
-    assertEquals(clientMemberId, memberIdBridge[JOINED]);
-    assertTrue(isClientBridge[JOINED]);
-    assertFalse(firedBridge[LEFT]);
-    assertNull(memberBridge[LEFT]);
-    assertNull(memberIdBridge[LEFT]);
-    assertFalse(isClientBridge[LEFT]);
-    assertFalse(firedBridge[CRASHED]);
-    assertNull(memberBridge[CRASHED]);
-    assertNull(memberIdBridge[CRASHED]);
-    assertFalse(isClientBridge[CRASHED]);
-    resetArraysForTesting(firedBridge, memberBridge, memberIdBridge, isClientBridge);
-
-    assertFalse(firedSystem[JOINED]);
-    assertNull(memberSystem[JOINED]);
-    assertNull(memberIdSystem[JOINED]);
-    assertFalse(isClientSystem[JOINED]);
-    assertFalse(firedSystem[LEFT]);
-    assertNull(memberSystem[LEFT]);
-    assertNull(memberIdSystem[LEFT]);
-    assertFalse(isClientSystem[LEFT]);
-    assertFalse(firedSystem[CRASHED]);
-    assertNull(memberSystem[CRASHED]);
-    assertNull(memberIdSystem[CRASHED]);
-    assertFalse(isClientSystem[CRASHED]);
-    resetArraysForTesting(firedSystem, memberSystem, memberIdSystem, isClientSystem);
+    joinSystemNotification.validateNotNotified();
+    joinAdapterNotification.validate(clientMember);
+    joinClientNotification.validate(clientMember);
 
-    assertTrue(firedAdapter[JOINED]);
-    assertEquals(clientMember, memberAdapter[JOINED]);
-    assertEquals(clientMemberId, memberIdAdapter[JOINED]);
-    assertTrue(isClientAdapter[JOINED]);
-    assertFalse(firedAdapter[LEFT]);
-    assertNull(memberAdapter[LEFT]);
-    assertNull(memberIdAdapter[LEFT]);
-    assertFalse(isClientAdapter[LEFT]);
-    assertFalse(firedAdapter[CRASHED]);
-    assertNull(memberAdapter[CRASHED]);
-    assertNull(memberIdAdapter[CRASHED]);
-    assertFalse(isClientAdapter[CRASHED]);
-    resetArraysForTesting(firedAdapter, memberAdapter, memberIdAdapter, isClientAdapter);
+    joinSystemNotification.reset();
+    joinAdapterNotification.reset();
+    joinClientNotification.reset();
 
     vm0.invoke(new SerializableRunnable("Wait for client to fully connect") {
+      @Override
       public void run() {
-        System.out.println("[testLonerClientEventsInServer] wait for client to fully connect");
-        final String pl = getRootRegion().getSubregion(name).getAttributes().getPoolName();
-        PoolImpl pi = (PoolImpl) PoolManager.find(pl);
-        waitForClientToFullyConnect(pi);
+        String poolName = getRootRegion().getSubregion(name).getAttributes().getPoolName();
+        PoolImpl pool = (PoolImpl) PoolManager.find(poolName);
+        waitForClientToFullyConnect(pool);
       }
     });
 
     ServerConnection.setForceClientCrashEvent(true);
-    try {
-      vm0.invoke(new SerializableRunnable("Stop bridge client") {
-        public void run() {
-          System.out.println("[testLonerClientEventsInServer] Stop bridge client");
-          getRootRegion().getSubregion(name).close();
-          PoolManager.close();
-        }
-      });
 
-      synchronized (adapter) {
-        if (!firedAdapter[CRASHED]) {
-          adapter.wait(ASYNC_EVENT_WAIT_MILLIS);
-        }
-      }
-      synchronized (bridgeListener) {
-        if (!firedBridge[CRASHED]) {
-          bridgeListener.wait(ASYNC_EVENT_WAIT_MILLIS);
-        }
+    vm0.invoke(new SerializableRunnable("Stop bridge client") {
+      @Override
+      public void run() {
+        getRootRegion().getSubregion(name).close();
+        PoolManager.close();
       }
+    });
 
-      System.out.println("[testLonerClientEventsInServer] assert server detected client crashed");
-      assertFalse(firedBridge[JOINED]);
-      assertNull(memberIdBridge[JOINED]);
-      assertNull(memberBridge[JOINED]);
-      assertFalse(isClientBridge[JOINED]);
-      assertFalse(firedBridge[LEFT]);
-      assertNull(memberIdBridge[LEFT]);
-      assertNull(memberBridge[LEFT]);
-      assertFalse(isClientBridge[LEFT]);
-      assertTrue(firedBridge[CRASHED]);
-      assertEquals(clientMember, memberBridge[CRASHED]);
-      assertEquals(clientMemberId, memberIdBridge[CRASHED]);
-      assertTrue(isClientBridge[CRASHED]);
-      // resetArraysForTesting(firedBridge, memberIdBridge, isClientBridge);
-
-      assertFalse(firedSystem[JOINED]);
-      assertNull(memberSystem[JOINED]);
-      assertNull(memberIdSystem[JOINED]);
-      assertFalse(isClientSystem[JOINED]);
-      assertFalse(firedSystem[LEFT]);
-      assertNull(memberSystem[LEFT]);
-      assertNull(memberIdSystem[LEFT]);
-      assertFalse(isClientSystem[LEFT]);
-      assertFalse(firedSystem[CRASHED]);
-      assertNull(memberSystem[CRASHED]);
-      assertNull(memberIdSystem[CRASHED]);
-      assertFalse(isClientSystem[CRASHED]);
-      // resetArraysForTesting(firedSystem, memberIdSystem, isClientSystem);
-
-      assertFalse(firedAdapter[JOINED]);
-      assertNull(memberAdapter[JOINED]);
-      assertNull(memberIdAdapter[JOINED]);
-      assertFalse(isClientAdapter[JOINED]);
-      assertFalse(firedAdapter[LEFT]);
-      assertNull(memberAdapter[LEFT]);
-      assertNull(memberIdAdapter[LEFT]);
-      assertFalse(isClientAdapter[LEFT]);
-      assertTrue(firedAdapter[CRASHED]);
-      assertEquals(clientMember, memberAdapter[CRASHED]);
-      assertEquals(clientMemberId, memberIdAdapter[CRASHED]);
-      assertTrue(isClientAdapter[CRASHED]);
-      // resetArraysForTesting(firedAdapter, memberIdAdapter, isClientAdapter);
-    } finally {
-      ServerConnection.setForceClientCrashEvent(false);
-    }
+    crashedAdapterNotification.awaitNotification(30, SECONDS);
+    crashedClientNotification.awaitNotification(30, SECONDS);
+
+    crashedSystemNotification.validateNotNotified();
+    crashedAdapterNotification.validate(clientMember);
+    crashedClientNotification.validate(clientMember);
   }
 
   /**
@@ -747,154 +425,142 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
    */
   @Test
   public void testSystemClientEventsInServer() throws Exception {
-    try {
-      doTestSystemClientEventsInServer();
-    } finally {
-      disconnectAllFromDS();
-    }
-  }
+    boolean[] firedSystem = new boolean[3];
+    DistributedMember[] memberSystem = new DistributedMember[3];
+    String[] memberIdSystem = new String[3];
+    boolean[] isClientSystem = new boolean[3];
 
-  private void doTestSystemClientEventsInServer() throws Exception {
-    final boolean[] firedSystem = new boolean[3];
-    final DistributedMember[] memberSystem = new DistributedMember[3];
-    final String[] memberIdSystem = new String[3];
-    final boolean[] isClientSystem = new boolean[3];
+    boolean[] firedAdapter = new boolean[3];
+    DistributedMember[] memberAdapter = new DistributedMember[3];
+    String[] memberIdAdapter = new String[3];
+    boolean[] isClientAdapter = new boolean[3];
 
-    final boolean[] firedAdapter = new boolean[3];
-    final DistributedMember[] memberAdapter = new DistributedMember[3];
-    final String[] memberIdAdapter = new String[3];
-    final boolean[] isClientAdapter = new boolean[3];
+    boolean[] firedBridge = new boolean[3];
+    DistributedMember[] memberBridge = new DistributedMember[3];
+    String[] memberIdBridge = new String[3];
+    boolean[] isClientBridge = new boolean[3];
 
-    final boolean[] firedBridge = new boolean[3];
-    final DistributedMember[] memberBridge = new DistributedMember[3];
-    final String[] memberIdBridge = new String[3];
-    final boolean[] isClientBridge = new boolean[3];
-
-    final boolean[] firedSystemDuplicate = new boolean[3];
-    final boolean[] firedAdapterDuplicate = new boolean[3];
-    final boolean[] firedBridgeDuplicate = new boolean[3];
+    boolean[] firedSystemDuplicate = new boolean[3];
+    boolean[] firedAdapterDuplicate = new boolean[3];
+    boolean[] firedBridgeDuplicate = new boolean[3];
 
     MembershipListener systemListener = new MembershipListener() {
+      @Override
       public synchronized void memberJoined(MembershipEvent event) {
         firedSystemDuplicate[JOINED] = firedSystem[JOINED];
         firedSystem[JOINED] = true;
         memberSystem[JOINED] = event.getDistributedMember();
         memberIdSystem[JOINED] = event.getMemberId();
-        notify();
+        notifyAll();
       }
 
+      @Override
       public synchronized void memberLeft(MembershipEvent event) {
         firedSystemDuplicate[LEFT] = firedSystem[LEFT];
         firedSystem[LEFT] = true;
         memberSystem[LEFT] = event.getDistributedMember();
         memberIdSystem[LEFT] = event.getMemberId();
-        notify();
+        notifyAll();
       }
 
+      @Override
       public synchronized void memberCrashed(MembershipEvent event) {
         firedSystemDuplicate[CRASHED] = firedSystem[CRASHED];
         firedSystem[CRASHED] = true;
         memberSystem[CRASHED] = event.getDistributedMember();
         memberIdSystem[CRASHED] = event.getMemberId();
-        notify();
+        notifyAll();
       }
     };
 
     UniversalMembershipListenerAdapter adapter = new UniversalMembershipListenerAdapter() {
       @Override
       public synchronized void memberJoined(MembershipEvent event) {
-        getLogWriter()
-            .info("[doTestSystemClientEventsInServer] memberJoined >" + event.getMemberId() + "<");
         firedAdapterDuplicate[JOINED] = firedAdapter[JOINED];
         firedAdapter[JOINED] = true;
         memberAdapter[JOINED] = event.getDistributedMember();
         memberIdAdapter[JOINED] = event.getMemberId();
-        if (event instanceof UniversalMembershipListenerAdapter.AdaptedMembershipEvent) {
-          isClientAdapter[JOINED] =
-              ((UniversalMembershipListenerAdapter.AdaptedMembershipEvent) event).isClient();
+        if (event instanceof AdaptedMembershipEvent) {
+          isClientAdapter[JOINED] = ((AdaptedMembershipEvent) event).isClient();
         }
-        notify();
+        notifyAll();
       }
 
       @Override
       public synchronized void memberLeft(MembershipEvent event) {
-        getLogWriter()
-            .info("[doTestSystemClientEventsInServer] memberLeft >" + event.getMemberId() + "<");
         firedAdapterDuplicate[LEFT] = firedAdapter[LEFT];
         firedAdapter[LEFT] = true;
         memberAdapter[LEFT] = event.getDistributedMember();
         memberIdAdapter[LEFT] = event.getMemberId();
-        if (event instanceof UniversalMembershipListenerAdapter.AdaptedMembershipEvent) {
-          isClientAdapter[LEFT] =
-              ((UniversalMembershipListenerAdapter.AdaptedMembershipEvent) event).isClient();
+        if (event instanceof AdaptedMembershipEvent) {
+          isClientAdapter[LEFT] = ((AdaptedMembershipEvent) event).isClient();
         }
-        notify();
+        notifyAll();
       }
 
       @Override
       public synchronized void memberCrashed(MembershipEvent event) {
-        getLogWriter()
-            .info("[doTestSystemClientEventsInServer] memberCrashed >" + event.getMemberId() + "<");
         firedAdapterDuplicate[CRASHED] = firedAdapter[CRASHED];
         firedAdapter[CRASHED] = true;
         memberAdapter[CRASHED] = event.getDistributedMember();
         memberIdAdapter[CRASHED] = event.getMemberId();
-        if (event instanceof UniversalMembershipListenerAdapter.AdaptedMembershipEvent) {
-          isClientAdapter[CRASHED] =
-              ((UniversalMembershipListenerAdapter.AdaptedMembershipEvent) event).isClient();
+        if (event instanceof AdaptedMembershipEvent) {
+          isClientAdapter[CRASHED] = ((AdaptedMembershipEvent) event).isClient();
         }
-        notify();
+        notifyAll();
       }
     };
 
     ClientMembershipListener bridgeListener = new ClientMembershipListener() {
+      @Override
       public synchronized void memberJoined(ClientMembershipEvent event) {
         firedBridgeDuplicate[JOINED] = firedBridge[JOINED];
         firedBridge[JOINED] = true;
         memberBridge[JOINED] = event.getMember();
         memberIdBridge[JOINED] = event.getMemberId();
         isClientBridge[JOINED] = event.isClient();
-        notify();
+        notifyAll();
       }
 
+      @Override
       public synchronized void memberLeft(ClientMembershipEvent event) {
         firedBridgeDuplicate[LEFT] = firedBridge[LEFT];
         firedBridge[LEFT] = true;
         memberBridge[LEFT] = event.getMember();
         memberIdBridge[LEFT] = event.getMemberId();
         isClientBridge[LEFT] = event.isClient();
-        notify();
+        notifyAll();
       }
 
+      @Override
       public synchronized void memberCrashed(ClientMembershipEvent event) {
         firedBridgeDuplicate[CRASHED] = firedBridge[CRASHED];
         firedBridge[CRASHED] = true;
         memberBridge[CRASHED] = event.getMember();
         memberIdBridge[CRASHED] = event.getMemberId();
         isClientBridge[CRASHED] = event.isClient();
-        notify();
+        notifyAll();
       }
     };
 
-    final Host host = Host.getHost(0);
-    final VM vm0 = host.getVM(0);
-    final String name = this.getUniqueName();
-    final int[] ports = new int[1];
+    Host host = Host.getHost(0);
+    VM vm0 = host.getVM(0);
+    String name = this.getUniqueName();
+    int[] ports = new int[1];
 
-    // create BridgeServer in controller vm...
-    System.out.println("[doTestSystemClientEventsInServer] Create BridgeServer");
+    // create CacheServer in controller vm...
     getSystem();
     AttributesFactory factory = new AttributesFactory();
     factory.setScope(Scope.LOCAL);
     Region region = createRegion(name, factory.create());
-    assertNotNull(region);
-    assertNotNull(getRootRegion().getSubregion(name));
+    assertThat(region).isNotNull();
+    assertThat(getRootRegion().getSubregion(name)).isNotNull();
 
     ports[0] = startBridgeServer(0);
-    assertTrue(ports[0] != 0);
-    final DistributedMember serverMember = getMemberId();
-    final String serverMemberId = serverMember.getId();
-    final Properties serverProperties = getSystem().getProperties();
+    assertThat(ports[0] != 0).isTrue();
+    DistributedMember serverMember = getMemberId();
+    String serverMemberId = serverMember.getId();
+    Properties serverProperties = getSystem().getProperties();
 
     // Below removed properties are already got copied as cluster SSL properties
     serverProperties.remove(CLUSTER_SSL_ENABLED);
@@ -902,15 +568,10 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
     serverProperties.remove(CLUSTER_SSL_PROTOCOLS);
     serverProperties.remove(CLUSTER_SSL_REQUIRE_AUTHENTICATION);
 
-    System.out.println("[doTestSystemClientEventsInServer] ports[0]=" + ports[0]);
-    System.out.println("[doTestSystemClientEventsInServer] serverMemberId=" + serverMemberId);
-    System.out.println("[doTestSystemClientEventsInServer] serverMember=" + serverMember);
-
     // register the bridge listener
     ClientMembership.registerClientMembershipListener(bridgeListener);
 
-    GemFireCacheImpl cache = GemFireCacheImpl.getExisting();
-    assertNotNull(cache);
+    InternalCache cache = getInternalCache();
     ManagementService service = ManagementService.getExistingManagementService(cache);
     // register the system listener
     service.addMembershipListener(systemListener);
@@ -918,20 +579,18 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
     // register the universal adapter.
     adapter.registerMembershipListener(service);
 
-
     SerializableCallable createBridgeClient = new SerializableCallable("Create bridge client") {
       @Override
       public Object call() {
         System.setProperty(RESTRICT_MEMBERSHIP_PORT_RANGE, "false");
-        System.out.println("[doTestSystemClientEventsInServer] create system bridge client");
-        assertTrue(getSystem(serverProperties).isConnected());
-        assertFalse(getCache().isClosed());
+        assertThat(getSystem(serverProperties).isConnected()).isTrue();
+        assertThat(getCache().isClosed()).isFalse();
         AttributesFactory factory = new AttributesFactory();
         factory.setScope(Scope.LOCAL);
-        ClientServerTestCase.configureConnectionPool(factory, NetworkUtils.getServerHostName(host),
-            ports, false, -1, -1, null);
+        ClientServerTestCase.configureConnectionPool(factory, getServerHostName(host), ports, false,
+            -1, -1, null);
         createRegion(name, factory.create());
-        assertNotNull(getRootRegion().getSubregion(name));
+        assertThat(getRootRegion().getSubregion(name)).isNotNull();
         return getMemberId();
       }
     };
@@ -957,57 +616,56 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
       }
     }
 
-    System.out.println("[doTestSystemClientEventsInServer] assert server detected client join");
     assertArrayFalse(firedSystemDuplicate);
     assertArrayFalse(firedAdapterDuplicate);
     assertArrayFalse(firedBridgeDuplicate);
 
-    assertTrue(firedBridge[JOINED]);
-    assertEquals(clientMember, memberBridge[JOINED]);
-    assertEquals(clientMemberId, memberIdBridge[JOINED]);
-    assertTrue(isClientBridge[JOINED]);
-    assertFalse(firedBridge[LEFT]);
-    assertNull(memberBridge[LEFT]);
-    assertNull(memberIdBridge[LEFT]);
-    assertFalse(isClientBridge[LEFT]);
-    assertFalse(firedBridge[CRASHED]);
-    assertNull(memberBridge[CRASHED]);
-    assertNull(memberIdBridge[CRASHED]);
-    assertFalse(isClientBridge[CRASHED]);
+    assertThat(firedBridge[JOINED]).isTrue();
+    assertThat(memberBridge[JOINED]).isEqualTo(clientMember);
+    assertThat(memberIdBridge[JOINED]).isEqualTo(clientMemberId);
+    assertThat(isClientBridge[JOINED]).isTrue();
+    assertThat(firedBridge[LEFT]).isFalse();
+    assertThat(memberBridge[LEFT]).isNull();
+    assertThat(memberIdBridge[LEFT]).isNull();
+    assertThat(isClientBridge[LEFT]).isFalse();
+    assertThat(firedBridge[CRASHED]).isFalse();
+    assertThat(memberBridge[CRASHED]).isNull();
+    assertThat(memberIdBridge[CRASHED]).isNull();
+    assertThat(isClientBridge[CRASHED]).isFalse();
     resetArraysForTesting(firedBridge, memberBridge, memberIdBridge, isClientBridge);
 
-    assertTrue(firedSystem[JOINED]);
-    assertEquals(clientMember, memberSystem[JOINED]);
-    assertEquals(clientMemberId, memberIdSystem[JOINED]);
-    assertFalse(isClientSystem[JOINED]);
-    assertFalse(firedSystem[LEFT]);
-    assertNull(memberSystem[LEFT]);
-    assertNull(memberIdSystem[LEFT]);
-    assertFalse(isClientSystem[LEFT]);
-    assertFalse(firedSystem[CRASHED]);
-    assertNull(memberSystem[CRASHED]);
-    assertNull(memberIdSystem[CRASHED]);
-    assertFalse(isClientSystem[CRASHED]);
+    assertThat(firedSystem[JOINED]).isTrue();
+    assertThat(memberSystem[JOINED]).isEqualTo(clientMember);
+    assertThat(memberIdSystem[JOINED]).isEqualTo(clientMemberId);
+    assertThat(isClientSystem[JOINED]).isFalse();
+    assertThat(firedSystem[LEFT]).isFalse();
+    assertThat(memberSystem[LEFT]).isNull();
+    assertThat(memberIdSystem[LEFT]).isNull();
+    assertThat(isClientSystem[LEFT]).isFalse();
+    assertThat(firedSystem[CRASHED]).isFalse();
+    assertThat(memberSystem[CRASHED]).isNull();
+    assertThat(memberIdSystem[CRASHED]).isNull();
+    assertThat(isClientSystem[CRASHED]).isFalse();
     resetArraysForTesting(firedSystem, memberSystem, memberIdSystem, isClientSystem);
 
-    assertTrue(firedAdapter[JOINED]);
-    assertEquals(clientMember, memberAdapter[JOINED]);
-    assertEquals(clientMemberId, memberIdAdapter[JOINED]);
-    // assertTrue(isClientAdapter[JOINED]);
-    assertFalse(firedAdapter[LEFT]);
-    assertNull(memberAdapter[LEFT]);
-    assertNull(memberIdAdapter[LEFT]);
-    assertFalse(isClientAdapter[LEFT]);
-    assertFalse(firedAdapter[CRASHED]);
-    assertNull(memberAdapter[CRASHED]);
-    assertNull(memberIdAdapter[CRASHED]);
-    assertFalse(isClientAdapter[CRASHED]);
+    assertThat(firedAdapter[JOINED]).isTrue();
+    assertThat(memberAdapter[JOINED]).isEqualTo(clientMember);
+    assertThat(memberIdAdapter[JOINED]).isEqualTo(clientMemberId);
+    // assertThat(isClientAdapter[JOINED]).isTrue();
+    assertThat(firedAdapter[LEFT]).isFalse();
+    assertThat(memberAdapter[LEFT]).isNull();
+    assertThat(memberIdAdapter[LEFT]).isNull();
+    assertThat(isClientAdapter[LEFT]).isFalse();
+    assertThat(firedAdapter[CRASHED]).isFalse();
+    assertThat(memberAdapter[CRASHED]).isNull();
+    assertThat(memberIdAdapter[CRASHED]).isNull();
+    assertThat(isClientAdapter[CRASHED]).isFalse();
     resetArraysForTesting(firedAdapter, memberAdapter, memberIdAdapter, isClientAdapter);
 
     vm0.invoke(new SerializableRunnable("Wait for client to fully connect") {
+      @Override
       public void run() {
-        System.out.println("[doTestSystemClientEventsInServer] wait for client to fully connect");
-        final String pl = getRootRegion().getSubregion(name).getAttributes().getPoolName();
+        String pl = getRootRegion().getSubregion(name).getAttributes().getPoolName();
         PoolImpl pi = (PoolImpl) PoolManager.find(pl);
         waitForClientToFullyConnect(pi);
       }
@@ -1015,8 +673,8 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
 
     // close bridge client region
     vm0.invoke(new SerializableRunnable("Close bridge client region") {
+      @Override
       public void run() {
-        System.out.println("[doTestSystemClientEventsInServer] close bridge client region");
         getRootRegion().getSubregion(name).close();
         PoolManager.close();
       }
@@ -1033,51 +691,50 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
       }
     }
 
-    System.out.println("[doTestSystemClientEventsInServer] assert server detected client left");
     assertArrayFalse(firedSystemDuplicate);
     assertArrayFalse(firedAdapterDuplicate);
     assertArrayFalse(firedBridgeDuplicate);
 
-    assertFalse(firedBridge[JOINED]);
-    assertNull(memberIdBridge[JOINED]);
-    assertNull(memberBridge[JOINED]);
-    assertFalse(isClientBridge[JOINED]);
-    assertTrue(firedBridge[LEFT]);
-    assertEquals(clientMember, memberBridge[LEFT]);
-    assertEquals(clientMemberId, memberIdBridge[LEFT]);
-    assertTrue(isClientBridge[LEFT]);
-    assertFalse(firedBridge[CRASHED]);
-    assertNull(memberBridge[CRASHED]);
-    assertNull(memberIdBridge[CRASHED]);
-    assertFalse(isClientBridge[CRASHED]);
+    assertThat(firedBridge[JOINED]).isFalse();
+    assertThat(memberIdBridge[JOINED]).isNull();
+    assertThat(memberBridge[JOINED]).isNull();
+    assertThat(isClientBridge[JOINED]).isFalse();
+    assertThat(firedBridge[LEFT]).isTrue();
+    assertThat(memberBridge[LEFT]).isEqualTo(clientMember);
+    assertThat(memberIdBridge[LEFT]).isEqualTo(clientMemberId);
+    assertThat(isClientBridge[LEFT]).isTrue();
+    assertThat(firedBridge[CRASHED]).isFalse();
+    assertThat(memberBridge[CRASHED]).isNull();
+    assertThat(memberIdBridge[CRASHED]).isNull();
+    assertThat(isClientBridge[CRASHED]).isFalse();
     resetArraysForTesting(firedBridge, memberBridge, memberIdBridge, isClientBridge);
 
-    assertFalse(firedSystem[JOINED]);
-    assertNull(memberSystem[JOINED]);
-    assertNull(memberIdSystem[JOINED]);
-    assertFalse(isClientSystem[JOINED]);
-    assertFalse(firedSystem[LEFT]);
-    assertNull(memberSystem[LEFT]);
-    assertNull(memberIdSystem[LEFT]);
-    assertFalse(isClientSystem[LEFT]);
-    assertFalse(firedSystem[CRASHED]);
-    assertNull(memberSystem[CRASHED]);
-    assertNull(memberIdSystem[CRASHED]);
-    assertFalse(isClientSystem[CRASHED]);
+    assertThat(firedSystem[JOINED]).isFalse();
+    assertThat(memberSystem[JOINED]).isNull();
+    assertThat(memberIdSystem[JOINED]).isNull();
+    assertThat(isClientSystem[JOINED]).isFalse();
+    assertThat(firedSystem[LEFT]).isFalse();
+    assertThat(memberSystem[LEFT]).isNull();
+    assertThat(memberIdSystem[LEFT]).isNull();
+    assertThat(isClientSystem[LEFT]).isFalse();
+    assertThat(firedSystem[CRASHED]).isFalse();
+    assertThat(memberSystem[CRASHED]).isNull();
+    assertThat(memberIdSystem[CRASHED]).isNull();
+    assertThat(isClientSystem[CRASHED]).isFalse();
     resetArraysForTesting(firedSystem, memberSystem, memberIdSystem, isClientSystem);
 
-    assertFalse(firedAdapter[JOINED]);
-    assertNull(memberAdapter[JOINED]);
-    assertNull(memberIdAdapter[JOINED]);
-    assertFalse(isClientAdapter[JOINED]);
-    assertTrue(firedAdapter[LEFT]);
-    assertEquals(clientMember, memberAdapter[LEFT]);
-    assertEquals(clientMemberId, memberIdAdapter[LEFT]);
-    assertTrue(isClientAdapter[LEFT]);
-    assertFalse(firedAdapter[CRASHED]);
-    assertNull(memberAdapter[CRASHED]);
-    assertNull(memberIdAdapter[CRASHED]);
-    assertFalse(isClientAdapter[CRASHED]);
+    assertThat(firedAdapter[JOINED]).isFalse();
+    assertThat(memberAdapter[JOINED]).isNull();
+    assertThat(memberIdAdapter[JOINED]).isNull();
+    assertThat(isClientAdapter[JOINED]).isFalse();
+    assertThat(firedAdapter[LEFT]).isTrue();
+    assertThat(memberAdapter[LEFT]).isEqualTo(clientMember);
+    assertThat(memberIdAdapter[LEFT]).isEqualTo(clientMemberId);
+    assertThat(isClientAdapter[LEFT]).isTrue();
+    assertThat(firedAdapter[CRASHED]).isFalse();
+    assertThat(memberAdapter[CRASHED]).isNull();
+    assertThat(memberIdAdapter[CRASHED]).isNull();
+    assertThat(isClientAdapter[CRASHED]).isFalse();
     resetArraysForTesting(firedAdapter, memberAdapter, memberIdAdapter, isClientAdapter);
 
     // reconnect bridge client
@@ -1095,66 +752,65 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
       }
     }
 
-    System.out.println("[doTestSystemClientEventsInServer] assert server detected client re-join");
     assertArrayFalse(firedSystemDuplicate);
     assertArrayFalse(firedAdapterDuplicate);
     assertArrayFalse(firedBridgeDuplicate);
 
-    assertTrue(firedBridge[JOINED]);
-    assertEquals(clientMember, memberBridge[JOINED]);
-    assertEquals(clientMemberId, memberIdBridge[JOINED]);
-    assertTrue(isClientBridge[JOINED]);
-    assertFalse(firedBridge[LEFT]);
-    assertNull(memberBridge[LEFT]);
-    assertNull(memberIdBridge[LEFT]);
-    assertFalse(isClientBridge[LEFT]);
-    assertFalse(firedBridge[CRASHED]);
-    assertNull(memberBridge[CRASHED]);
-    assertNull(memberIdBridge[CRASHED]);
-    assertFalse(isClientBridge[CRASHED]);
+    assertThat(firedBridge[JOINED]).isTrue();
+    assertThat(memberBridge[JOINED]).isEqualTo(clientMember);
+    assertThat(memberIdBridge[JOINED]).isEqualTo(clientMemberId);
+    assertThat(isClientBridge[JOINED]).isTrue();
+    assertThat(firedBridge[LEFT]).isFalse();
+    assertThat(memberBridge[LEFT]).isNull();
+    assertThat(memberIdBridge[LEFT]).isNull();
+    assertThat(isClientBridge[LEFT]).isFalse();
+    assertThat(firedBridge[CRASHED]).isFalse();
+    assertThat(memberBridge[CRASHED]).isNull();
+    assertThat(memberIdBridge[CRASHED]).isNull();
+    assertThat(isClientBridge[CRASHED]).isFalse();
     resetArraysForTesting(firedBridge, memberBridge, memberIdBridge, isClientBridge);
 
-    assertFalse(firedSystem[JOINED]);
-    assertNull(memberSystem[JOINED]);
-    assertNull(memberIdSystem[JOINED]);
-    assertFalse(isClientSystem[JOINED]);
-    assertFalse(firedSystem[LEFT]);
-    assertNull(memberSystem[LEFT]);
-    assertNull(memberIdSystem[LEFT]);
-    assertFalse(isClientSystem[LEFT]);
-    assertFalse(firedSystem[CRASHED]);
-    assertNull(memberSystem[CRASHED]);
-    assertNull(memberIdSystem[CRASHED]);
-    assertFalse(isClientSystem[CRASHED]);
+    assertThat(firedSystem[JOINED]).isFalse();
+    assertThat(memberSystem[JOINED]).isNull();
+    assertThat(memberIdSystem[JOINED]).isNull();
+    assertThat(isClientSystem[JOINED]).isFalse();
+    assertThat(firedSystem[LEFT]).isFalse();
+    assertThat(memberSystem[LEFT]).isNull();
+    assertThat(memberIdSystem[LEFT]).isNull();
+    assertThat(isClientSystem[LEFT]).isFalse();
+    assertThat(firedSystem[CRASHED]).isFalse();
+    assertThat(memberSystem[CRASHED]).isNull();
+    assertThat(memberIdSystem[CRASHED]).isNull();
+    assertThat(isClientSystem[CRASHED]).isFalse();
     resetArraysForTesting(firedSystem, memberSystem, memberIdSystem, isClientSystem);
 
-    assertTrue(firedAdapter[JOINED]);
-    assertEquals(clientMember, memberAdapter[JOINED]);
-    assertEquals(clientMemberId, memberIdAdapter[JOINED]);
-    // assertTrue(isClientAdapter[JOINED]);
-    assertFalse(firedAdapter[LEFT]);
-    assertNull(memberAdapter[LEFT]);
-    assertNull(memberIdAdapter[LEFT]);
-    assertFalse(isClientAdapter[LEFT]);
-    assertFalse(firedAdapter[CRASHED]);
-    assertNull(memberAdapter[CRASHED]);
-    assertNull(memberIdAdapter[CRASHED]);
-    assertFalse(isClientAdapter[CRASHED]);
+    assertThat(firedAdapter[JOINED]).isTrue();
+    assertThat(memberAdapter[JOINED]).isEqualTo(clientMember);
+    assertThat(memberIdAdapter[JOINED]).isEqualTo(clientMemberId);
+    // assertThat(isClientAdapter[JOINED]).isTrue();
+    assertThat(firedAdapter[LEFT]).isFalse();
+    assertThat(memberAdapter[LEFT]).isNull();
+    assertThat(memberIdAdapter[LEFT]).isNull();
+    assertThat(isClientAdapter[LEFT]).isFalse();
+    assertThat(firedAdapter[CRASHED]).isFalse();
+    assertThat(memberAdapter[CRASHED]).isNull();
+    assertThat(memberIdAdapter[CRASHED]).isNull();
+    assertThat(isClientAdapter[CRASHED]).isFalse();
     resetArraysForTesting(firedAdapter, memberAdapter, memberIdAdapter, isClientAdapter);
 
     vm0.invoke(new SerializableRunnable("Wait for client to fully connect") {
+      @Override
       public void run() {
-        System.out.println("[doTestSystemClientEventsInServer] wait for client to fully connect");
-        final String pl = getRootRegion().getSubregion(name).getAttributes().getPoolName();
-        PoolImpl pi = (PoolImpl) PoolManager.find(pl);
-        waitForClientToFullyConnect(pi);
+        String poolName = getRootRegion().getSubregion(name).getAttributes().getPoolName();
+        PoolImpl pool = (PoolImpl) PoolManager.find(poolName);
+        waitForClientToFullyConnect(pool);
       }
     });
 
     // have bridge client disconnect from system
     vm0.invoke(new SerializableRunnable("Disconnect bridge client") {
+      @Override
       public void run() {
-        System.out.println("[doTestSystemClientEventsInServer] disconnect bridge client");
         closeCache();
         disconnectFromDS();
       }
@@ -1176,51 +832,50 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
       }
     }
 
-    System.out.println("[doTestSystemClientEventsInServer] assert server detected client left");
     assertArrayFalse(firedSystemDuplicate);
     assertArrayFalse(firedAdapterDuplicate);
     assertArrayFalse(firedBridgeDuplicate);
 
-    assertFalse(firedBridge[JOINED]);
-    assertNull(memberBridge[JOINED]);
-    assertNull(memberIdBridge[JOINED]);
-    assertFalse(isClientBridge[JOINED]);
-    assertTrue(firedBridge[LEFT]);
-    assertEquals(clientMember, memberBridge[LEFT]);
-    assertEquals(clientMemberId, memberIdBridge[LEFT]);
-    assertTrue(isClientBridge[LEFT]);
-    assertFalse(firedBridge[CRASHED]);
-    assertNull(memberBridge[CRASHED]);
-    assertNull(memberIdBridge[CRASHED]);
-    assertFalse(isClientBridge[CRASHED]);
+    assertThat(firedBridge[JOINED]).isFalse();
+    assertThat(memberBridge[JOINED]).isNull();
+    assertThat(memberIdBridge[JOINED]).isNull();
+    assertThat(isClientBridge[JOINED]).isFalse();
+    assertThat(firedBridge[LEFT]).isTrue();
+    assertThat(memberBridge[LEFT]).isEqualTo(clientMember);
+    assertThat(memberIdBridge[LEFT]).isEqualTo(clientMemberId);
+    assertThat(isClientBridge[LEFT]).isTrue();
+    assertThat(firedBridge[CRASHED]).isFalse();
+    assertThat(memberBridge[CRASHED]).isNull();
+    assertThat(memberIdBridge[CRASHED]).isNull();
+    assertThat(isClientBridge[CRASHED]).isFalse();
     resetArraysForTesting(firedBridge, memberBridge, memberIdBridge, isClientBridge);
 
-    assertFalse(firedSystem[JOINED]);
-    assertNull(memberSystem[JOINED]);
-    assertNull(memberIdSystem[JOINED]);
-    assertFalse(isClientSystem[JOINED]);
-    assertTrue(firedSystem[LEFT]);
-    assertEquals(clientMember, memberSystem[LEFT]);
-    assertEquals(clientMemberId, memberIdSystem[LEFT]);
-    assertFalse(isClientSystem[LEFT]);
-    assertFalse(firedSystem[CRASHED]);
-    assertNull(memberSystem[CRASHED]);
-    assertNull(memberIdSystem[CRASHED]);
-    assertFalse(isClientSystem[CRASHED]);
+    assertThat(firedSystem[JOINED]).isFalse();
+    assertThat(memberSystem[JOINED]).isNull();
+    assertThat(memberIdSystem[JOINED]).isNull();
+    assertThat(isClientSystem[JOINED]).isFalse();
+    assertThat(firedSystem[LEFT]).isTrue();
+    assertThat(memberSystem[LEFT]).isEqualTo(clientMember);
+    assertThat(memberIdSystem[LEFT]).isEqualTo(clientMemberId);
+    assertThat(isClientSystem[LEFT]).isFalse();
+    assertThat(firedSystem[CRASHED]).isFalse();
+    assertThat(memberSystem[CRASHED]).isNull();
+    assertThat(memberIdSystem[CRASHED]).isNull();
+    assertThat(isClientSystem[CRASHED]).isFalse();
     resetArraysForTesting(firedSystem, memberSystem, memberIdSystem, isClientSystem);
 
-    assertFalse(firedAdapter[JOINED]);
-    assertNull(memberAdapter[JOINED]);
-    assertNull(memberIdAdapter[JOINED]);
-    assertFalse(isClientAdapter[JOINED]);
-    assertTrue(firedAdapter[LEFT]);
-    assertEquals(clientMember, memberAdapter[LEFT]);
-    assertEquals(clientMemberId, memberIdAdapter[LEFT]);
-    // assertTrue(isClientAdapter[LEFT]);
-    assertFalse(firedAdapter[CRASHED]);
-    assertNull(memberAdapter[CRASHED]);
-    assertNull(memberIdAdapter[CRASHED]);
-    assertFalse(isClientAdapter[CRASHED]);
+    assertThat(firedAdapter[JOINED]).isFalse();
+    assertThat(memberAdapter[JOINED]).isNull();
+    assertThat(memberIdAdapter[JOINED]).isNull();
+    assertThat(isClientAdapter[JOINED]).isFalse();
+    assertThat(firedAdapter[LEFT]).isTrue();
+    assertThat(memberAdapter[LEFT]).isEqualTo(clientMember);
+    assertThat(memberIdAdapter[LEFT]).isEqualTo(clientMemberId);
+    // assertThat(isClientAdapter[LEFT]).isTrue();
+    assertThat(firedAdapter[CRASHED]).isFalse();
+    assertThat(memberAdapter[CRASHED]).isNull();
+    assertThat(memberIdAdapter[CRASHED]).isNull();
+    assertThat(isClientAdapter[CRASHED]).isFalse();
     resetArraysForTesting(firedAdapter, memberAdapter, memberIdAdapter, isClientAdapter);
 
     // reconnect bridge client
@@ -1243,149 +898,139 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
       }
     }
 
-    System.out.println("[doTestSystemClientEventsInServer] assert server detected client re-join");
     assertArrayFalse(firedSystemDuplicate);
     assertArrayFalse(firedAdapterDuplicate);
     assertArrayFalse(firedBridgeDuplicate);
 
-    assertTrue(firedBridge[JOINED]);
-    assertEquals(clientMember, memberBridge[JOINED]);
-    assertEquals(clientMemberId, memberIdBridge[JOINED]);
-    assertTrue(isClientBridge[JOINED]);
-    assertFalse(firedBridge[LEFT]);
-    assertNull(memberBridge[LEFT]);
-    assertNull(memberIdBridge[LEFT]);
-    assertFalse(isClientBridge[LEFT]);
-    assertFalse(firedBridge[CRASHED]);
-    assertNull(memberBridge[CRASHED]);
-    assertNull(memberIdBridge[CRASHED]);
-    assertFalse(isClientBridge[CRASHED]);
+    assertThat(firedBridge[JOINED]).isTrue();
+    assertThat(memberBridge[JOINED]).isEqualTo(clientMember);
+    assertThat(memberIdBridge[JOINED]).isEqualTo(clientMemberId);
+    assertThat(isClientBridge[JOINED]).isTrue();
+    assertThat(firedBridge[LEFT]).isFalse();
+    assertThat(memberBridge[LEFT]).isNull();
+    assertThat(memberIdBridge[LEFT]).isNull();
+    assertThat(isClientBridge[LEFT]).isFalse();
+    assertThat(firedBridge[CRASHED]).isFalse();
+    assertThat(memberBridge[CRASHED]).isNull();
+    assertThat(memberIdBridge[CRASHED]).isNull();
+    assertThat(isClientBridge[CRASHED]).isFalse();
     resetArraysForTesting(firedBridge, memberBridge, memberIdBridge, isClientBridge);
 
-    assertTrue(firedSystem[JOINED]);
-    assertEquals(clientMember, memberSystem[JOINED]);
-    assertEquals(clientMemberId, memberIdSystem[JOINED]);
-    assertFalse(isClientSystem[JOINED]);
-    assertFalse(firedSystem[LEFT]);
-    assertNull(memberSystem[LEFT]);
-    assertNull(memberIdSystem[LEFT]);
-    assertFalse(isClientSystem[LEFT]);
-    assertFalse(firedSystem[CRASHED]);
-    assertNull(memberSystem[CRASHED]);
-    assertNull(memberIdSystem[CRASHED]);
-    assertFalse(isClientSystem[CRASHED]);
+    assertThat(firedSystem[JOINED]).isTrue();
+    assertThat(memberSystem[JOINED]).isEqualTo(clientMember);
+    assertThat(memberIdSystem[JOINED]).isEqualTo(clientMemberId);
+    assertThat(isClientSystem[JOINED]).isFalse();
+    assertThat(firedSystem[LEFT]).isFalse();
+    assertThat(memberSystem[LEFT]).isNull();
+    assertThat(memberIdSystem[LEFT]).isNull();
+    assertThat(isClientSystem[LEFT]).isFalse();
+    assertThat(firedSystem[CRASHED]).isFalse();
+    assertThat(memberSystem[CRASHED]).isNull();
+    assertThat(memberIdSystem[CRASHED]).isNull();
+    assertThat(isClientSystem[CRASHED]).isFalse();
     resetArraysForTesting(firedSystem, memberSystem, memberIdSystem, isClientSystem);
 
-    assertTrue(firedAdapter[JOINED]);
-    assertEquals(clientMember, memberAdapter[JOINED]);
-    assertEquals(clientMemberId, memberIdAdapter[JOINED]);
-    // assertTrue(isClientAdapter[JOINED]);
-    assertFalse(firedAdapter[LEFT]);
-    assertNull(memberAdapter[LEFT]);
-    assertNull(memberIdAdapter[LEFT]);
-    assertFalse(isClientAdapter[LEFT]);
-    assertFalse(firedAdapter[CRASHED]);
-    assertNull(memberAdapter[CRASHED]);
-    assertNull(memberIdAdapter[CRASHED]);
-    assertFalse(isClientAdapter[CRASHED]);
+    assertThat(firedAdapter[JOINED]).isTrue();
+    assertThat(memberAdapter[JOINED]).isEqualTo(clientMember);
+    assertThat(memberIdAdapter[JOINED]).isEqualTo(clientMemberId);
+    // assertThat(isClientAdapter[JOINED]).isTrue();
+    assertThat(firedAdapter[LEFT]).isFalse();
+    assertThat(memberAdapter[LEFT]).isNull();
+    assertThat(memberIdAdapter[LEFT]).isNull();
+    assertThat(isClientAdapter[LEFT]).isFalse();
+    assertThat(firedAdapter[CRASHED]).isFalse();
+    assertThat(memberAdapter[CRASHED]).isNull();
+    assertThat(memberIdAdapter[CRASHED]).isNull();
+    assertThat(isClientAdapter[CRASHED]).isFalse();
     resetArraysForTesting(firedAdapter, memberAdapter, memberIdAdapter, isClientAdapter);
 
     vm0.invoke(new SerializableRunnable("Wait for client to fully connect") {
+      @Override
       public void run() {
-        System.out.println("[doTestSystemClientEventsInServer] wait for client to fully connect");
-        final String pl = getRootRegion().getSubregion(name).getAttributes().getPoolName();
-        PoolImpl pi = (PoolImpl) PoolManager.find(pl);
-        waitForClientToFullyConnect(pi);
+        String poolName = getRootRegion().getSubregion(name).getAttributes().getPoolName();
+        PoolImpl pool = (PoolImpl) PoolManager.find(poolName);
+        waitForClientToFullyConnect(pool);
       }
     });
 
     // close bridge client region with test hook for crash
     ServerConnection.setForceClientCrashEvent(true);
-    try {
-      vm0.invoke(new SerializableRunnable("Close bridge client region") {
-        public void run() {
-          System.out.println("[doTestSystemClientEventsInServer] close bridge client region");
-          getRootRegion().getSubregion(name).close();
-          PoolManager.close();
-        }
-      });
 
-      synchronized (adapter) {
-        if (!firedAdapter[CRASHED]) {
-          adapter.wait(ASYNC_EVENT_WAIT_MILLIS);
-        }
-      }
-      synchronized (bridgeListener) {
-        if (!firedBridge[CRASHED]) {
-          bridgeListener.wait(ASYNC_EVENT_WAIT_MILLIS);
-        }
+    vm0.invoke(new SerializableRunnable("Close bridge client region") {
+      @Override
+      public void run() {
+        getRootRegion().getSubregion(name).close();
+        PoolManager.close();
       }
+    });
 
-      getLogWriter()
-          .info("[doTestSystemClientEventsInServer] assert server detected client crashed");
-      assertArrayFalse(firedSystemDuplicate);
-      assertArrayFalse(firedAdapterDuplicate);
-      assertArrayFalse(firedBridgeDuplicate);
-
-      assertFalse(firedBridge[JOINED]);
-      assertNull(memberBridge[JOINED]);
-      assertNull(memberIdBridge[JOINED]);
-      assertFalse(isClientBridge[JOINED]);
-      assertFalse(firedBridge[LEFT]);
-      assertNull(memberBridge[LEFT]);
-      assertNull(memberIdBridge[LEFT]);
-      assertFalse(isClientBridge[LEFT]);
-      assertTrue(firedBridge[CRASHED]);
-      assertEquals(clientMember, memberBridge[CRASHED]);
-      assertEquals(clientMemberId, memberIdBridge[CRASHED]);
-      assertTrue(isClientBridge[CRASHED]);
-
-      assertFalse(firedSystem[JOINED]);
-      assertNull(memberSystem[JOINED]);
-      assertNull(memberIdSystem[JOINED]);
-      assertFalse(isClientSystem[JOINED]);
-      assertFalse(firedSystem[LEFT]);
-      assertNull(memberSystem[LEFT]);
-      assertNull(memberIdSystem[LEFT]);
-      assertFalse(isClientSystem[LEFT]);
-      assertFalse(firedSystem[CRASHED]);
-      assertNull(memberSystem[CRASHED]);
-      assertNull(memberIdSystem[CRASHED]);
-      assertFalse(isClientSystem[CRASHED]);
-
-      assertFalse(firedAdapter[JOINED]);
-      assertNull(memberAdapter[JOINED]);
-      assertNull(memberIdAdapter[JOINED]);
-      assertFalse(isClientAdapter[JOINED]);
-      assertFalse(firedAdapter[LEFT]);
-      assertNull(memberAdapter[LEFT]);
-      assertNull(memberIdAdapter[LEFT]);
-      assertFalse(isClientAdapter[LEFT]);
-      assertTrue(firedAdapter[CRASHED]);
-      assertEquals(clientMember, memberAdapter[CRASHED]);
-      assertEquals(clientMemberId, memberIdAdapter[CRASHED]);
-      assertTrue(isClientAdapter[CRASHED]);
-    } finally {
-      ServerConnection.setForceClientCrashEvent(false);
+    synchronized (adapter) {
+      if (!firedAdapter[CRASHED]) {
+        adapter.wait(ASYNC_EVENT_WAIT_MILLIS);
+      }
+    }
+    synchronized (bridgeListener) {
+      if (!firedBridge[CRASHED]) {
+        bridgeListener.wait(ASYNC_EVENT_WAIT_MILLIS);
+      }
     }
+
+    assertArrayFalse(firedSystemDuplicate);
+    assertArrayFalse(firedAdapterDuplicate);
+    assertArrayFalse(firedBridgeDuplicate);
+
+    assertThat(firedBridge[JOINED]).isFalse();
+    assertThat(memberBridge[JOINED]).isNull();
+    assertThat(memberIdBridge[JOINED]).isNull();
+    assertThat(isClientBridge[JOINED]).isFalse();
+    assertThat(firedBridge[LEFT]).isFalse();
+    assertThat(memberBridge[LEFT]).isNull();
+    assertThat(memberIdBridge[LEFT]).isNull();
+    assertThat(isClientBridge[LEFT]).isFalse();
+    assertThat(firedBridge[CRASHED]).isTrue();
+    assertThat(memberBridge[CRASHED]).isEqualTo(clientMember);
+    assertThat(memberIdBridge[CRASHED]).isEqualTo(clientMemberId);
+    assertThat(isClientBridge[CRASHED]).isTrue();
+
+    assertThat(firedSystem[JOINED]).isFalse();
+    assertThat(memberSystem[JOINED]).isNull();
+    assertThat(memberIdSystem[JOINED]).isNull();
+    assertThat(isClientSystem[JOINED]).isFalse();
+    assertThat(firedSystem[LEFT]).isFalse();
+    assertThat(memberSystem[LEFT]).isNull();
+    assertThat(memberIdSystem[LEFT]).isNull();
+    assertThat(isClientSystem[LEFT]).isFalse();
+    assertThat(firedSystem[CRASHED]).isFalse();
+    assertThat(memberSystem[CRASHED]).isNull();
+    assertThat(memberIdSystem[CRASHED]).isNull();
+    assertThat(isClientSystem[CRASHED]).isFalse();
+
+    assertThat(firedAdapter[JOINED]).isFalse();
+    assertThat(memberAdapter[JOINED]).isNull();
+    assertThat(memberIdAdapter[JOINED]).isNull();
+    assertThat(isClientAdapter[JOINED]).isFalse();
+    assertThat(firedAdapter[LEFT]).isFalse();
+    assertThat(memberAdapter[LEFT]).isNull();
+    assertThat(memberIdAdapter[LEFT]).isNull();
+    assertThat(isClientAdapter[LEFT]).isFalse();
+    assertThat(firedAdapter[CRASHED]).isTrue();
+    assertThat(memberAdapter[CRASHED]).isEqualTo(clientMember);
+    assertThat(memberIdAdapter[CRASHED]).isEqualTo(clientMemberId);
+    assertThat(isClientAdapter[CRASHED]).isTrue();
   }
 
   /**
    * Waits for client to create an expected number of connections. Note: This probably won't work if
    * the pool has more than one Endpoint.
    */
-  protected void waitForClientToFullyConnect(final PoolImpl pool) {
-    System.out.println("[waitForClientToFullyConnect]");
-    final long failMillis = System.currentTimeMillis() + JOIN_FAIL_MILLIS;
+  private void waitForClientToFullyConnect(PoolImpl pool) {
+    long failMillis = System.currentTimeMillis() + JOIN_FAIL_MILLIS;
     boolean fullyConnected = false;
     while (!fullyConnected) {
-      Wait.pause(100);
+      pause(100);
       fullyConnected = pool.getConnectionCount() >= pool.getMinConnections();
-      assertTrue("Client failed to create " + pool.getMinConnections() + " connections within "
-          + JOIN_FAIL_MILLIS + " milliseconds. Only " + pool.getConnectionCount()
-          + " connections were created.", System.currentTimeMillis() < failMillis);
+      assertThat(System.currentTimeMillis()).isLessThan(failMillis);
     }
-    System.out.println("[waitForClientToFullyConnect] fullyConnected=" + fullyConnected);
   }
 
   /**
@@ -1410,25 +1055,21 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
   }
 
   private void assertArrayFalse(String msg, boolean[] array) {
-    for (int i = 0; i < array.length; i++) {
+    for (boolean value : array) {
       if (msg == null) {
-        assertFalse(array[i]);
+        assertThat(value).isFalse();
       } else {
-        assertFalse(msg, array[i]);
+        assertThat(value).as(msg).isFalse();
       }
     }
   }
 
-  private void assertArrayTrue(boolean[] array) {
-    assertArrayTrue(null, array);
-  }
-
   private void assertArrayTrue(String msg, boolean[] array) {
     for (int i = 0; i < array.length; i++) {
       if (msg == null) {
-        assertTrue(array[i]);
+        assertThat(array[i]).isTrue();
       } else {
-        assertTrue(msg, array[i]);
+        assertThat(array[i]).as(msg).isTrue();
       }
     }
   }
@@ -1439,173 +1080,119 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
   @Category(FlakyTest.class) // GEODE-1879
   @Test
   public void testServerEventsInPeerSystem() throws Exception {
-    try {
-      doTestServerEventsInPeerSystem();
-    } finally {
-      disconnectAllFromDS();
-    }
-  }
-
-  protected static int testServerEventsInSystemClient_port;
+    boolean[] firedSystem = new boolean[3];
+    DistributedMember[] memberSystem = new DistributedMember[3];
+    String[] memberIdSystem = new String[3];
+    boolean[] isClientSystem = new boolean[3];
 
-  private static int getTestServerEventsInSystemClient_port() {
-    return testServerEventsInSystemClient_port;
-  }
+    boolean[] firedAdapter = new boolean[3];
+    DistributedMember[] memberAdapter = new DistributedMember[3];
+    String[] memberIdAdapter = new String[3];
+    boolean[] isClientAdapter = new boolean[3];
 
-  private void doTestServerEventsInPeerSystem() throws Exception {
-    final boolean[] firedSystem = new boolean[3];
-    final DistributedMember[] memberSystem = new DistributedMember[3];
-    final String[] memberIdSystem = new String[3];
-    final boolean[] isClientSystem = new boolean[3];
+    boolean[] firedBridge = new boolean[3];
+    DistributedMember[] memberBridge = new DistributedMember[3];
+    String[] memberIdBridge = new String[3];
+    boolean[] isClientBridge = new boolean[3];
 
-    final boolean[] firedAdapter = new boolean[3];
-    final DistributedMember[] memberAdapter = new DistributedMember[3];
-    final String[] memberIdAdapter = new String[3];
-    final boolean[] isClientAdapter = new boolean[3];
-
-    final boolean[] firedBridge = new boolean[3];
-    final DistributedMember[] memberBridge = new DistributedMember[3];
-    final String[] memberIdBridge = new String[3];
-    final boolean[] isClientBridge = new boolean[3];
-
-    final boolean[] firedSystemDuplicate = new boolean[3];
-    final boolean[] firedAdapterDuplicate = new boolean[3];
-    final boolean[] firedBridgeDuplicate = new boolean[3];
+    boolean[] firedSystemDuplicate = new boolean[3];
+    boolean[] firedAdapterDuplicate = new boolean[3];
+    boolean[] firedBridgeDuplicate = new boolean[3];
 
     MembershipListener systemListener = new MembershipListener() {
+      @Override
       public synchronized void memberJoined(MembershipEvent event) {
         firedSystemDuplicate[JOINED] = firedSystem[JOINED];
         firedSystem[JOINED] = true;
         memberSystem[JOINED] = event.getDistributedMember();
         memberIdSystem[JOINED] = event.getMemberId();
-        notify();
+        notifyAll();
       }
 
+      @Override
       public synchronized void memberLeft(MembershipEvent event) {
         firedSystemDuplicate[LEFT] = firedSystem[LEFT];
         firedSystem[LEFT] = true;
         memberSystem[LEFT] = event.getDistributedMember();
         memberIdSystem[LEFT] = event.getMemberId();
-        notify();
+        notifyAll();
       }
 
+      @Override
       public synchronized void memberCrashed(MembershipEvent event) {
         firedSystemDuplicate[CRASHED] = firedSystem[CRASHED];
         firedSystem[CRASHED] = true;
         memberSystem[CRASHED] = event.getDistributedMember();
         memberIdSystem[CRASHED] = event.getMemberId();
-        notify();
+        notifyAll();
       }
     };
 
     UniversalMembershipListenerAdapter adapter = new UniversalMembershipListenerAdapter() {
       @Override
       public synchronized void memberJoined(MembershipEvent event) {
-        getLogWriter()
-            .info("[testServerEventsInSystemClient] memberJoined >" + event.getMemberId() + "<");
         firedAdapterDuplicate[JOINED] = firedAdapter[JOINED];
         firedAdapter[JOINED] = true;
         memberAdapter[JOINED] = event.getDistributedMember();
         memberIdAdapter[JOINED] = event.getMemberId();
-        if (event instanceof UniversalMembershipListenerAdapter.AdaptedMembershipEvent) {
-          isClientAdapter[JOINED] =
-              ((UniversalMembershipListenerAdapter.AdaptedMembershipEvent) event).isClient();
+        if (event instanceof AdaptedMembershipEvent) {
+          isClientAdapter[JOINED] = ((AdaptedMembershipEvent) event).isClient();
         }
-        notify();
+        notifyAll();
       }
 
       @Override
       public synchronized void memberLeft(MembershipEvent event) {
-        getLogWriter()
-            .info("[testServerEventsInSystemClient] memberLeft >" + event.getMemberId() + "<");
         firedAdapterDuplicate[LEFT] = firedAdapter[LEFT];
         firedAdapter[LEFT] = true;
         memberAdapter[LEFT] = event.getDistributedMember();
         memberIdAdapter[LEFT] = event.getMemberId();
-        if (event instanceof UniversalMembershipListenerAdapter.AdaptedMembershipEvent) {
-          isClientAdapter[LEFT] =
-              ((UniversalMembershipListenerAdapter.AdaptedMembershipEvent) event).isClient();
+        if (event instanceof AdaptedMembershipEvent) {
+          isClientAdapter[LEFT] = ((AdaptedMembershipEvent) event).isClient();
         }
-        notify();
+        notifyAll();
       }
 
       @Override
       public synchronized void memberCrashed(MembershipEvent event) {
-        getLogWriter()
-            .info("[testServerEventsInSystemClient] memberCrashed >" + event.getMemberId() + "<");
         firedAdapterDuplicate[CRASHED] = firedAdapter[CRASHED];
         firedAdapter[CRASHED] = true;
         memberAdapter[CRASHED] = event.getDistributedMember();
         memberIdAdapter[CRASHED] = event.getMemberId();
-        if (event instanceof UniversalMembershipListenerAdapter.AdaptedMembershipEvent) {
-          isClientAdapter[CRASHED] =
-              ((UniversalMembershipListenerAdapter.AdaptedMembershipEvent) event).isClient();
+        if (event instanceof AdaptedMembershipEvent) {
+          isClientAdapter[CRASHED] = ((AdaptedMembershipEvent) event).isClient();
         }
-        notify();
+        notifyAll();
       }
     };
 
-    ClientMembershipListener bridgeListener = new ClientMembershipListener() {
-      public synchronized void memberJoined(ClientMembershipEvent event) {
-        firedBridgeDuplicate[JOINED] = firedBridge[JOINED];
-        firedBridge[JOINED] = true;
-        memberBridge[JOINED] = event.getMember();
-        memberIdBridge[JOINED] = event.getMemberId();
-        isClientBridge[JOINED] = event.isClient();
-        notify();
-      }
-
-      public synchronized void memberLeft(ClientMembershipEvent event) {
-        firedBridgeDuplicate[LEFT] = firedBridge[LEFT];
-        firedBridge[LEFT] = true;
-        memberBridge[LEFT] = event.getMember();
-        memberIdBridge[LEFT] = event.getMemberId();
-        isClientBridge[LEFT] = event.isClient();
-        notify();
-      }
-
-      public synchronized void memberCrashed(ClientMembershipEvent event) {
-        firedBridgeDuplicate[CRASHED] = firedBridge[CRASHED];
-        firedBridge[CRASHED] = true;
-        memberBridge[CRASHED] = event.getMember();
-        memberIdBridge[CRASHED] = event.getMemberId();
-        isClientBridge[CRASHED] = event.isClient();
-        notify();
-      }
-    };
-
-    final Host host = Host.getHost(0);
-    final VM vm0 = host.getVM(0);
-    final String name = this.getUniqueName();
-    final int[] ports = new int[] {AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET)};
-    assertTrue(ports[0] != 0);
+    Host host = Host.getHost(0);
+    VM vm0 = host.getVM(0);
+    String name = this.getUniqueName();
+    int[] ports = new int[] {getRandomAvailablePort(SOCKET)};
+    assertThat(ports[0] != 0).isTrue();
 
     // create BridgeServer in controller vm...
-    System.out.println("[doTestSystemClientEventsInServer] Create BridgeServer");
     getSystem();
     AttributesFactory factory = new AttributesFactory();
     factory.setScope(Scope.LOCAL);
     Region region = createRegion(name, factory.create());
-    assertNotNull(region);
-    assertNotNull(getRootRegion().getSubregion(name));
+    assertThat(region).isNotNull();
+    assertThat(getRootRegion().getSubregion(name)).isNotNull();
 
     ports[0] = startBridgeServer(0);
-    assertTrue(ports[0] != 0);
-    final DistributedMember serverMember = getMemberId();
-    final String serverMemberId = serverMember.getId();
-    final Properties serverProperties = getSystem().getProperties();
+    assertThat(ports[0] != 0).isTrue();
+
+    DistributedMember serverMember = getMemberId();
+    String serverMemberId = serverMember.getId();
+    Properties serverProperties = getSystem().getProperties();
 
     serverProperties.remove(CLUSTER_SSL_ENABLED);
     serverProperties.remove(CLUSTER_SSL_CIPHERS);
     serverProperties.remove(CLUSTER_SSL_PROTOCOLS);
     serverProperties.remove(CLUSTER_SSL_REQUIRE_AUTHENTICATION);
 
-    System.out.println("[testServerEventsInPeerSystem] ports[0]=" + ports[0]);
-    System.out.println("[testServerEventsInPeerSystem] serverMemberId=" + serverMemberId);
-    System.out.println("[testServerEventsInPeerSystem] serverMember=" + serverMember);
-
-    GemFireCacheImpl cache = GemFireCacheImpl.getExisting();
-    assertNotNull(cache);
+    InternalCache cache = getInternalCache();
     ManagementService service = ManagementService.getExistingManagementService(cache);
     // register the system listener
     service.addMembershipListener(systemListener);
@@ -1617,13 +1204,12 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
     SerializableCallable createPeerCache = new SerializableCallable("Create Peer Cache") {
       @Override
       public Object call() {
-        System.out.println("[testServerEventsInPeerSystem] Create Peer cache");
         getSystem(serverProperties);
         AttributesFactory factory = new AttributesFactory();
         factory.setScope(Scope.LOCAL);
         Region region = createRegion(name, factory.create());
-        assertNotNull(region);
-        assertNotNull(getRootRegion().getSubregion(name));
+        assertThat(region).isNotNull();
+        assertThat(getRootRegion().getSubregion(name)).isNotNull();
         return basicGetSystem().getDistributedMember();
       }
     };
@@ -1631,11 +1217,6 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
     DistributedMember peerMember = (DistributedMember) vm0.invoke(createPeerCache);
     String peerMemberId = peerMember.getId();
 
-    System.out.println("[testServerEventsInPeerSystem] peerMemberId=" + peerMemberId);
-    System.out.println("[testServerEventsInPeerSystem] peerMember=" + peerMember);
-
-
-
     synchronized (systemListener) {
       if (!firedSystem[JOINED]) {
         systemListener.wait(ASYNC_EVENT_WAIT_MILLIS);
@@ -1647,111 +1228,103 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
       }
     }
 
-    System.out.println("[testServerEventsInPeerSystem] assert server detected peer join");
     assertArrayFalse(firedSystemDuplicate);
 
-    assertTrue(firedSystem[JOINED]);
-    assertEquals(peerMember, memberSystem[JOINED]);
-    assertEquals(peerMemberId, memberIdSystem[JOINED]);
-    assertFalse(isClientSystem[JOINED]);
-    assertFalse(firedSystem[LEFT]);
-    assertNull(memberSystem[LEFT]);
-    assertNull(memberIdSystem[LEFT]);
-    assertFalse(isClientSystem[LEFT]);
-    assertFalse(firedSystem[CRASHED]);
-    assertNull(memberSystem[CRASHED]);
-    assertNull(memberIdSystem[CRASHED]);
-    assertFalse(isClientSystem[CRASHED]);
+    assertThat(firedSystem[JOINED]).isTrue();
+    assertThat(memberSystem[JOINED]).isEqualTo(peerMember);
+    assertThat(memberIdSystem[JOINED]).isEqualTo(peerMemberId);
+    assertThat(isClientSystem[JOINED]).isFalse();
+    assertThat(firedSystem[LEFT]).isFalse();
+    assertThat(memberSystem[LEFT]).isNull();
+    assertThat(memberIdSystem[LEFT]).isNull();
+    assertThat(isClientSystem[LEFT]).isFalse();
+    assertThat(firedSystem[CRASHED]).isFalse();
+    assertThat(memberSystem[CRASHED]).isNull();
+    assertThat(memberIdSystem[CRASHED]).isNull();
+    assertThat(isClientSystem[CRASHED]).isFalse();
+
     resetArraysForTesting(firedSystem, memberSystem, memberIdSystem, isClientSystem);
 
-    assertTrue(firedAdapter[JOINED]);
-    assertNotNull(memberAdapter[JOINED]);
-    assertNotNull(memberIdAdapter[JOINED]);
-    assertEquals(peerMember, memberAdapter[JOINED]);
-    assertEquals(peerMemberId, memberIdAdapter[JOINED]);
-    assertFalse(isClientAdapter[JOINED]);
-    assertFalse(firedAdapter[LEFT]);
-    assertNull(memberAdapter[LEFT]);
-    assertNull(memberIdAdapter[LEFT]);
-    assertFalse(isClientAdapter[LEFT]);
-    assertFalse(firedAdapter[CRASHED]);
-    assertNull(memberAdapter[CRASHED]);
-    assertNull(memberIdAdapter[CRASHED]);
-    assertFalse(isClientAdapter[CRASHED]);
+    assertThat(firedAdapter[JOINED]).isTrue();
+    assertThat(memberAdapter[JOINED]).isNotNull();
+    assertThat(memberIdAdapter[JOINED]).isNotNull();
+    assertThat(memberAdapter[JOINED]).isEqualTo(peerMember);
+    assertThat(memberIdAdapter[JOINED]).isEqualTo(peerMemberId);
+    assertThat(isClientAdapter[JOINED]).isFalse();
+    assertThat(firedAdapter[LEFT]).isFalse();
+    assertThat(memberAdapter[LEFT]).isNull();
+    assertThat(memberIdAdapter[LEFT]).isNull();
+    assertThat(isClientAdapter[LEFT]).isFalse();
+    assertThat(firedAdapter[CRASHED]).isFalse();
+    assertThat(memberAdapter[CRASHED]).isNull();
+    assertThat(memberIdAdapter[CRASHED]).isNull();
+    assertThat(isClientAdapter[CRASHED]).isFalse();
+
     resetArraysForTesting(firedAdapter, memberAdapter, memberIdAdapter, isClientAdapter);
 
+    addIgnoredException(ServerConnectivityException.class.getName());
+    addIgnoredException(IOException.class.getName());
 
-    LogWriter bgexecLogger = new LocalLogWriter(InternalLogWriter.ALL_LEVEL, System.out);
-    bgexecLogger
-        .info("<ExpectedException action=add>" + "java.io.IOException" + "</ExpectedException>");
-    final IgnoredException ex =
-        IgnoredException.addIgnoredException(ServerConnectivityException.class.getName());
-    try {
-      vm0.invoke(new SerializableRunnable("Disconnect Peer server") {
-        public void run() {
-          System.out.println("[testServerEventsInPeerSystem] disconnect peer server");
-          closeCache();
-          disconnectFromDS();
-        }
-      });
+    vm0.invoke(new SerializableRunnable("Disconnect Peer server") {
+      @Override
+      public void run() {
+        disconnectFromDS();
+      }
+    });
 
-      synchronized (systemListener) {
-        if (!firedSystem[LEFT]) {
-          systemListener.wait(ASYNC_EVENT_WAIT_MILLIS);
-        }
+    synchronized (systemListener) {
+      if (!firedSystem[LEFT]) {
+        systemListener.wait(ASYNC_EVENT_WAIT_MILLIS);
       }
-      synchronized (adapter) {
-        if (!firedAdapter[LEFT]) {
-          adapter.wait(ASYNC_EVENT_WAIT_MILLIS);
-        }
+    }
+    synchronized (adapter) {
+      if (!firedAdapter[LEFT]) {
+        adapter.wait(ASYNC_EVENT_WAIT_MILLIS);
       }
-    } finally {
-      bgexecLogger.info(
-          "<ExpectedException action=remove>" + "java.io.IOException" + "</ExpectedException>");
-      ex.remove();
     }
 
-    System.out.println("[testServerEventsInPeerSystem] assert server detected peer crashed");
-    assertArrayFalse(firedSystemDuplicate);
+    // done with IgnoredExceptions
 
+    assertArrayFalse(firedSystemDuplicate);
     assertArrayFalse(firedAdapterDuplicate);
 
-    assertFalse(firedSystem[JOINED]);
-    assertNull(memberSystem[JOINED]);
-    assertNull(memberIdSystem[JOINED]);
-    assertFalse(isClientSystem[JOINED]);
-    assertTrue(firedSystem[LEFT]);
-    assertEquals(peerMember, memberSystem[LEFT]);
-    assertEquals(peerMemberId, memberIdSystem[LEFT]);
-    assertFalse(isClientSystem[LEFT]);
-    assertFalse(firedSystem[CRASHED]);
-    assertNull(memberSystem[CRASHED]);
-    assertNull(memberIdSystem[CRASHED]);
-    assertFalse(isClientSystem[CRASHED]);
+    assertThat(firedSystem[JOINED]).isFalse();
+    assertThat(memberSystem[JOINED]).isNull();
+    assertThat(memberIdSystem[JOINED]).isNull();
+    assertThat(isClientSystem[JOINED]).isFalse();
+    assertThat(firedSystem[LEFT]).isTrue();
+    assertThat(memberSystem[LEFT]).isEqualTo(peerMember);
+    assertThat(memberIdSystem[LEFT]).isEqualTo(peerMemberId);
+    assertThat(isClientSystem[LEFT]).isFalse();
+    assertThat(firedSystem[CRASHED]).isFalse();
+    assertThat(memberSystem[CRASHED]).isNull();
+    assertThat(memberIdSystem[CRASHED]).isNull();
+    assertThat(isClientSystem[CRASHED]).isFalse();
+
     resetArraysForTesting(firedSystem, memberSystem, memberIdSystem, isClientSystem);
 
-    assertFalse("this intermittently fails", firedAdapter[JOINED]);
-    assertNull(memberIdAdapter[JOINED]);
-    assertFalse(isClientAdapter[JOINED]);
+    assertThat(firedAdapter[JOINED]).isFalse();
+    assertThat(memberIdAdapter[JOINED]).isNull();
+    assertThat(isClientAdapter[JOINED]).isFalse();
     // LEFT fired by System listener
-    assertTrue(firedAdapter[LEFT]);
-    assertEquals(peerMember, memberAdapter[LEFT]);
-    assertEquals(peerMemberId, memberIdAdapter[LEFT]);
-    assertFalse(isClientAdapter[LEFT]);
+    assertThat(firedAdapter[LEFT]).isTrue();
+    assertThat(memberAdapter[LEFT]).isEqualTo(peerMember);
+    assertThat(memberIdAdapter[LEFT]).isEqualTo(peerMemberId);
+    assertThat(isClientAdapter[LEFT]).isFalse();
 
     // There won't be an adapter crashed event because since the two VMs
     // are in the same distributed system, and the server's real member
     // id is used now. In this case, two events are sent - one from
-    // jgroups (memberDeparted), and one from the server (a memberCrshed).
+    // jgroups (memberDeparted), and one from the server (a memberCrashed).
     // The memberCrashed event is deemed a duplicate and not sent - see
     // UniversalMembershipListenerAdapter.MembershipListener.isDuplicate
-    assertFalse(firedAdapter[CRASHED]);
-    assertNull(memberAdapter[CRASHED]);
-    assertNull(memberIdAdapter[CRASHED]);
-    assertFalse(isClientAdapter[CRASHED]);
-    resetArraysForTesting(firedAdapter, memberAdapter, memberIdAdapter, isClientAdapter);
 
+    assertThat(firedAdapter[CRASHED]).isFalse();
+    assertThat(memberAdapter[CRASHED]).isNull();
+    assertThat(memberIdAdapter[CRASHED]).isNull();
+    assertThat(isClientAdapter[CRASHED]).isFalse();
 
+    resetArraysForTesting(firedAdapter, memberAdapter, memberIdAdapter, isClientAdapter);
   }
 
   /**
@@ -1759,411 +1332,411 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
    */
   @Test
   public void testServerEventsInLonerClient() throws Exception {
-    try {
-      doTestServerEventsInLonerClient();
-    } finally {
-      disconnectAllFromDS();
-    }
-  }
-
-  protected static int testServerEventsInLonerClient_port;
-
-  private static int getTestServerEventsInLonerClient_port() {
-    return testServerEventsInLonerClient_port;
-  }
-
-  private void doTestServerEventsInLonerClient() throws Exception {
-    final boolean[] firedAdapter = new boolean[3];
-    final DistributedMember[] memberAdapter = new DistributedMember[3];
-    final String[] memberIdAdapter = new String[3];
-    final boolean[] isClientAdapter = new boolean[3];
+    boolean[] firedAdapter = new boolean[3];
+    DistributedMember[] memberAdapter = new DistributedMember[3];
+    String[] memberIdAdapter = new String[3];
+    boolean[] isClientAdapter = new boolean[3];
 
-    final boolean[] firedBridge = new boolean[3];
-    final DistributedMember[] memberBridge = new DistributedMember[3];
-    final String[] memberIdBridge = new String[3];
-    final boolean[] isClientBridge = new boolean[3];
+    boolean[] firedBridge = new boolean[3];
+    DistributedMember[] memberBridge = new DistributedMember[3];
+    String[] memberIdBridge = new String[3];
+    boolean[] isClientBridge = new boolean[3];
 
-    final boolean[] firedAdapterDuplicate = new boolean[3];
-    final boolean[] firedBridgeDuplicate = new boolean[3];
+    boolean[] firedAdapterDuplicate = new boolean[3];
+    boolean[] firedBridgeDuplicate = new boolean[3];
 
     UniversalMembershipListenerAdapter adapter = new UniversalMembershipListenerAdapter() {
       @Override
       public synchronized void memberJoined(MembershipEvent event) {
-        System.out
-            .println("[testServerEventsInLonerClient] memberJoined >" + event.getMemberId() + "<");
         firedAdapterDuplicate[JOINED] = firedAdapter[JOINED];
         firedAdapter[JOINED] = true;
         memberAdapter[JOINED] = event.getDistributedMember();
         memberIdAdapter[JOINED] = event.getMemberId();
-        if (event instanceof UniversalMembershipListenerAdapter.AdaptedMembershipEvent) {
-          isClientAdapter[JOINED] =
-              ((UniversalMembershipListenerAdapter.AdaptedMembershipEvent) event).isClient();
+        if (event instanceof AdaptedMembershipEvent) {
+          isClientAdapter[JOINED] = ((AdaptedMembershipEvent) event).isClient();
         }
-        notify();
+        notifyAll();
       }
 
       @Override
       public synchronized void memberLeft(MembershipEvent event) {
-        System.out
-            .println("[testServerEventsInLonerClient] memberLeft >" + event.getMemberId() + "<");
         firedAdapterDuplicate[LEFT] = firedAdapter[LEFT];
         firedAdapter[LEFT] = true;
         memberAdapter[LEFT] = event.getDistributedMember();
         memberIdAdapter[LEFT] = event.getMemberId();
-        if (event instanceof UniversalMembershipListenerAdapter.AdaptedMembershipEvent) {
-          isClientAdapter[LEFT] =
-              ((UniversalMembershipListenerAdapter.AdaptedMembershipEvent) event).isClient();
+        if (event instanceof AdaptedMembershipEvent) {
+          isClientAdapter[LEFT] = ((AdaptedMembershipEvent) event).isClient();
         }
-        notify();
+        notifyAll();
       }
 
       @Override
       public synchronized void memberCrashed(MembershipEvent event) {
-        System.out
-            .println("[testServerEventsInLonerClient] memberCrashed >" + event.getMemberId() + "<");
         firedAdapterDuplicate[CRASHED] = firedAdapter[CRASHED];
         firedAdapter[CRASHED] = true;
         memberAdapter[CRASHED] = event.getDistributedMember();
         memberIdAdapter[CRASHED] = event.getMemberId();
-        if (event instanceof UniversalMembershipListenerAdapter.AdaptedMembershipEvent) {
-          isClientAdapter[CRASHED] =
-              ((UniversalMembershipListenerAdapter.AdaptedMembershipEvent) event).isClient();
+        if (event instanceof AdaptedMembershipEvent) {
+          isClientAdapter[CRASHED] = ((AdaptedMembershipEvent) event).isClient();
         }
-        notify();
+        notifyAll();
       }
     };
 
     ClientMembershipListener bridgeListener = new ClientMembershipListener() {
+      @Override
       public synchronized void memberJoined(ClientMembershipEvent event) {
         firedBridgeDuplicate[JOINED] = firedBridge[JOINED];
         firedBridge[JOINED] = true;
         memberBridge[JOINED] = event.getMember();
         memberIdBridge[JOINED] = event.getMemberId();
         isClientBridge[JOINED] = event.isClient();
-        notify();
+        notifyAll();
       }
 
+      @Override
       public synchronized void memberLeft(ClientMembershipEvent event) {
         firedBridgeDuplicate[LEFT] = firedBridge[LEFT];
         firedBridge[LEFT] = true;
         memberBridge[LEFT] = event.getMember();
         memberIdBridge[LEFT] = event.getMemberId();
         isClientBridge[LEFT] = event.isClient();
-        notify();
+        notifyAll();
       }
 
+      @Override
       public synchronized void memberCrashed(ClientMembershipEvent event) {
         firedBridgeDuplicate[CRASHED] = firedBridge[CRASHED];
         firedBridge[CRASHED] = true;
         memberBridge[CRASHED] = event.getMember();
         memberIdBridge[CRASHED] = event.getMemberId();
         isClientBridge[CRASHED] = event.isClient();
-        notify();
+        notifyAll();
       }
     };
 
-    final Host host = Host.getHost(0);
-    final VM vm0 = host.getVM(0);
-    final String name = this.getUniqueName();
-    final int[] ports = new int[] {AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET)};
-    assertTrue(ports[0] != 0);
+    Host host = Host.getHost(0);
+    VM vm0 = host.getVM(0);
+    String name = getUniqueName();
+    int[] ports = new int[] {getRandomAvailablePort(SOCKET)};
+    assertThat(ports[0] != 0).isTrue();
 
-    System.out.println("[testServerEventsInLonerClient] create loner bridge client");
     Properties config = new Properties();
     config.put(MCAST_PORT, "0");
     config.put(LOCATORS, "");
-    // config.put(LOG_LEVEL, "fine");
     config.setProperty(ENABLE_NETWORK_PARTITION_DETECTION, "false");
     getSystem(config);
 
-    System.out.println("[testServerEventsInLonerClient] create system bridge client");
-    getSystem();
-
     // register the bridge listener
     ClientMembership.registerClientMembershipListener(bridgeListener);
 
-    // adapter should've self-registered w/ BridgeMembership
-
-    // String clientMemberId = getMemberId();
-    // DistributedMember clientMember = getDistributedMember();
-
-    // create BridgeServer in vm0...
+    // create CacheServer in vm0...
     SerializableCallable createBridgeServer = new SerializableCallable("Create BridgeServer") {
       @Override
       public Object call() {
-        System.out.println("[testServerEventsInLonerClient] Create BridgeServer");
         getSystem();
         AttributesFactory factory = new AttributesFactory();
         factory.setScope(Scope.LOCAL);
         Region region = createRegion(name, factory.create());
-        assertNotNull(region);
-        assertNotNull(getRootRegion().getSubregion(name));
+        assertThat(region).isNotNull();
+        assertThat(getRootRegion().getSubregion(name)).isNotNull();
+
         try {
-          testServerEventsInLonerClient_port = startBridgeServer(ports[0]);
+          serverPort = startBridgeServer(ports[0]);
         } catch (IOException e) {
-          getLogWriter().error(e);
-          fail(e.getMessage());
+          throw new AssertionError(e);
         }
+
         return basicGetSystem().getDistributedMember();
       }
     };
 
-    DistributedMember serverMember = (DistributedMember) vm0.invoke(createBridgeServer);
-    String serverMemberId = serverMember.getId();
+    vm0.invoke(createBridgeServer);
 
     // gather details for later creation of pool...
-    assertEquals(ports[0], (int) vm0.invoke("getServerPort",
-        () -> UniversalMembershipListenerAdapterDUnitTest.getTestServerEventsInLonerClient_port()));
-
-    System.out.println("[testServerEventsInLonerClient] ports[0]=" + ports[0]);
-    System.out.println("[testServerEventsInLonerClient] serverMemberId=" + serverMemberId);
-    System.out.println("[testServerEventsInLonerClient] serverMember=" + serverMember);
+    assertThat((int) vm0.invoke("getServerPort", () -> serverPort)).isEqualTo(ports[0]);
 
     // create region which connects to bridge server
     AttributesFactory factory = new AttributesFactory();
     factory.setScope(Scope.LOCAL);
-    ClientServerTestCase.configureConnectionPool(factory, NetworkUtils.getServerHostName(host),
-        ports, false, -1, -1, null);
+    configureConnectionPool(factory, getServerHostName(host), ports, false, -1, -1, null);
     createRegion(name, factory.create());
-    assertNotNull(getRootRegion().getSubregion(name));
-
-    Awaitility.await("wait for join").atMost(ASYNC_EVENT_WAIT_MILLIS, TimeUnit.MILLISECONDS)
-        .until(() -> {
-          synchronized (adapter) {
-            return firedAdapter[JOINED];
-          }
-        });
-    Awaitility.await("wait for join").atMost(ASYNC_EVENT_WAIT_MILLIS, TimeUnit.MILLISECONDS)
-        .until(() -> {
-          synchronized (bridgeListener) {
-            return firedBridge[JOINED];
-          }
-        });
-
-    System.out.println("[testServerEventsInLonerClient] assert client detected server join");
+    assertThat(getRootRegion().getSubregion(name)).isNotNull();
+
+    await("wait for join").atMost(ASYNC_EVENT_WAIT_MILLIS, MILLISECONDS).until(() -> {
+      synchronized (adapter) {
+        return firedAdapter[JOINED];
+      }
+    });
+    await("wait for join").atMost(ASYNC_EVENT_WAIT_MILLIS, MILLISECONDS).until(() -> {
+      synchronized (bridgeListener) {
+        return firedBridge[JOINED];
+      }
+    });
 
     assertArrayFalse(firedAdapterDuplicate);
     assertArrayFalse(firedBridgeDuplicate);
 
-    assertTrue(firedBridge[JOINED]);
-    assertNotNull(memberBridge[JOINED]);
-    assertNotNull(memberIdBridge[JOINED]);
-    assertFalse(isClientBridge[JOINED]);
-    assertFalse(firedBridge[LEFT]);
-    assertNull(memberBridge[LEFT]);
-    assertNull(memberIdBridge[LEFT]);
-    assertFalse(isClientBridge[LEFT]);
-    assertFalse(firedBridge[CRASHED]);
-    assertNull(memberBridge[CRASHED]);
-    assertNull(memberIdBridge[CRASHED]);
-    assertFalse(isClientBridge[CRASHED]);
+    assertThat(firedBridge[JOINED]).isTrue();
+    assertThat(memberBridge[JOINED]).isNotNull();
+    assertThat(memberIdBridge[JOINED]).isNotNull();
+    assertThat(isClientBridge[JOINED]).isFalse();
+    assertThat(firedBridge[LEFT]).isFalse();
+    assertThat(memberBridge[LEFT]).isNull();
+    assertThat(memberIdBridge[LEFT]).isNull();
+    assertThat(isClientBridge[LEFT]).isFalse();
+    assertThat(firedBridge[CRASHED]).isFalse();
+    assertThat(memberBridge[CRASHED]).isNull();
+    assertThat(memberIdBridge[CRASHED]).isNull();
+    assertThat(isClientBridge[CRASHED]).isFalse();
+
     resetArraysForTesting(firedBridge, memberBridge, memberIdBridge, isClientBridge);
 
-    assertTrue(firedAdapter[JOINED]);
-    assertNotNull(memberIdAdapter[JOINED]);
-    assertFalse(isClientAdapter[JOINED]);
-    assertFalse(firedAdapter[LEFT]);
-    assertNull(memberAdapter[LEFT]);
-    assertNull(memberIdAdapter[LEFT]);
-    assertFalse(isClientAdapter[LEFT]);
-    assertFalse(firedAdapter[CRASHED]);
-    assertNull(memberAdapter[CRASHED]);
-    assertNull(memberIdAdapter[CRASHED]);
-    assertFalse(isClientAdapter[CRASHED]);
+    assertThat(firedAdapter[JOINED]).isTrue();
+    assertThat(memberIdAdapter[JOINED]).isNotNull();
+    assertThat(isClientAdapter[JOINED]).isFalse();
+    assertThat(firedAdapter[LEFT]).isFalse();
+    assertThat(memberAdapter[LEFT]).isNull();
+    assertThat(memberIdAdapter[LEFT]).isNull();
+    assertThat(isClientAdapter[LEFT]).isFalse();
+    assertThat(firedAdapter[CRASHED]).isFalse();
+    assertThat(memberAdapter[CRASHED]).isNull();
+    assertThat(memberIdAdapter[CRASHED]).isNull();
+    assertThat(isClientAdapter[CRASHED]).isFalse();
+
     resetArraysForTesting(firedAdapter, memberAdapter, memberIdAdapter, isClientAdapter);
 
-    System.out.println("[testServerEventsInLonerClient] wait for client to fully connect");
-    final String pl = getRootRegion().getSubregion(name).getAttributes().getPoolName();
-    PoolImpl pi = (PoolImpl) PoolManager.find(pl);
-    waitForClientToFullyConnect(pi);
-
-    String expected = "java.io.IOException";
-    String addExpected = "<ExpectedException action=add>" + expected + "</ExpectedException>";
-    String removeExpected = "<ExpectedException action=remove>" + expected + "</ExpectedException>";
-
-    String expected2 = "java.net.ConnectException";
-    String addExpected2 = "<ExpectedException action=add>" + expected2 + "</ExpectedException>";
-    String removeExpected2 =
-        "<ExpectedException action=remove>" + expected2 + "</ExpectedException>";
-
-    // LogWriter bgexecLogger =
-    // new LocalLogWriter(LocalLogWriter.ALL_LEVEL, System.out);
-    // bgexecLogger.info(addExpected);
-    // bgexecLogger.info(addExpected2);
-    LogWriter lw = getSystem().getLogWriter();
-    lw.info(addExpected);
-    lw.info(addExpected2);
-
-    try {
-      vm0.invoke(new SerializableRunnable("Disconnect bridge server") {
-        public void run() {
-          System.out.println("[testServerEventsInLonerClient] disconnect bridge server");
-          closeCache();
-        }
-      });
-
-      Awaitility.await("wait for server to leave")
-          .atMost(ASYNC_EVENT_WAIT_MILLIS, TimeUnit.MILLISECONDS).until(() -> {
-            synchronized (adapter) {
-              return firedAdapter[LEFT] || firedAdapter[CRASHED];
-            }
-          });
-      Awaitility.await("wait for server to leave")
-          .atMost(ASYNC_EVENT_WAIT_MILLIS, TimeUnit.MILLISECONDS).until(() -> {
-            synchronized (bridgeListener) {
-              return firedBridge[LEFT] || firedBridge[CRASHED];
-            }
-          });
-
-    } finally {
-      // bgexecLogger.info(removeExpected);
-      // bgexecLogger.info(removeExpected2);
-      lw.info(removeExpected);
-      lw.info(removeExpected2);
-    }
+    String poolName = getRootRegion().getSubregion(name).getAttributes().getPoolName();
+    PoolImpl pool = (PoolImpl) PoolManager.find(poolName);
+    waitForClientToFullyConnect(pool);
+
+    addIgnoredException(IOException.class.getName());
+    addIgnoredException(ConnectException.class.getName());
+
+    vm0.invoke(new SerializableRunnable("Disconnect bridge server") {
+      @Override
+      public void run() {
+        closeCache();
+      }
+    });
 
-    System.out.println("[testServerEventsInLonerClient] assert client detected server crashed");
+    await("wait for server to leave").atMost(ASYNC_EVENT_WAIT_MILLIS, MILLISECONDS).until(() -> {
+      synchronized (adapter) {
+        return firedAdapter[LEFT] || firedAdapter[CRASHED];
+      }
+    });
+    await("wait for server to leave").atMost(ASYNC_EVENT_WAIT_MILLIS, MILLISECONDS).until(() -> {
+      synchronized (bridgeListener) {
+        return firedBridge[LEFT] || firedBridge[CRASHED];
+      }
+    });
+
+    // done with IgnoredExceptions
 
     assertArrayFalse(firedAdapterDuplicate);
     assertArrayFalse(firedBridgeDuplicate);
 
-    assertFalse(firedBridge[JOINED]);
-    assertNull(memberIdBridge[JOINED]);
-    assertNull(memberBridge[JOINED]);
-    assertFalse(isClientBridge[JOINED]);
-    assertFalse(
-        "Please update testServerEventsInLonerClient to handle memberLeft for BridgeServer.",
-        firedBridge[LEFT]);
-    assertNull(memberBridge[LEFT]);
-    assertNull(memberIdBridge[LEFT]);
-    assertFalse(isClientBridge[LEFT]);
-    assertTrue(firedBridge[CRASHED]);
-    assertNotNull(memberBridge[CRASHED]);
-    assertNotNull(memberIdBridge[CRASHED]);
-    assertFalse(isClientBridge[CRASHED]);
+    assertThat(firedBridge[JOINED]).isFalse();
+    assertThat(memberIdBridge[JOINED]).isNull();
+    assertThat(memberBridge[JOINED]).isNull();
+    assertThat(isClientBridge[JOINED]).isFalse();
+    assertThat(firedBridge[LEFT]).isFalse();
+    assertThat(memberBridge[LEFT]).isNull();
+    assertThat(memberIdBridge[LEFT]).isNull();
+    assertThat(isClientBridge[LEFT]).isFalse();
+    assertThat(firedBridge[CRASHED]).isTrue();
+    assertThat(memberBridge[CRASHED]).isNotNull();
+    assertThat(memberIdBridge[CRASHED]).isNotNull();
+    assertThat(isClientBridge[CRASHED]).isFalse();
+
     resetArraysForTesting(firedBridge, memberBridge, memberIdBridge, isClientBridge);
 
-    assertFalse(firedAdapter[JOINED]);
-    assertNull(memberAdapter[JOINED]);
-    assertNull(memberIdAdapter[JOINED]);
-    assertFalse(isClientAdapter[JOINED]);
-    assertFalse("Please update testServerEventsInLonerClient to handle BridgeServer LEFT",
-        firedAdapter[LEFT]);
-    assertNull(memberAdapter[LEFT]);
-    assertNull(memberIdAdapter[LEFT]);
-    assertFalse(isClientAdapter[LEFT]);
+    assertThat(firedAdapter[JOINED]).isFalse();
+    assertThat(memberAdapter[JOINED]).isNull();
+    assertThat(memberIdAdapter[JOINED]).isNull();
+    assertThat(isClientAdapter[JOINED]).isFalse();
+    assertThat(firedAdapter[LEFT]).isFalse();
+    assertThat(memberAdapter[LEFT]).isNull();
+    assertThat(memberIdAdapter[LEFT]).isNull();
+    assertThat(isClientAdapter[LEFT]).isFalse();
     // CRASHED fired by Bridge listener
-    assertTrue(firedAdapter[CRASHED]);
-    assertNotNull(memberAdapter[CRASHED]);
-    assertNotNull(memberIdAdapter[CRASHED]);
-    assertFalse(isClientAdapter[CRASHED]);
+    assertThat(firedAdapter[CRASHED]).isTrue();
+    assertThat(memberAdapter[CRASHED]).isNotNull();
+    assertThat(memberIdAdapter[CRASHED]).isNotNull();
+    assertThat(isClientAdapter[CRASHED]).isFalse();
+
     resetArraysForTesting(firedAdapter, memberAdapter, memberIdAdapter, isClientAdapter);
 
     // reconnect bridge client to test for crashed event
-    serverMember = (DistributedMember) vm0.invoke(createBridgeServer);
-    serverMemberId = serverMember.getId();
+    vm0.invoke(createBridgeServer);
 
     // gather details for later creation of pool...
-    assertEquals(ports[0], (int) vm0.invoke(
-        () -> UniversalMembershipListenerAdapterDUnitTest.getTestServerEventsInLonerClient_port()));
-    serverMember =
-        vm0.invoke(() -> UniversalMembershipListenerAdapterDUnitTest.getDistributedMember());
-
-    System.out.println("[testServerEventsInLonerClient] ports[0]=" + ports[0]);
-    System.out.println("[testServerEventsInLonerClient] serverMemberId=" + serverMemberId);
-    System.out.println("[testServerEventsInLonerClient] serverMember=" + serverMember);
-
-    Awaitility.await("wait for join").atMost(ASYNC_EVENT_WAIT_MILLIS, TimeUnit.MILLISECONDS)
-        .until(() -> {
-          synchronized (adapter) {
-            return firedAdapter[JOINED];
-          }
-        });
-    Awaitility.await("wait for join").atMost(ASYNC_EVENT_WAIT_MILLIS, TimeUnit.MILLISECONDS)
-        .until(() -> {
-          synchronized (bridgeListener) {
-            return firedBridge[JOINED];
-          }
-        });
-
-    System.out.println("[testServerEventsInLonerClient] assert client detected server re-join");
+    assertThat((int) vm0.invoke(() -> serverPort)).isEqualTo(ports[0]);
+
+    await("wait for join").atMost(ASYNC_EVENT_WAIT_MILLIS, MILLISECONDS).until(() -> {
+      synchronized (adapter) {
+        return firedAdapter[JOINED];
+      }
+    });
+    await("wait for join").atMost(ASYNC_EVENT_WAIT_MILLIS, MILLISECONDS).until(() -> {
+      synchronized (bridgeListener) {
+        return firedBridge[JOINED];
+      }
+    });
 
     assertArrayFalse(firedAdapterDuplicate);
     assertArrayFalse(firedBridgeDuplicate);
 
-    assertTrue(firedBridge[JOINED]);
-    assertNotNull(memberBridge[JOINED]);
-    assertNotNull(memberIdBridge[JOINED]);
-    assertFalse(isClientBridge[JOINED]);
-    assertFalse(firedBridge[LEFT]);
-    assertNull(memberBridge[LEFT]);
-    assertNull(memberIdBridge[LEFT]);
-    assertFalse(isClientBridge[LEFT]);
-    assertFalse(firedBridge[CRASHED]);
-    assertNull(memberBridge[CRASHED]);
-    assertNull(memberIdBridge[CRASHED]);
-    assertFalse(isClientBridge[CRASHED]);
+    assertThat(firedBridge[JOINED]).isTrue();
+    assertThat(memberBridge[JOINED]).isNotNull();
+    assertThat(memberIdBridge[JOINED]).isNotNull();
+    assertThat(isClientBridge[JOINED]).isFalse();
+    assertThat(firedBridge[LEFT]).isFalse();
+    assertThat(memberBridge[LEFT]).isNull();
+    assertThat(memberIdBridge[LEFT]).isNull();
+    assertThat(isClientBridge[LEFT]).isFalse();
+    assertThat(firedBridge[CRASHED]).isFalse();
+    assertThat(memberBridge[CRASHED]).isNull();
+    assertThat(memberIdBridge[CRASHED]).isNull();
+    assertThat(isClientBridge[CRASHED]).isFalse();
+
     resetArraysForTesting(firedBridge, memberBridge, memberIdBridge, isClientBridge);
 
-    assertTrue(firedAdapter[JOINED]);
-    assertNotNull(memberAdapter[JOINED]);
-    assertNotNull(memberIdAdapter[JOINED]);
-    assertFalse(isClientAdapter[JOINED]);
-    assertFalse(firedAdapter[LEFT]);
-    assertNull(memberAdapter[LEFT]);
-    assertNull(memberIdAdapter[LEFT]);
-    assertFalse(isClientAdapter[LEFT]);
-    assertFalse(firedAdapter[CRASHED]);
-    assertNull(memberAdapter[CRASHED]);
-    assertNull(memberIdAdapter[CRASHED]);
-    assertFalse(isClientAdapter[CRASHED]);
+    assertThat(firedAdapter[JOINED]).isTrue();
+    assertThat(memberAdapter[JOINED]).isNotNull();
+    assertThat(memberIdAdapter[JOINED]).isNotNull();
+    assertThat(isClientAdapter[JOINED]).isFalse();
+    assertThat(firedAdapter[LEFT]).isFalse();
+    assertThat(memberAdapter[LEFT]).isNull();
+    assertThat(memberIdAdapter[LEFT]).isNull();
+    assertThat(isClientAdapter[LEFT]).isFalse();
+    assertThat(firedAdapter[CRASHED]).isFalse();
+    assertThat(memberAdapter[CRASHED]).isNull();
+    assertThat(memberIdAdapter[CRASHED]).isNull();
+    assertThat(isClientAdapter[CRASHED]).isFalse();
+
     resetArraysForTesting(firedAdapter, memberAdapter, memberIdAdapter, isClientAdapter);
   }
 
-  // Simple DistributedMember implementation
-  static class TestDistributedMember implements DistributedMember {
+  private static InternalCache getInternalCache() {
+    InternalCache cache = (InternalCache) CacheFactory.getAnyInstance();
+    assertThat(cache).isNotNull();
+    return cache;
+  }
+
+  private static class MembershipNotification implements Serializable {
+
+    private final AtomicBoolean notified = new AtomicBoolean();
+    private final AtomicReference<DistributedMember> member = new AtomicReference<>();
+    private final AtomicReference<String> memberId = new AtomicReference<>();
+    private final AtomicBoolean client = new AtomicBoolean();
+
+    void notify(final MembershipEvent event) {
+      validateNotNotified();
+
+      notified.set(true);
+      member.set(event.getDistributedMember());
+      memberId.set(event.getMemberId());
+    }
+
+    void notify(final AdaptedMembershipEvent event) {
+      validateNotNotified();
+
+      notified.set(true);
+      member.set(event.getDistributedMember());
+      memberId.set(event.getMemberId());
+      client.set(event.isClient());
+    }
+
+    void notify(final ClientMembershipEvent event) {
+      validateNotNotified();
+
+      notified.set(true);
+      member.set(event.getMember());
+      memberId.set(event.getMemberId());
+      client.set(event.isClient());
+    }
+
+    void reset() {
+      notified.set(false);
+      member.set(null);
+      memberId.set(null);
+      client.set(false);
+    }
+
+    void awaitNotification(final long timeout, final TimeUnit unit) {
+      await().atMost(timeout, unit).until(() -> notified.get());
+    }
+
+    void awaitWithoutNotification(final long timeout, final TimeUnit unit) {
+      try {
+        awaitNotification(timeout, unit);
+      } catch (ConditionTimeoutException expected) {
+        // do nothing
+      }
+    }
+
+    void validate(DistributedMember clientJoined) {
+      assertThat(notified.get()).isTrue();
+      assertThat(member.get()).isEqualTo(clientJoined);
+      assertThat(memberId.get()).isEqualTo(clientJoined.getId());
+    }
+
+    void validateNotNotified() {
+      assertThat(notified.get()).isFalse();
+      assertThat(member.get()).isNull();
+      assertThat(memberId.get()).isNull();
+      assertThat(client.get()).isFalse();
+    }
+  }
+
+  private static class FakeDistributedMember implements DistributedMember {
 
-    private final String host;
+    private String host;
 
-    public TestDistributedMember(String host) {
+    FakeDistributedMember(String host) {
       this.host = host;
     }
 
+    @Override
     public String getName() {
       return "";
     }
 
+    @Override
     public String getHost() {
       return this.host;
     }
 
-    public Set getRoles() {
-      return new HashSet();
+    @Override
+    public Set<Role> getRoles() {
+      return Collections.emptySet();
     }
 
+    @Override
     public int getProcessId() {
       return 0;
     }
 
+    @Override
     public String getId() {
       return this.host;
     }
 
+    @Override
     public int compareTo(DistributedMember o) {
-      if ((o == null) || !(o instanceof TestDistributedMember)) {
+      if ((o == null) || !(o instanceof FakeDistributedMember)) {
         throw new InternalGemFireException("Invalidly comparing TestDistributedMember to " + o);
       }
 
-      TestDistributedMember tds = (TestDistributedMember) o;
-      return getHost().compareTo(tds.getHost());
+      FakeDistributedMember fakeDistributedMember = (FakeDistributedMember) o;
+      return getHost().compareTo(fakeDistributedMember.getHost());
     }
 
     @Override
     public boolean equals(Object obj) {
-      if ((obj == null) || !(obj instanceof TestDistributedMember)) {
-        return false;
-      }
-      return compareTo((TestDistributedMember) obj) == 0;
+      return (obj != null) && obj instanceof FakeDistributedMember
+          && compareTo((FakeDistributedMember) obj) == 0;
     }
 
     @Override
@@ -2171,13 +1744,14 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
       return getHost().hashCode();
     }
 
+    @Override
     public DurableClientAttributes getDurableClientAttributes() {
       return null;
     }
 
+    @Override
     public List<String> getGroups() {
       return Collections.emptyList();
     }
   }
-
 }
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/TypedJsonPdxIntegrationTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/TypedJsonPdxIntegrationTest.java
index 07289d2..e053fa1 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/TypedJsonPdxIntegrationTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/TypedJsonPdxIntegrationTest.java
@@ -1,18 +1,16 @@
 /*
- * 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
+ * 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
+ * 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.
+ * 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.management.internal.cli.json;
 
@@ -36,7 +34,8 @@ import org.apache.geode.pdx.internal.PdxInstanceFactoryImpl;
 import org.apache.geode.test.junit.categories.IntegrationTest;
 
 /**
- * Integration tests for {@link TypedJson}.<p>
+ * Integration tests for {@link TypedJson}.
+ * <p>
  *
  * TODO: add actual assertions
  */
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/TypedJsonTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/TypedJsonTest.java
index 48baa7e..de74f82 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/TypedJsonTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/TypedJsonTest.java
@@ -32,7 +32,8 @@ import org.junit.experimental.categories.Category;
 import org.apache.geode.test.junit.categories.UnitTest;
 
 /**
- * Extracted from {@link TypedJsonPdxIntegrationTest}.<p>
+ * Extracted from {@link TypedJsonPdxIntegrationTest}.
+ * <p>
  *
  * TODO: add actual assertions
  */

-- 
To stop receiving notification emails like this one, please contact
"commits@geode.apache.org" <co...@geode.apache.org>.