You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by bs...@apache.org on 2020/01/30 23:31:27 UTC

[geode] 01/04: GEODE-7742: move membership unit tests to geode-membership

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

bschuchardt pushed a commit to branch feature/GEODE-7742b
in repository https://gitbox.apache.org/repos/asf/geode.git

commit 12ebf4ec4fd8cf3b7187c9662561203ec6320e2a
Author: Bruce Schuchardt <bs...@pivotal.io>
AuthorDate: Thu Jan 30 13:01:45 2020 -0800

    GEODE-7742: move membership unit tests to geode-membership
    
    Moving health monitor test to geode-membership
---
 .../membership/GMSMembershipViewJUnitTest.java     |   2 +-
 .../membership/gms/GMSMembershipJUnitTest.java     |   2 +-
 .../gms/fd/GMSHealthMonitorJUnitTest.java          |  94 +++++++-----------
 .../gms/messenger/GMSEncryptJUnitTest.java         |   2 +-
 .../gms/messenger/GMSQuorumCheckerJUnitTest.java   |   4 +-
 ...pAddressUtil.java => MemberIdentifierUtil.java} |   2 +-
 ...sNoOp.java => DefaultMembershipStatistics.java} | 105 +++++++++++++--------
 .../membership/gms/MembershipBuilderImpl.java      |   2 +-
 8 files changed, 108 insertions(+), 105 deletions(-)

diff --git a/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/GMSMembershipViewJUnitTest.java b/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/GMSMembershipViewJUnitTest.java
index 006ee53..65e66b9 100755
--- a/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/GMSMembershipViewJUnitTest.java
+++ b/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/GMSMembershipViewJUnitTest.java
@@ -14,7 +14,7 @@
  */
 package org.apache.geode.distributed.internal.membership;
 
-import static org.apache.geode.distributed.internal.membership.gms.util.MembershipAddressUtil.createMemberID;
+import static org.apache.geode.distributed.internal.membership.gms.util.MemberIdentifierUtil.createMemberID;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
diff --git a/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/GMSMembershipJUnitTest.java b/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/GMSMembershipJUnitTest.java
index 8e3f614..428653f 100644
--- a/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/GMSMembershipJUnitTest.java
+++ b/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/GMSMembershipJUnitTest.java
@@ -14,7 +14,7 @@
  */
 package org.apache.geode.distributed.internal.membership.gms;
 
-import static org.apache.geode.distributed.internal.membership.gms.util.MembershipAddressUtil.createMemberID;
+import static org.apache.geode.distributed.internal.membership.gms.util.MemberIdentifierUtil.createMemberID;
 import static org.apache.geode.internal.serialization.DataSerializableFixedID.HIGH_PRIORITY_ACKED_MESSAGE;
 import static org.apache.geode.test.awaitility.GeodeAwaitility.await;
 import static org.assertj.core.api.Assertions.assertThat;
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/fd/GMSHealthMonitorJUnitTest.java b/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/fd/GMSHealthMonitorJUnitTest.java
similarity index 92%
rename from geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/fd/GMSHealthMonitorJUnitTest.java
rename to geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/fd/GMSHealthMonitorJUnitTest.java
index 6ddf75b..9b8e7a3 100644
--- a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/fd/GMSHealthMonitorJUnitTest.java
+++ b/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/fd/GMSHealthMonitorJUnitTest.java
@@ -14,15 +14,6 @@
  */
 package org.apache.geode.distributed.internal.membership.gms.fd;
 
-import static org.apache.geode.distributed.ConfigurationProperties.ACK_SEVERE_ALERT_THRESHOLD;
-import static org.apache.geode.distributed.ConfigurationProperties.ACK_WAIT_THRESHOLD;
-import static org.apache.geode.distributed.ConfigurationProperties.DISABLE_TCP;
-import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
-import static org.apache.geode.distributed.ConfigurationProperties.LOG_FILE;
-import static org.apache.geode.distributed.ConfigurationProperties.LOG_LEVEL;
-import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
-import static org.apache.geode.distributed.ConfigurationProperties.MCAST_TTL;
-import static org.apache.geode.distributed.ConfigurationProperties.MEMBER_TIMEOUT;
 import static org.apache.geode.test.awaitility.GeodeAwaitility.await;
 import static org.apache.geode.test.awaitility.GeodeAwaitility.getTimeout;
 import static org.assertj.core.api.Assertions.assertThat;
