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;