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:29 UTC

[geode] 03/04: move GMSJoinLeaveJUnitTest 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 33850bb3b115f2a7e3ef4893a342cdb3c0704691
Author: Bruce Schuchardt <bs...@pivotal.io>
AuthorDate: Thu Jan 30 14:07:56 2020 -0800

    move GMSJoinLeaveJUnitTest to geode-membership
---
 .../gms/membership/GMSJoinLeaveTestHelper.java     | 68 -------------------
 .../gms/membership/GMSJoinLeaveJUnitTest.java      | 76 ++++++++++------------
 2 files changed, 34 insertions(+), 110 deletions(-)

diff --git a/geode-dunit/src/main/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeaveTestHelper.java b/geode-dunit/src/main/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeaveTestHelper.java
deleted file mode 100755
index ca4e98d..0000000
--- a/geode-dunit/src/main/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeaveTestHelper.java
+++ /dev/null
@@ -1,68 +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.distributed.internal.membership.gms.membership;
-
-
-import org.apache.geode.distributed.Locator;
-import org.apache.geode.distributed.internal.InternalDistributedSystem;
-import org.apache.geode.test.awaitility.GeodeAwaitility;
-import org.apache.geode.test.dunit.WaitCriterion;
-
-public class GMSJoinLeaveTestHelper {
-
-  public static void becomeCoordinatorForTest(GMSJoinLeave gmsJoinLeave) {
-    synchronized (gmsJoinLeave.getViewInstallationLock()) {
-      gmsJoinLeave.becomeCoordinator();
-    }
-  }
-
-  private static void waitCriterion() {
-    WaitCriterion waitCriterion = new WaitCriterion() {
-      @Override
-      public boolean done() {
-        try {
-          return getIDS() != null;
-        } catch (Exception e) {
-          e.printStackTrace();
-        }
-        return false; // NOTREACHED
-      }
-
-      @Override
-      public String description() {
-        return "Distributed system is null";
-      }
-    };
-    GeodeAwaitility.await().untilAsserted(waitCriterion);
-  }
-
-  public static InternalDistributedSystem getInternalDistributedSystem() {
-    waitCriterion();
-    return getIDS();
-  }
-
-  private static InternalDistributedSystem getIDS() {
-    InternalDistributedSystem distributedSystem = InternalDistributedSystem.getAnyInstance();
-    if (distributedSystem == null) {
-      Locator locator = Locator.getLocator();
-      if (locator == null) {
-        return null;
-      }
-      return (InternalDistributedSystem) locator.getDistributedSystem();
-    } else {
-      return distributedSystem;
-    }
-  }
-}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeaveJUnitTest.java b/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeaveJUnitTest.java
similarity index 96%
rename from geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeaveJUnitTest.java
rename to geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeaveJUnitTest.java
index 82818f3..80c1926 100644
--- a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeaveJUnitTest.java
+++ b/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeaveJUnitTest.java
@@ -40,7 +40,6 @@ import java.net.InetSocketAddress;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
@@ -55,14 +54,11 @@ import org.junit.experimental.categories.Category;
 import org.mockito.internal.verification.Times;
 import org.mockito.verification.Timeout;
 
-import org.apache.geode.distributed.internal.ClusterDistributionManager;
-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.Authenticator;
-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.MemberIdentifierFactory;
+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.api.MembershipConfigurationException;
@@ -86,9 +82,9 @@ import org.apache.geode.distributed.internal.membership.gms.messages.LeaveReques
 import org.apache.geode.distributed.internal.membership.gms.messages.NetworkPartitionMessage;
 import org.apache.geode.distributed.internal.membership.gms.messages.RemoveMemberMessage;
 import org.apache.geode.distributed.internal.membership.gms.messages.ViewAckMessage;
+import org.apache.geode.distributed.internal.membership.gms.util.MemberIdentifierUtil;
 import org.apache.geode.distributed.internal.tcpserver.TcpClient;
 import org.apache.geode.internal.serialization.Version;
-import org.apache.geode.security.AuthenticationFailedException;
 import org.apache.geode.test.junit.categories.MembershipTest;
 
 @Category({MembershipTest.class})