@@ -52,7 +43,6 @@ import java.net.UnknownHostException;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Properties;
 import java.util.Set;
 import java.util.Timer;
 import java.util.concurrent.locks.Condition;
@@ -67,22 +57,15 @@ import org.junit.experimental.categories.Category;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
 
-import org.apache.geode.DataSerializer;
-import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DistributionConfig;
-import org.apache.geode.distributed.internal.DistributionConfigImpl;
-import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionStats;
-import org.apache.geode.distributed.internal.InternalDistributedSystem;
-import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
-import org.apache.geode.distributed.internal.membership.adapter.ServiceConfig;
 import org.apache.geode.distributed.internal.membership.api.MemberData;
 import org.apache.geode.distributed.internal.membership.api.MemberDataBuilder;
 import org.apache.geode.distributed.internal.membership.api.MemberIdentifier;
 import org.apache.geode.distributed.internal.membership.api.MemberIdentifierFactoryImpl;
+import org.apache.geode.distributed.internal.membership.api.MemberIdentifierImpl;
 import org.apache.geode.distributed.internal.membership.api.MemberStartupException;
 import org.apache.geode.distributed.internal.membership.api.MembershipConfig;
 import org.apache.geode.distributed.internal.membership.gms.GMSMembershipView;
+import org.apache.geode.distributed.internal.membership.gms.DefaultMembershipStatistics;
 import org.apache.geode.distributed.internal.membership.gms.Services;
 import org.apache.geode.distributed.internal.membership.gms.Services.Stopper;
 import org.apache.geode.distributed.internal.membership.gms.fd.GMSHealthMonitor.ClientSocketHandler;
@@ -94,11 +77,11 @@ import org.apache.geode.distributed.internal.membership.gms.messages.HeartbeatMe
 import org.apache.geode.distributed.internal.membership.gms.messages.HeartbeatRequestMessage;
 import org.apache.geode.distributed.internal.membership.gms.messages.SuspectMembersMessage;
 import org.apache.geode.distributed.internal.membership.gms.messages.SuspectRequest;
-import org.apache.geode.internal.HeapDataOutputStream;
-import org.apache.geode.internal.InternalDataSerializer;
-import org.apache.geode.internal.net.SocketCreatorFactory;
-import org.apache.geode.internal.security.SecurableCommunicationChannel;
+import org.apache.geode.distributed.internal.membership.gms.util.MemberIdentifierUtil;
+import org.apache.geode.distributed.internal.tcpserver.TcpSocketCreatorImpl;
+import org.apache.geode.internal.serialization.BufferDataOutputStream;
 import org.apache.geode.internal.serialization.Version;
+import org.apache.geode.internal.serialization.internal.DSFIDSerializerImpl;
 import org.apache.geode.test.junit.categories.MembershipTest;
 
 @Category({MembershipTest.class})
