Skip to content

Commit

Permalink
GEODE-7634: create an ArchUnitTest that asserts that geode-core only … (
Browse files Browse the repository at this point in the history
apache#4549)

* GEODE-7634: create an ArchUnitTest that asserts that geode-core only uses the membership API

creating a new test to enforce use of membership APIs.  There are a few
exceptions in test code, plus others that aren't in the "integration
test" source set.

* removing test dependencies and fixing crashDistributedSystem method

* moved membership API classes to membership.api package and fixed OOME

* move address verification class to tcp-server module and subclass in membership

* rebasing on Ernie's GeodeGlossary stuff
  • Loading branch information
bschuchardt authored and mhansonp committed Mar 12, 2020
1 parent 02a7e50 commit dce108f
Show file tree
Hide file tree
Showing 161 changed files with 693 additions and 908 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
import org.apache.geode.distributed.internal.ClusterDistributionManager;
import org.apache.geode.distributed.internal.DistributionAdvisor;
import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
import org.apache.geode.distributed.internal.membership.gms.api.MemberData;
import org.apache.geode.distributed.internal.membership.api.MemberData;
import org.apache.geode.internal.cache.DistributedCacheOperation;
import org.apache.geode.internal.cache.DistributedRegion;
import org.apache.geode.internal.cache.EntryEventImpl;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
import static org.apache.geode.distributed.ConfigurationProperties.SECURITY_MANAGER;
import static org.apache.geode.distributed.ConfigurationProperties.START_LOCATOR;
import static org.apache.geode.distributed.Locator.getLocator;
import static org.apache.geode.distributed.internal.membership.gms.MembershipManagerHelper.getDistribution;
import static org.apache.geode.distributed.internal.membership.api.MembershipManagerHelper.getDistribution;
import static org.apache.geode.test.awaitility.GeodeAwaitility.await;
import static org.apache.geode.test.awaitility.GeodeAwaitility.getTimeout;
import static org.apache.geode.test.dunit.Host.getHost;
Expand Down Expand Up @@ -86,13 +86,12 @@
import org.apache.geode.distributed.DistributedSystem;
import org.apache.geode.distributed.DistributedSystemDisconnectedException;
import org.apache.geode.distributed.Locator;
import org.apache.geode.distributed.internal.Distribution;
import org.apache.geode.distributed.internal.InternalDistributedSystem;
import org.apache.geode.distributed.internal.InternalDistributedSystem.ReconnectListener;
import org.apache.geode.distributed.internal.InternalLocator;
import org.apache.geode.distributed.internal.ServerLocator;
import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
import org.apache.geode.distributed.internal.membership.gms.MembershipManagerHelper;
import org.apache.geode.distributed.internal.membership.api.MembershipManagerHelper;
import org.apache.geode.examples.SimpleSecurityManager;
import org.apache.geode.internal.AvailablePort;
import org.apache.geode.internal.AvailablePortHelper;
Expand Down Expand Up @@ -250,9 +249,8 @@ public void testReconnectWithQuorum() throws Exception {
locatorVm.invoke(new SerializableRunnable("disable force-disconnect") {
@Override
public void run() {
Distribution mgr = MembershipManagerHelper
.getDistribution(Locator.getLocator().getDistributedSystem());
mgr.disableDisconnectOnQuorumLossForTesting();
MembershipManagerHelper
.disableDisconnectOnQuorumLossForTesting(Locator.getLocator().getDistributedSystem());
}
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
import org.apache.geode.distributed.ServerLauncherParameters;
import org.apache.geode.distributed.internal.InternalDistributedSystem;
import org.apache.geode.distributed.internal.MembershipTestHook;
import org.apache.geode.distributed.internal.membership.gms.MembershipManagerHelper;
import org.apache.geode.distributed.internal.membership.api.MembershipManagerHelper;
import org.apache.geode.internal.AvailablePortHelper;
import org.apache.geode.test.dunit.Invoke;
import org.apache.geode.test.dunit.VM;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
import org.apache.geode.distributed.Locator;
import org.apache.geode.distributed.internal.InternalConfigurationPersistenceService;
import org.apache.geode.distributed.internal.InternalLocator;
import org.apache.geode.distributed.internal.membership.gms.MembershipManagerHelper;
import org.apache.geode.distributed.internal.membership.api.MembershipManagerHelper;
import org.apache.geode.internal.AvailablePort;
import org.apache.geode.internal.AvailablePortHelper;
import org.apache.geode.test.awaitility.GeodeAwaitility;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.distributed.internal.DistributionAdvisor.Profile;
import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
import org.apache.geode.distributed.internal.membership.gms.MembershipManagerHelper;
import org.apache.geode.distributed.internal.membership.api.MembershipManagerHelper;
import org.apache.geode.internal.cache.CacheDistributionAdvisor.CacheProfile;
import org.apache.geode.internal.cache.DistributedRegion;
import org.apache.geode.test.awaitility.GeodeAwaitility;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@
import org.apache.geode.distributed.internal.locks.DLockBatch;
import org.apache.geode.distributed.internal.locks.DLockService;
import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
import org.apache.geode.distributed.internal.membership.gms.MembershipManagerHelper;
import org.apache.geode.distributed.internal.membership.api.MembershipManagerHelper;
import org.apache.geode.internal.cache.CommitReplyException;
import org.apache.geode.internal.cache.GemFireCacheImpl;
import org.apache.geode.internal.cache.InternalRegionArguments;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@
import org.apache.geode.distributed.internal.HighPriorityAckedMessage;
import org.apache.geode.distributed.internal.InternalDistributedSystem;
import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
import org.apache.geode.distributed.internal.membership.gms.MembershipManagerHelper;
import org.apache.geode.distributed.internal.membership.api.MembershipManagerHelper;
import org.apache.geode.distributed.internal.membership.gms.GMSMembership;
import org.apache.geode.internal.HeapDataOutputStream;
import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.SerializableCallable;
Expand Down Expand Up @@ -306,7 +307,7 @@ public void testPartialIDInMessageReplacedWithFullID() throws Exception {

Distribution manager =
MembershipManagerHelper.getDistribution(basicGetSystem());
manager.replacePartialIdentifierInMessage(message);
((GMSMembership) manager.getMembership()).replacePartialIdentifierInMessage(message);

assertFalse(message.getSender().isPartial());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ public void testSpecificTcpPort() throws Exception {

ClusterDistributionManager dm = (ClusterDistributionManager) system.getDistributionManager();
Distribution mgr = dm.getDistribution();
assertThat(mgr.getDirectChannelPort()).isEqualTo(this.tcpPort);
assertThat(mgr.getLocalMember().getDirectChannelPort()).isEqualTo(this.tcpPort);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,10 @@
import org.apache.geode.distributed.internal.MembershipListener;
import org.apache.geode.distributed.internal.MembershipTestHook;
import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
import org.apache.geode.distributed.internal.membership.gms.MembershipManagerHelper;
import org.apache.geode.distributed.internal.membership.gms.api.MemberDisconnectedException;
import org.apache.geode.distributed.internal.membership.gms.api.MembershipConfigurationException;
import org.apache.geode.distributed.internal.membership.gms.api.MembershipView;
import org.apache.geode.distributed.internal.membership.api.MemberDisconnectedException;
import org.apache.geode.distributed.internal.membership.api.MembershipConfigurationException;
import org.apache.geode.distributed.internal.membership.api.MembershipManagerHelper;
import org.apache.geode.distributed.internal.membership.api.MembershipView;
import org.apache.geode.internal.AvailablePort;
import org.apache.geode.internal.AvailablePortHelper;
import org.apache.geode.internal.tcp.Connection;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,10 @@
import org.apache.geode.distributed.ConfigurationProperties;
import org.apache.geode.distributed.Locator;
import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
import org.apache.geode.distributed.internal.membership.gms.MembershipManagerHelper;
import org.apache.geode.distributed.internal.membership.gms.api.MemberDisconnectedException;
import org.apache.geode.distributed.internal.membership.gms.api.MembershipView;
import org.apache.geode.distributed.internal.membership.api.MemberDisconnectedException;
import org.apache.geode.distributed.internal.membership.api.MembershipManagerHelper;
import org.apache.geode.distributed.internal.membership.api.MembershipView;
import org.apache.geode.distributed.internal.membership.gms.GMSMembership;
import org.apache.geode.logging.internal.log4j.api.LogService;
import org.apache.geode.test.dunit.Invoke;
import org.apache.geode.test.dunit.SerializableRunnable;
Expand Down Expand Up @@ -171,7 +172,6 @@ public void testSurpriseMemberHandling() {
InternalDistributedSystem system = getSystem();
Distribution membershipManager =
MembershipManagerHelper.getDistribution(system);
assertThat(membershipManager.isCleanupTimerStarted()).isTrue();

InternalDistributedMember member = new InternalDistributedMember(getIPLiteral(), 12345);

Expand All @@ -194,7 +194,7 @@ public void testSurpriseMemberHandling() {
// now forcibly add it as a surprise member and show that it is reaped
long gracePeriod = 5000;
long startTime = System.currentTimeMillis();
long timeout = membershipManager.getSurpriseMemberTimeout();
long timeout = ((GMSMembership) membershipManager.getMembership()).getSurpriseMemberTimeout();
long birthTime = startTime - timeout + gracePeriod;
MembershipManagerHelper.addSurpriseMember(system, member, birthTime);
assertThat(membershipManager.isSurpriseMember(member)).as("Member was not a surprise member")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
import org.junit.Test;

import org.apache.geode.ForcedDisconnectException;
import org.apache.geode.distributed.internal.membership.gms.api.MemberDisconnectedException;
import org.apache.geode.distributed.internal.membership.api.MemberDisconnectedException;
import org.apache.geode.test.dunit.rules.ClusterStartupRule;

public class RestartOfMemberDistributedTest {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,8 @@
import org.apache.geode.distributed.Locator;
import org.apache.geode.distributed.internal.Distribution;
import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
import org.apache.geode.distributed.internal.membership.gms.MembershipManagerHelper;
import org.apache.geode.distributed.internal.membership.gms.api.MemberDisconnectedException;
import org.apache.geode.distributed.internal.membership.api.MemberDisconnectedException;
import org.apache.geode.distributed.internal.membership.api.MembershipManagerHelper;
import org.apache.geode.internal.AvailablePort;
import org.apache.geode.test.awaitility.GeodeAwaitility;
import org.apache.geode.test.dunit.Host;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
import static org.apache.geode.distributed.ConfigurationProperties.MAX_WAIT_TIME_RECONNECT;
import static org.apache.geode.distributed.ConfigurationProperties.MEMBER_TIMEOUT;
import static org.apache.geode.distributed.ConfigurationProperties.NAME;
import static org.apache.geode.distributed.internal.membership.gms.MembershipManagerHelper.getDistribution;
import static org.apache.geode.test.awaitility.GeodeAwaitility.await;
import static org.apache.geode.test.awaitility.GeodeAwaitility.getTimeout;
import static org.apache.geode.test.dunit.IgnoredException.addIgnoredException;
Expand All @@ -46,9 +45,9 @@
import org.apache.geode.ForcedDisconnectException;
import org.apache.geode.cache.CacheFactory;
import org.apache.geode.distributed.LocatorLauncher;
import org.apache.geode.distributed.internal.Distribution;
import org.apache.geode.distributed.internal.InternalDistributedSystem;
import org.apache.geode.distributed.internal.membership.gms.api.MemberDisconnectedException;
import org.apache.geode.distributed.internal.membership.api.MemberDisconnectedException;
import org.apache.geode.distributed.internal.membership.api.MembershipManagerHelper;
import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.test.dunit.VM;
import org.apache.geode.test.dunit.rules.DistributedRule;
Expand Down Expand Up @@ -137,9 +136,7 @@ private CompositeMeterRegistry cacheMeterRegistry() {
}

private void reconnect() throws InterruptedException {
Distribution membershipManager = getDistribution(system);
membershipManager.forceDisconnect("Forcing disconnect in test");

MembershipManagerHelper.crashDistributedSystem(system);
await().until(() -> system.isReconnecting());
system.waitUntilReconnected(TIMEOUT, MILLISECONDS);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
import static org.apache.geode.distributed.ConfigurationProperties.MAX_WAIT_TIME_RECONNECT;
import static org.apache.geode.distributed.ConfigurationProperties.MEMBER_TIMEOUT;
import static org.apache.geode.distributed.internal.membership.gms.MembershipManagerHelper.getDistribution;
import static org.apache.geode.distributed.internal.membership.api.MembershipManagerHelper.getDistribution;
import static org.apache.geode.internal.logging.Banner.BannerHeader.displayValues;
import static org.apache.geode.logging.internal.Configuration.STARTUP_CONFIGURATION;
import static org.apache.geode.test.awaitility.GeodeAwaitility.await;
Expand All @@ -48,7 +48,8 @@
import org.apache.geode.distributed.ServerLauncher;
import org.apache.geode.distributed.internal.Distribution;
import org.apache.geode.distributed.internal.InternalDistributedSystem;
import org.apache.geode.distributed.internal.membership.gms.api.MemberDisconnectedException;
import org.apache.geode.distributed.internal.membership.api.MemberDisconnectedException;
import org.apache.geode.distributed.internal.membership.gms.GMSMembership;
import org.apache.geode.test.assertj.LogFileAssert;
import org.apache.geode.test.dunit.VM;
import org.apache.geode.test.dunit.rules.DistributedRule;
Expand Down Expand Up @@ -139,7 +140,7 @@ public void logFileContainsBannerOnlyOnce() {

server2VM.invoke(() -> {
Distribution membershipManager = getDistribution(system);
membershipManager
((GMSMembership) membershipManager.getMembership())
.forceDisconnect("Forcing disconnect in " + testName.getMethodName());

await().until(() -> system.isReconnecting());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
import org.apache.geode.distributed.Locator;
import org.apache.geode.distributed.internal.Distribution;
import org.apache.geode.distributed.internal.InternalDistributedSystem;
import org.apache.geode.distributed.internal.membership.gms.MembershipManagerHelper;
import org.apache.geode.distributed.internal.membership.api.MembershipManagerHelper;
import org.apache.geode.security.generator.CredentialGenerator;
import org.apache.geode.security.generator.DummyCredentialGenerator;
import org.apache.geode.security.generator.LdapUserCredentialGenerator;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
import org.apache.geode.distributed.DistributedSystem;
import org.apache.geode.distributed.internal.InternalDistributedSystem;
import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
import org.apache.geode.distributed.internal.membership.gms.api.MemberIdentifier;
import org.apache.geode.distributed.internal.membership.api.MemberIdentifier;
import org.apache.geode.internal.HeapDataOutputStream;
import org.apache.geode.internal.cache.GemFireCacheImpl;
import org.apache.geode.internal.cache.tier.sockets.ClientProxyMembershipID;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@
import org.apache.geode.distributed.internal.PoolStatHelper;
import org.apache.geode.distributed.internal.RestartableTcpHandler;
import org.apache.geode.distributed.internal.ServerLocation;
import org.apache.geode.distributed.internal.membership.gms.membership.HostAddress;
import org.apache.geode.distributed.internal.tcpserver.LocatorAddress;
import org.apache.geode.distributed.internal.tcpserver.TcpClient;
import org.apache.geode.distributed.internal.tcpserver.TcpServer;
import org.apache.geode.internal.AvailablePortHelper;
Expand Down Expand Up @@ -125,8 +125,8 @@ public void setUp() throws Exception {
InetAddress ia = InetAddress.getLocalHost();
InetSocketAddress isa = new InetSocketAddress(ia, port);
locators.add(isa);
List<HostAddress> la = new ArrayList<>();
la.add(new HostAddress(isa, ia.getHostName()));
List<LocatorAddress> la = new ArrayList<>();
la.add(new LocatorAddress(isa, ia.getHostName()));
source = new AutoConnectionSourceImpl(la, "", 60 * 1000);
source.start(pool);
}
Expand Down Expand Up @@ -187,14 +187,14 @@ public void testLocatorIpChange() {
locators.add(floc1);
locators.add(floc2);

List<HostAddress> la = new ArrayList<>();
la.add(new HostAddress(floc1, floc1.getHostName()));
la.add(new HostAddress(floc2, floc2.getHostName()));
List<LocatorAddress> la = new ArrayList<>();
la.add(new LocatorAddress(floc1, floc1.getHostName()));
la.add(new LocatorAddress(floc2, floc2.getHostName()));

AutoConnectionSourceImpl src = new AutoConnectionSourceImpl(la, "", 60 * 1000);

// This method will create a new InetSocketAddress of floc1
src.updateLocatorInLocatorList(new HostAddress(floc1, floc1.getHostName()));
src.updateLocatorInLocatorList(new LocatorAddress(floc1, floc1.getHostName()));

List<InetSocketAddress> cLocList = src.getCurrentLocators();

Expand All @@ -218,18 +218,18 @@ public void testAddBadLocator() {
InetSocketAddress floc2 = new InetSocketAddress("fakeLocalHost2", port);
locators.add(floc1);
locators.add(floc2);
List<HostAddress> la = new ArrayList<>();
la.add(new HostAddress(floc1, floc1.getHostName()));
la.add(new HostAddress(floc2, floc2.getHostName()));
List<LocatorAddress> la = new ArrayList<>();
la.add(new LocatorAddress(floc1, floc1.getHostName()));
la.add(new LocatorAddress(floc2, floc2.getHostName()));
AutoConnectionSourceImpl src = new AutoConnectionSourceImpl(la, "", 60 * 1000);


InetSocketAddress b1 = new InetSocketAddress("fakeLocalHost1", port);
InetSocketAddress b2 = new InetSocketAddress("fakeLocalHost3", port);

Set<HostAddress> bla = new HashSet<>();
bla.add(new HostAddress(b1, b1.getHostName()));
bla.add(new HostAddress(b2, b2.getHostName()));
Set<LocatorAddress> bla = new HashSet<>();
bla.add(new LocatorAddress(b1, b1.getHostName()));
bla.add(new LocatorAddress(b2, b2.getHostName()));


src.addbadLocators(la, bla);
Expand All @@ -255,7 +255,7 @@ public void testSourceHandlesToDataException() throws IOException, ClassNotFound
isA(Integer.class), isA(Boolean.class))).thenThrow(new ToDataException("testing"));
try {
InetSocketAddress address = new InetSocketAddress(NetworkUtils.getServerHostName(), 1234);
source.queryOneLocatorUsingConnection(new HostAddress(address, "locator[1234]"), mock(
source.queryOneLocatorUsingConnection(new LocatorAddress(address, "locator[1234]"), mock(
ServerLocationRequest.class), mockConnection);
verify(mockConnection).requestToServer(isA(InetSocketAddress.class),
isA(ServerLocationRequest.class), isA(Integer.class), isA(Boolean.class));
Expand Down

0 comments on commit dce108f

Please sign in to comment.