@@ -120,7 +116,7 @@ public class GMSJoinLeaveJUnitTest {
 
   public void initMocks(boolean enableNetworkPartition, boolean useTestGMSJoinLeave)
       throws Exception {
-    mockConfig = mock(ServiceConfig.class);
+    mockConfig = mock(MembershipConfig.class);
     when(mockConfig.isNetworkPartitionDetectionEnabled()).thenReturn(enableNetworkPartition);
     when(mockConfig.getSecurityUDPDHAlgo()).thenReturn("");
     when(mockConfig.getStartLocator()).thenReturn("localhost[12345]");
@@ -145,17 +141,7 @@ public class GMSJoinLeaveJUnitTest {
     when(services.getManager()).thenReturn(manager);
     when(services.getHealthMonitor()).thenReturn(healthMonitor);
     when(services.getMemberFactory())
-        .thenReturn(new MemberIdentifierFactory<InternalDistributedMember>() {
-          @Override
-          public InternalDistributedMember create(MemberData memberInfo) {
-            return new InternalDistributedMember(memberInfo);
-          }
-
-          @Override
-          public Comparator<InternalDistributedMember> getComparator() {
-            return InternalDistributedMember::compareTo;
-          }
-        });
+        .thenReturn(new MemberIdentifierFactoryImpl());
 
     gmsJoinLeaveMemberId = services.getMemberFactory().create(
         MemberDataBuilder.newBuilderForLocalHost("localhost")
@@ -172,7 +158,7 @@ public class GMSJoinLeaveJUnitTest {
     Timer t = new Timer(true);
     when(services.getTimer()).thenReturn(t);
 
-    mockMembers = new InternalDistributedMember[4];
+    mockMembers = new MemberIdentifier[4];
     for (int i = 0; i < mockMembers.length; i++) {
       mockMembers[i] = services.getMemberFactory().create(
           MemberDataBuilder.newBuilderForLocalHost("localhost")
@@ -181,7 +167,7 @@ public class GMSJoinLeaveJUnitTest {
     mockOldMember = services.getMemberFactory().create(
         MemberDataBuilder.newBuilderForLocalHost("localhost")
             .setMembershipPort(8700).build());
-    ((InternalDistributedMember) mockOldMember).setVersionObjectForTest(Version.GFE_56);
+    ((MemberIdentifierImpl) mockOldMember).setVersionObjectForTest(Version.GFE_56);
     locatorClient = mock(TcpClient.class);
 
     if (useTestGMSJoinLeave) {
@@ -297,7 +283,7 @@ public class GMSJoinLeaveJUnitTest {
   @Test
   public void testViewWithoutMemberInitiatesForcedDisconnect() throws Exception {
     initMocks();
-    GMSJoinLeaveTestHelper.becomeCoordinatorForTest(gmsJoinLeave);
+    becomeCoordinatorForTest(gmsJoinLeave);
     List<MemberIdentifier> members = Arrays.asList(mockMembers);
     GMSMembershipView v = new GMSMembershipView(mockMembers[0], 2, members);
     InstallViewMessage message = getInstallViewMessage(v, null, false);
@@ -310,7 +296,7 @@ public class GMSJoinLeaveJUnitTest {
   public void testProcessJoinMessageWithBadAuthentication() throws Exception {
     initMocks();
     when(authenticator.authenticate(mockMembers[0], credentials))
-        .thenThrow(new AuthenticationFailedException("we want to fail auth here"));
+        .thenThrow(new SecurityException("we want to fail auth here"));
 
     gmsJoinLeave
         .processMessage(new JoinRequestMessage(mockMembers[0], mockMembers[0], credentials, -1, 0));
@@ -323,7 +309,7 @@ public class GMSJoinLeaveJUnitTest {
   public void testProcessJoinMessageWithAuthenticationButNullCredentials() throws Exception {
     initMocks();
     when(authenticator.authenticate(mockMembers[0], null))
-        .thenThrow(new AuthenticationFailedException("we want to fail auth here"));
+        .thenThrow(new SecurityException("we want to fail auth here"));
 
     gmsJoinLeave
         .processMessage(new JoinRequestMessage(mockMembers[0], mockMembers[0], null, -1, 0));
@@ -337,7 +323,7 @@ public class GMSJoinLeaveJUnitTest {
   public void testProcessJoinResponseIsRecorded() throws Exception {
     initMocks();
     when(authenticator.authenticate(mockMembers[0], null))
-        .thenThrow(new AuthenticationFailedException("we want to fail auth here"));
+        .thenThrow(new SecurityException("we want to fail auth here"));
 
     JoinResponseMessage[] joinResponse = gmsJoinLeave.getJoinResponseMessage();
 
@@ -422,7 +408,7 @@ public class GMSJoinLeaveJUnitTest {
 
     gmsJoinLeave.delayViewCreationForTest(5000); // ensures multiple requests are queued for a view
                                                  // change
-    GMSJoinLeaveTestHelper.becomeCoordinatorForTest(gmsJoinLeave);
+    becomeCoordinatorForTest(gmsJoinLeave);
 
     await()
         .until(() -> gmsJoinLeave.getView() != null);
@@ -495,7 +481,7 @@ public class GMSJoinLeaveJUnitTest {
     prepareAndInstallView(mockMembers[0], createMemberList(mockMembers[0], gmsJoinLeaveMemberId));
     // test that a non-member can't remove another member
     RemoveMemberMessage msg = new RemoveMemberMessage(mockMembers[0], mockMembers[1], reason);
-    msg.setSender(new InternalDistributedMember("localhost", 9000));
+    msg.setSender(MemberIdentifierUtil.createMemberID(9000));
     gmsJoinLeave.processMessage(msg);
     assertTrue("RemoveMemberMessage should not have been added to view requests",
         gmsJoinLeave.getViewRequests().size() == 0);
@@ -508,7 +494,7 @@ public class GMSJoinLeaveJUnitTest {
     gmsJoinLeave.unitTesting.add("noRandomViewChange");
     prepareAndInstallView(gmsJoinLeaveMemberId,
         createMemberList(gmsJoinLeaveMemberId, mockMembers[0]));
-    GMSJoinLeaveTestHelper.becomeCoordinatorForTest(gmsJoinLeave);
+    becomeCoordinatorForTest(gmsJoinLeave);
 
     LeaveRequestMessage msg =
         new LeaveRequestMessage(gmsJoinLeave.getMemberID(), mockMembers[0], reason);
@@ -535,7 +521,7 @@ public class GMSJoinLeaveJUnitTest {
         createMemberList(gmsJoinLeaveMemberId, mockMembers[0]));
     gmsJoinLeave.getView().add(mockMembers[1]);
     gmsJoinLeave.unitTesting.add("noRandomViewChange");
-    GMSJoinLeaveTestHelper.becomeCoordinatorForTest(gmsJoinLeave);
+    becomeCoordinatorForTest(gmsJoinLeave);
     RemoveMemberMessage msg =
         new RemoveMemberMessage(gmsJoinLeave.getMemberID(), mockMembers[0], reason);
     msg.setSender(mockMembers[0]);
@@ -563,7 +549,7 @@ public class GMSJoinLeaveJUnitTest {
     prepareAndInstallView(gmsJoinLeaveMemberId,
         createMemberList(gmsJoinLeaveMemberId, mockMembers[0]));
     gmsJoinLeave.getView().add(mockMembers[1]);
-    GMSJoinLeaveTestHelper.becomeCoordinatorForTest(gmsJoinLeave);
+    becomeCoordinatorForTest(gmsJoinLeave);
     JoinRequestMessage msg =
         new JoinRequestMessage(gmsJoinLeaveMemberId, mockMembers[2], null, -1, 0);
     msg.setSender(mockMembers[2]);
@@ -615,7 +601,7 @@ public class GMSJoinLeaveJUnitTest {
         createMemberList(gmsJoinLeaveMemberId, mockMembers[0], mockMembers[1]));
     reset(messenger);
     RemoveMemberMessage msg = new RemoveMemberMessage(gmsJoinLeaveMemberId,
-        new InternalDistributedMember("localhost", 10000), "removing for test");
+        MemberIdentifierUtil.createMemberID(10000), "removing for test");
     msg.setSender(mockMembers[0]);
     gmsJoinLeave.processMessage(msg);
     verify(messenger).send(isA(RemoveMemberMessage.class));
@@ -691,7 +677,7 @@ public class GMSJoinLeaveJUnitTest {
   @Test
   public void testBecomeCoordinatorOnStartup() throws Exception {
     initMocks();
-    GMSJoinLeaveTestHelper.becomeCoordinatorForTest(gmsJoinLeave);
+    becomeCoordinatorForTest(gmsJoinLeave);
     await().until(() -> gmsJoinLeave.isCoordinator());
   }
 
@@ -835,7 +821,7 @@ public class GMSJoinLeaveJUnitTest {
     GMSMembershipView oldView = gmsJoinLeave.getView();
     oldView.add(gmsJoinLeaveMemberId);
     MemberIdentifier creator = oldView.getCreator();
-    GMSJoinLeaveTestHelper.becomeCoordinatorForTest(gmsJoinLeave);
+    becomeCoordinatorForTest(gmsJoinLeave);
     GMSMembershipView view = new GMSMembershipView(2, gmsJoinLeave.getView().getViewId() + 1);
     view.setCreator(creator);
     view.add(creator);
@@ -894,7 +880,7 @@ public class GMSJoinLeaveJUnitTest {
   @Test
   public void testNetworkPartitionMessageReceived() throws Exception {
     initMocks();
-    GMSJoinLeaveTestHelper.becomeCoordinatorForTest(gmsJoinLeave);
+    becomeCoordinatorForTest(gmsJoinLeave);
     NetworkPartitionMessage message = new NetworkPartitionMessage();
     gmsJoinLeave.processMessage(message);
     verify(manager).forceDisconnect(isA(String.class));
@@ -1048,7 +1034,7 @@ public class GMSJoinLeaveJUnitTest {
     // create the GMSJoinLeave instance we'll be testing
     initMocks(false);
     MemberIdentifier otherMember = mockMembers[0];
-    gmsJoinLeaveMemberId.setVmKind(ClusterDistributionManager.NORMAL_DM_TYPE);
+    gmsJoinLeaveMemberId.setVmKind(MemberIdentifier.NORMAL_DM_TYPE);
     List<MemberIdentifier> members = createMemberList(gmsJoinLeaveMemberId, otherMember);
     prepareAndInstallView(gmsJoinLeaveMemberId, members);
     GMSMembershipView installedView = gmsJoinLeave.getView();
@@ -1056,9 +1042,9 @@ public class GMSJoinLeaveJUnitTest {
     gmsJoinLeave.unitTesting.add("noRandomViewChange"); // keep view numbers predictable
 
     // create a view coming from the locator that conflicts with the installed view
-    MemberIdentifier locatorMemberId = new InternalDistributedMember("localhost",
+    MemberIdentifier locatorMemberId = MemberIdentifierUtil.createMemberID(
         mockMembers[mockMembers.length - 1].getMembershipPort() + 1);
-    locatorMemberId.setVmKind(ClusterDistributionManager.LOCATOR_DM_TYPE);
+    locatorMemberId.setVmKind(MemberIdentifier.LOCATOR_DM_TYPE);
     List<MemberIdentifier> newMemberList = new ArrayList<>(members);
     newMemberList.add(locatorMemberId);
     GMSMembershipView locatorView =
@@ -1132,7 +1118,7 @@ public class GMSJoinLeaveJUnitTest {
     gmsJoinLeaveMemberId.setVmViewId(1);
     members.add(gmsJoinLeaveMemberId);
     prepareAndInstallView(gmsJoinLeaveMemberId, members);
-    GMSJoinLeaveTestHelper.becomeCoordinatorForTest(gmsJoinLeave);
+    becomeCoordinatorForTest(gmsJoinLeave);
     GMSJoinLeave.ViewBroadcaster b = gmsJoinLeave.new ViewBroadcaster();
     b.run();
     verify(messenger).sendUnreliably(isA(InstallViewMessage.class));
@@ -1351,7 +1337,7 @@ public class GMSJoinLeaveJUnitTest {
     InstallViewMessage msg = getInstallViewMessage(preparedView, null, true);
     gmsJoinLeave.processMessage(msg);
 
-    GMSJoinLeaveTestHelper.becomeCoordinatorForTest(gmsJoinLeave);
+    becomeCoordinatorForTest(gmsJoinLeave);
 
     Thread.sleep(2000);
     ViewCreator vc = gmsJoinLeave.getViewCreator();
@@ -1398,7 +1384,7 @@ public class GMSJoinLeaveJUnitTest {
     InstallViewMessage msg = getInstallViewMessage(preparedView, null, true);
     gmsJoinLeave.processMessage(msg);
 
-    GMSJoinLeaveTestHelper.becomeCoordinatorForTest(gmsJoinLeave);
+    becomeCoordinatorForTest(gmsJoinLeave);
 
     Thread.sleep(2000);
     ViewCreator vc = gmsJoinLeave.getViewCreator();
@@ -1528,7 +1514,7 @@ public class GMSJoinLeaveJUnitTest {
   public void testRemoveRequestWhileWaitingForFinalResponse() throws Exception {
     initMocks(true, true);
 
-    GMSJoinLeaveTestHelper.becomeCoordinatorForTest(gmsJoinLeave);
+    becomeCoordinatorForTest(gmsJoinLeave);
 
     installView();
 
@@ -1551,7 +1537,7 @@ public class GMSJoinLeaveJUnitTest {
   public void testLeaveRequestWhileWaitingForFinalResponse() throws Exception {
     initMocks(true, true);
 
-    GMSJoinLeaveTestHelper.becomeCoordinatorForTest(gmsJoinLeave);
+    becomeCoordinatorForTest(gmsJoinLeave);
 
     installView();
 
@@ -1589,6 +1575,12 @@ public class GMSJoinLeaveJUnitTest {
     }
   }
 
+  private void becomeCoordinatorForTest(GMSJoinLeave gmsJoinLeave) {
+    synchronized (gmsJoinLeave.getViewInstallationLock()) {
+      gmsJoinLeave.becomeCoordinator();
+    }
+  }
+
   private void installView() throws Exception {
     final int viewInstallationTime = 15000;