@@ -106,50 +89,49 @@ public class GMSHealthMonitorJUnitTest {
 
   private Services services;
   private MembershipConfig mockConfig;
-  private DistributionConfig mockDistConfig;
   private List<MemberIdentifier> mockMembers;
   private Messenger messenger;
   private JoinLeave joinLeave;
   private GMSHealthMonitor gmsHealthMonitor;
   private Manager manager;
-  private long statsId = 123;
   final long memberTimeout = 1000l;
   private int[] portRange = new int[] {0, 65535};
   private boolean useGMSHealthMonitorTestClass = false;
   private boolean simulateHeartbeatInGMSHealthMonitorTestClass = true;
   private boolean allowSelfCheckToSucceed = true;
   private final int myAddressIndex = 3;
+  private DSFIDSerializerImpl dsfidSerializer;
 
   @Before
   public void initMocks() throws MemberStartupException {
     // ensure that Geode's serialization and version are initialized
     Version currentVersion = Version.CURRENT;
-    InternalDataSerializer.getDSFIDSerializer();
+    dsfidSerializer = new DSFIDSerializerImpl();
+    Services.registerSerializables(dsfidSerializer);
 
     // System.setProperty("gemfire.bind-address", "localhost");
-    mockDistConfig = mock(DistributionConfig.class);
-    mockConfig = mock(ServiceConfig.class);
+    mockConfig = mock(MembershipConfig.class);
     messenger = mock(Messenger.class);
     joinLeave = mock(JoinLeave.class);
     manager = mock(Manager.class);
     services = mock(Services.class);
     Stopper stopper = mock(Stopper.class);
 
-    Properties nonDefault = new Properties();
-    nonDefault.put(ACK_WAIT_THRESHOLD, "1");
-    nonDefault.put(ACK_SEVERE_ALERT_THRESHOLD, "10");
-    nonDefault.put(DISABLE_TCP, "true");
-    nonDefault.put(MCAST_PORT, "0");
-    nonDefault.put(MCAST_TTL, "0");
-    nonDefault.put(LOG_FILE, "");
-    nonDefault.put(LOG_LEVEL, "fine");
-    nonDefault.put(MEMBER_TIMEOUT, "" + memberTimeout);
-    nonDefault.put(LOCATORS, "localhost[10344]");
-    DistributionManager dm = mock(DistributionManager.class);
-    SocketCreatorFactory.setDistributionConfig(new DistributionConfigImpl(new Properties()));
-    InternalDistributedSystem system = new InternalDistributedSystem.BuilderForTesting(nonDefault)
-        .setDistributionManager(dm)
-        .build();
+    // nonDefault.put(ACK_WAIT_THRESHOLD, "1");
+    // nonDefault.put(ACK_SEVERE_ALERT_THRESHOLD, "10");
+    // nonDefault.put(DISABLE_TCP, "true");
+    // nonDefault.put(MCAST_PORT, "0");
+    // nonDefault.put(MCAST_TTL, "0");
+    // nonDefault.put(LOG_FILE, "");
+    // nonDefault.put(LOG_LEVEL, "fine");
+    // nonDefault.put(MEMBER_TIMEOUT, "" + memberTimeout);
+    // nonDefault.put(LOCATORS, "localhost[10344]");
+    // DistributionManager dm = mock(DistributionManager.class);
+    // SocketCreatorFactory.setDistributionConfig(new DistributionConfigImpl(new Properties()));
+    // InternalDistributedSystem system = new
+    // InternalDistributedSystem.BuilderForTesting(nonDefault)
+    // .setDistributionManager(dm)
+    // .build();
 
     when(mockConfig.getMemberTimeout()).thenReturn(memberTimeout);
     when(mockConfig.getMembershipPortRange()).thenReturn(portRange);
@@ -158,7 +140,7 @@ public class GMSHealthMonitorJUnitTest {
     when(services.getJoinLeave()).thenReturn(joinLeave);
     when(services.getCancelCriterion()).thenReturn(stopper);
     when(services.getManager()).thenReturn(manager);
-    when(services.getStatistics()).thenReturn(new DistributionStats(system, statsId));
+    when(services.getStatistics()).thenReturn(new DefaultMembershipStatistics());
     when(services.getTimer()).thenReturn(new Timer("Geode Membership Timer", true));
     when(stopper.isCancelInProgress()).thenReturn(false);
     when(services.getMemberFactory()).thenReturn(new MemberIdentifierFactoryImpl());
@@ -166,10 +148,10 @@ public class GMSHealthMonitorJUnitTest {
     if (mockMembers == null) {
       mockMembers = new ArrayList<>();
       for (int i = 0; i < 7; i++) {
-        MemberIdentifier mbr = new InternalDistributedMember("localhost", 8888 + i);
+        MemberIdentifier mbr = MemberIdentifierUtil.createMemberID(8888 + i);
 
         if (i == 0 || i == 1) {
-          mbr.setVmKind(ClusterDistributionManager.LOCATOR_DM_TYPE);
+          mbr.setVmKind(MemberIdentifier.LOCATOR_DM_TYPE);
           mbr.setPreferredForCoordinator(true);
         }
         mockMembers.add(mbr);
@@ -185,21 +167,17 @@ public class GMSHealthMonitorJUnitTest {
   @After
   public void tearDown() {
     gmsHealthMonitor.stop();
-    SocketCreatorFactory.close();
     // System.getProperties().remove("gemfire.bind-address");
   }
 
   @Test
   public void testHMServiceStarted() throws Exception {
 
-    MemberIdentifier mbr =
-        new InternalDistributedMember("localhost", 12345);
+    MemberIdentifier mbr = MemberIdentifierUtil.createMemberID(12345);
     mbr.setVmViewId(1);
     when(messenger.getMemberID()).thenReturn(mbr);
     gmsHealthMonitor.started();
 
-    GMSMembershipView v = new GMSMembershipView(mbr, 1, mockMembers);
-
     gmsHealthMonitor.processMessage(new HeartbeatRequestMessage(mbr, 1));
     verify(messenger, atLeastOnce()).send(any(HeartbeatMessage.class));
     assertEquals(1, gmsHealthMonitor.getStats().getHeartbeatRequestsReceived());
@@ -612,7 +590,7 @@ public class GMSHealthMonitorJUnitTest {
       gmsHealthMonitor.setNextNeighbor(v, memberToCheck);
       assertNotEquals(memberToCheck, gmsHealthMonitor.getNextNeighbor());
 
-      ((InternalDistributedMember) mockMembers.get(0)).setVersionObjectForTest(Version.GEODE_1_3_0);
+      ((MemberIdentifierImpl) mockMembers.get(0)).setVersionObjectForTest(Version.GEODE_1_3_0);
       boolean retVal = gmsHealthMonitor.inlineCheckIfAvailable(mockMembers.get(0), v, true,
           memberToCheck, "Not responding");
 
@@ -627,14 +605,15 @@ public class GMSHealthMonitorJUnitTest {
   @Test
   public void testFinalCheckPassedMessageCanBeSerializedAndDeserialized()
       throws IOException, ClassNotFoundException {
-    HeapDataOutputStream heapDataOutputStream = new HeapDataOutputStream(500, Version.CURRENT);
+    BufferDataOutputStream BufferDataOutputStream =
+        new BufferDataOutputStream(500, Version.CURRENT);
     FinalCheckPassedMessage message =
         new FinalCheckPassedMessage(mockMembers.get(0), mockMembers.get(1));
-    DataSerializer.writeObject(message, heapDataOutputStream);
+    dsfidSerializer.getObjectSerializer().writeObject(message, BufferDataOutputStream);
     ByteArrayInputStream byteArrayInputStream =
-        new ByteArrayInputStream(heapDataOutputStream.toByteArray());
+        new ByteArrayInputStream(BufferDataOutputStream.toByteArray());
     DataInputStream dataInputStream = new DataInputStream(byteArrayInputStream);
-    message = DataSerializer.readObject(dataInputStream);
+    message = dsfidSerializer.getObjectDeserializer().readObject(dataInputStream);
     assertEquals(mockMembers.get(1), message.getSuspect());
   }
 
@@ -1022,8 +1001,7 @@ public class GMSHealthMonitorJUnitTest {
     public Set<MemberIdentifier> availabilityCheckedMembers = new HashSet<>();
 
     public GMSHealthMonitorTest() {
-      super(SocketCreatorFactory
-          .getSocketCreatorForComponent(SecurableCommunicationChannel.CLUSTER));
+      super(new TcpSocketCreatorImpl());
     }
 
     @Override
diff --git a/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/GMSEncryptJUnitTest.java b/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/GMSEncryptJUnitTest.java
index adee65f..e3226d6 100755
--- a/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/GMSEncryptJUnitTest.java
+++ b/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/GMSEncryptJUnitTest.java
@@ -14,7 +14,7 @@
  */
 package org.apache.geode.distributed.internal.membership.gms.messenger;
 
-import static org.apache.geode.distributed.internal.membership.gms.util.MembershipAddressUtil.createMemberID;
+import static org.apache.geode.distributed.internal.membership.gms.util.MemberIdentifierUtil.createMemberID;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
diff --git a/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/GMSQuorumCheckerJUnitTest.java b/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/GMSQuorumCheckerJUnitTest.java
index 783917d..e7c2a5c 100644
--- a/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/GMSQuorumCheckerJUnitTest.java
+++ b/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/GMSQuorumCheckerJUnitTest.java
@@ -41,7 +41,7 @@ import org.mockito.stubbing.Answer;
 
 import org.apache.geode.distributed.internal.membership.api.MemberIdentifier;
 import org.apache.geode.distributed.internal.membership.gms.GMSMembershipView;
-import org.apache.geode.distributed.internal.membership.gms.util.MembershipAddressUtil;
+import org.apache.geode.distributed.internal.membership.gms.util.MemberIdentifierUtil;
 import org.apache.geode.test.junit.categories.MembershipTest;
 
 @Category({MembershipTest.class})
@@ -55,7 +55,7 @@ public class GMSQuorumCheckerJUnitTest {
   public void initMocks() {
     mockMembers = new MemberIdentifier[12];
     for (int i = 0; i < mockMembers.length; i++) {
-      mockMembers[i] = MembershipAddressUtil.createMemberID(8888 + i);
+      mockMembers[i] = MemberIdentifierUtil.createMemberID(8888 + i);
     }
     channel = mock(JChannel.class);
     address = mock(JGAddress.class);
diff --git a/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/util/MembershipAddressUtil.java b/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/util/MemberIdentifierUtil.java
similarity index 98%
rename from geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/util/MembershipAddressUtil.java
rename to geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/util/MemberIdentifierUtil.java
index 975548c..e8f4aa2 100644
--- a/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/util/MembershipAddressUtil.java
+++ b/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/util/MemberIdentifierUtil.java
@@ -26,7 +26,7 @@ import org.apache.geode.distributed.internal.membership.api.MemberIdentifierFact
 import org.apache.geode.distributed.internal.membership.gms.GMSMemberData;
 import org.apache.geode.internal.serialization.Version;
 
-public class MembershipAddressUtil {
+public class MemberIdentifierUtil {
   public static MemberIdentifier createMemberID(short version, int viewId, long msb, long lsb)
       throws UnknownHostException {
     MemberData memberData = MemberDataBuilder.newBuilderForLocalHost("localhost")
diff --git a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/MembershipStatisticsNoOp.java b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/DefaultMembershipStatistics.java
similarity index 64%
rename from geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/MembershipStatisticsNoOp.java
rename to geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/DefaultMembershipStatistics.java
index 1971f8c..ef4ae72 100644
--- a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/MembershipStatisticsNoOp.java
+++ b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/DefaultMembershipStatistics.java
@@ -17,10 +17,35 @@ package org.apache.geode.distributed.internal.membership.gms;
 import org.apache.geode.distributed.internal.membership.api.MembershipStatistics;
 
 /**
- * MembeshipStatisticsNoOp is the default implementation of MembershipStatistics. Create
+ * DefaultMembeshipStatistics is the default implementation of MembershipStatistics. Create
  * and install your own if you want to record membership stats.
  */
-public class MembershipStatisticsNoOp implements MembershipStatistics {
+public class DefaultMembershipStatistics implements MembershipStatistics {
+  private long sentBytes;
+  private long ucastWriteBytes;
+  private long ucastReadBytes;
+  private long mcastWriteBytes;
+  private long mcastReadBytes;
+  private long ucastRetransmits;
+  private long mcastRetransmits;
+  private long mcastRetransmitRequests;
+  private long heartbeatRequestsSent;
+  private long heartbeatRequestsReceived;
+  private long heartbeatsSent;
+  private long heartbeatsReceived;
+  private long suspectsSent;
+  private long suspectsReceived;
+  private long finalCheckRequestsSent;
+  private long finalCheckRequestsReceived;
+  private long finalCheckResponsesSent;
+  private long finalCheckResponsesReceived;
+  private long tcpFinalCheckRequestsSent;
+  private long tcpFinalCheckRequestsReceived;
+  private long tcpFinalCheckResponsesSent;
+  private long tcpFinalCheckResponsesReceived;
+  private long udpFinalCheckRequestsSent;
+  private long udpFinalCheckResponsesReceived;
+
   @Override
   public long startMsgSerialization() {
     return 0;
@@ -63,7 +88,7 @@ public class MembershipStatisticsNoOp implements MembershipStatistics {
 
   @Override
   public void incSentBytes(final long bytes) {
-
+    sentBytes++;
   }
 
   @Override
@@ -78,186 +103,186 @@ public class MembershipStatisticsNoOp implements MembershipStatistics {
 
   @Override
   public void incUcastWriteBytes(final int bytesWritten) {
-
+    ucastWriteBytes++;
   }
 
   @Override
   public void incUcastReadBytes(final int amount) {
-
+    ucastReadBytes++;
   }
 
   @Override
   public void incMcastWriteBytes(final int bytesWritten) {
-
+    mcastWriteBytes++;
   }
 
   @Override
   public void incMcastReadBytes(final int amount) {
-
+    mcastReadBytes++;
   }
 
   @Override
   public void incUcastRetransmits() {
-
+    ucastRetransmits++;
   }
 
   @Override
   public void incMcastRetransmits() {
-
+    mcastRetransmits++;
   }
 
   @Override
   public void incMcastRetransmitRequests() {
-
+    mcastRetransmitRequests++;
   }
 
   @Override
   public void incHeartbeatRequestsSent() {
-
+    heartbeatRequestsSent++;
   }
 
   @Override
   public void incHeartbeatRequestsReceived() {
-
+    heartbeatRequestsReceived++;
   }
 
   @Override
   public void incHeartbeatsSent() {
-
+    heartbeatsSent++;
   }
 
   @Override
   public void incHeartbeatsReceived() {
-
+    heartbeatsReceived++;
   }
 
   @Override
   public void incSuspectsSent() {
-
+    suspectsSent++;
   }
 
   @Override
   public void incSuspectsReceived() {
-
+    suspectsReceived++;
   }
 
   @Override
   public void incFinalCheckRequestsSent() {
-
+    finalCheckRequestsSent++;
   }
 
   @Override
   public void incFinalCheckRequestsReceived() {
-
+    finalCheckRequestsReceived++;
   }
 
   @Override
   public void incFinalCheckResponsesSent() {
-
+    finalCheckResponsesSent++;
   }
 
   @Override
   public void incFinalCheckResponsesReceived() {
-
+    finalCheckResponsesReceived++;
   }
 
   @Override
   public void incTcpFinalCheckRequestsSent() {
-
+    tcpFinalCheckRequestsSent++;
   }
 
   @Override
   public void incTcpFinalCheckRequestsReceived() {
-
+    tcpFinalCheckRequestsReceived++;
   }
 
   @Override
   public void incTcpFinalCheckResponsesSent() {
-
+    tcpFinalCheckResponsesSent++;
   }
 
   @Override
   public void incTcpFinalCheckResponsesReceived() {
-
+    tcpFinalCheckResponsesReceived++;
   }
 
   @Override
   public void incUdpFinalCheckRequestsSent() {
-
+    udpFinalCheckRequestsSent++;
   }
 
   @Override
   public long getUdpFinalCheckRequestsSent() {
-    return 0;
+    return udpFinalCheckRequestsSent;
   }
 
   @Override
   public void incUdpFinalCheckResponsesReceived() {
-
+    udpFinalCheckResponsesReceived++;
   }
 
   @Override
   public long getHeartbeatRequestsReceived() {
-    return 0;
+    return heartbeatRequestsReceived;
   }
 
   @Override
   public long getHeartbeatsSent() {
-    return 0;
+    return heartbeatsSent;
   }
 
   @Override
   public long getSuspectsSent() {
-    return 0;
+    return suspectsSent;
   }
 
   @Override
   public long getSuspectsReceived() {
-    return 0;
+    return suspectsReceived;
   }
 
   @Override
   public long getFinalCheckRequestsSent() {
-    return 0;
+    return finalCheckRequestsSent;
   }
 
   @Override
   public long getFinalCheckRequestsReceived() {
-    return 0;
+    return finalCheckRequestsReceived;
   }
 
   @Override
   public long getFinalCheckResponsesSent() {
-    return 0;
+    return finalCheckResponsesSent;
   }
 
   @Override
   public long getFinalCheckResponsesReceived() {
-    return 0;
+    return finalCheckResponsesReceived;
   }
 
   @Override
   public long getTcpFinalCheckRequestsSent() {
-    return 0;
+    return tcpFinalCheckRequestsSent;
   }
 
   @Override
   public long getTcpFinalCheckRequestsReceived() {
-    return 0;
+    return tcpFinalCheckRequestsReceived;
   }
 
   @Override
   public long getTcpFinalCheckResponsesSent() {
-    return 0;
+    return tcpFinalCheckResponsesSent;
   }
 
   @Override
   public long getTcpFinalCheckResponsesReceived() {
-    return 0;
+    return tcpFinalCheckResponsesReceived;
   }
 
   @Override
   public long getHeartbeatRequestsSent() {
-    return 0;
+    return heartbeatRequestsSent;
   }
 }
diff --git a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/MembershipBuilderImpl.java b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/MembershipBuilderImpl.java
index 742c046..3cb692c 100644
--- a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/MembershipBuilderImpl.java
+++ b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/MembershipBuilderImpl.java
@@ -42,7 +42,7 @@ public class MembershipBuilderImpl<ID extends MemberIdentifier> implements Membe
   private MembershipListener<ID> membershipListener = new MembershipListenerNoOp();
   private MessageListener<ID> messageListener = message -> {
   };
-  private MembershipStatistics statistics = new MembershipStatisticsNoOp();
+  private MembershipStatistics statistics = new DefaultMembershipStatistics();
   private Authenticator<ID> authenticator = new AuthenticatorNoOp();
   private MembershipConfig membershipConfig = new MembershipConfig() {};
   private final DSFIDSerializer serializer;