GEODE-2000 client should see server-bind-address in event memberId The previous fix for this caused confusion as it changed the server memberId that is used in other places and should remain unchanged. This change set alters just the listener-invocation code in the client cache so that client events are based on the ServerLocation information returned by the Locator or added to the connection pool by applications.
Udo worked with me on this and we found the listener invocation code to be somewhat convoluted, mixing server-side notification about clients with client-side notification about servers in the same code. This lead to a bit of refactoring in InternalClientMembership to separate the two. A number of changes had to be made in test code. Some tests were requiring that client-side listeners see the server's exact member ID which is no longer true since the ID being fabricated out of a ServerLocation doesn't have as much detail as the true member ID and so is not equal() to it. Some other test code was creating ServerLocation objects with non-existent host names. This is no longer allowed so we changed these tests to use a numeric IP address. Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/87f2fb5f Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/87f2fb5f Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/87f2fb5f Branch: refs/heads/feature/GEM-983 Commit: 87f2fb5f32f71b0fda74fa61c1237b41f4c7ef11 Parents: a564a69 Author: Bruce Schuchardt <[email protected]> Authored: Thu Oct 27 09:00:50 2016 -0700 Committer: Bruce Schuchardt <[email protected]> Committed: Thu Oct 27 09:03:51 2016 -0700 ---------------------------------------------------------------------- .../internal/DistributionLocatorConfigImpl.java | 23 +- .../client/internal/EndpointManagerImpl.java | 6 +- .../membership/InternalDistributedMember.java | 29 ++- .../cache/tier/InternalClientMembership.java | 139 ++++++----- .../cache/tier/sockets/CacheClientUpdater.java | 2 +- .../internal/cache/tier/sockets/HandShake.java | 4 +- .../cache/tier/sockets/ServerConnection.java | 6 +- .../AutoConnectionSourceImplJUnitTest.java | 55 +++++ .../pooling/ConnectionManagerJUnitTest.java | 7 +- .../PartitionRegionHelperDUnitTest.java | 6 - .../cache30/ClientMembershipDUnitTest.java | 77 +++--- .../internal/DistributionManagerDUnitTest.java | 2 - ...onedRegionQueryEvaluatorIntegrationTest.java | 25 +- ...ersalMembershipListenerAdapterDUnitTest.java | 238 +++++++++---------- .../java/org/apache/geode/test/fake/Fakes.java | 6 +- 15 files changed, 334 insertions(+), 291 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/87f2fb5f/geode-core/src/main/java/org/apache/geode/admin/internal/DistributionLocatorConfigImpl.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/admin/internal/DistributionLocatorConfigImpl.java b/geode-core/src/main/java/org/apache/geode/admin/internal/DistributionLocatorConfigImpl.java index c3cab6f..851693a 100644 --- a/geode-core/src/main/java/org/apache/geode/admin/internal/DistributionLocatorConfigImpl.java +++ b/geode-core/src/main/java/org/apache/geode/admin/internal/DistributionLocatorConfigImpl.java @@ -14,6 +14,7 @@ */ package org.apache.geode.admin.internal; +import org.apache.geode.GemFireConfigException; import org.apache.geode.admin.DistributionLocator; import org.apache.geode.admin.DistributionLocatorConfig; import org.apache.geode.distributed.internal.tcpserver.*; @@ -66,14 +67,20 @@ public class DistributionLocatorConfigImpl extends ManagedEntityConfigImpl */ static DistributionLocatorConfig createConfigFor(String host, int port, InetAddress bindAddress) { TcpClient client = new TcpClient(); - String[] info = null; - if (bindAddress != null) { - info = client.getInfo(bindAddress, port); - } else { - info = client.getInfo(InetAddressUtil.toInetAddress(host), port); - } - if (info == null) { - return null; + String[] info = new String[] {"unknown", "unknown"}; + + try { + client = new TcpClient(); + if (bindAddress != null) { + info = client.getInfo(bindAddress, port); + } else { + info = client.getInfo(InetAddressUtil.toInetAddress(host), port); + } + if (info == null) { + return null; + } + } catch (GemFireConfigException e) { + // communications are not initialized at this point } DistributionLocatorConfigImpl config = new DistributionLocatorConfigImpl(); http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/87f2fb5f/geode-core/src/main/java/org/apache/geode/cache/client/internal/EndpointManagerImpl.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/cache/client/internal/EndpointManagerImpl.java b/geode-core/src/main/java/org/apache/geode/cache/client/internal/EndpointManagerImpl.java index ec8a818..6d5d9d6 100644 --- a/geode-core/src/main/java/org/apache/geode/cache/client/internal/EndpointManagerImpl.java +++ b/geode-core/src/main/java/org/apache/geode/cache/client/internal/EndpointManagerImpl.java @@ -318,7 +318,7 @@ public class EndpointManagerImpl implements EndpointManager { return; } // logger.warn("EMANFIRE:CRASH:"+endpoint.getLocation()); - InternalClientMembership.notifyCrashed(endpoint.getMemberId(), false); + InternalClientMembership.notifyServerCrashed(endpoint.getLocation()); } public void endpointNoLongerInUse(Endpoint endpoint) { @@ -326,7 +326,7 @@ public class EndpointManagerImpl implements EndpointManager { return; } // logger.warn("EMANFIRE:LEFT:"+endpoint.getLocation()); - InternalClientMembership.notifyLeft(endpoint.getMemberId(), false); + InternalClientMembership.notifyServerLeft(endpoint.getLocation()); } public void endpointNowInUse(Endpoint endpoint) { @@ -335,7 +335,7 @@ public class EndpointManagerImpl implements EndpointManager { } // logger.warn("EMANFIRE:JOIN:"+endpoint.getLocation()+" mid:"+endpoint.getMemberId(),new // Exception()); - InternalClientMembership.notifyJoined(endpoint.getMemberId(), false); + InternalClientMembership.notifyServerJoined(endpoint.getLocation()); } } http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/87f2fb5f/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalDistributedMember.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalDistributedMember.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalDistributedMember.java index 82dd055..0d4fd9e 100755 --- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalDistributedMember.java +++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalDistributedMember.java @@ -15,6 +15,7 @@ package org.apache.geode.distributed.internal.membership; import org.apache.geode.DataSerializer; +import org.apache.geode.GemFireConfigException; import org.apache.geode.InternalGemFireError; import org.apache.geode.cache.UnsupportedVersionException; import org.apache.geode.distributed.DistributedMember; @@ -23,6 +24,7 @@ import org.apache.geode.distributed.Role; import org.apache.geode.distributed.internal.DistributionAdvisor.ProfileId; import org.apache.geode.distributed.internal.DistributionConfig; import org.apache.geode.distributed.internal.DistributionManager; +import org.apache.geode.distributed.internal.ServerLocation; import org.apache.geode.internal.*; import org.apache.geode.internal.cache.versions.VersionSource; import org.apache.geode.internal.i18n.LocalizedStrings; @@ -242,11 +244,31 @@ public class InternalDistributedMember implements DistributedMember, Externaliza * @param p the membership listening port * @throws UnknownHostException if the given hostname cannot be resolved */ - public InternalDistributedMember(String i, int p) throws UnknownHostException { + public InternalDistributedMember(String i, int p) { this(i, p, Version.CURRENT); } /** + * Creates a new InternalDistributedMember for use in notifying membership listeners. The version + * information in the ID is set to Version.CURRENT. + * + * @param location the coordinates of the server + */ + + public InternalDistributedMember(ServerLocation location) { + this.hostName = location.getHostName(); + InetAddress addr = null; + try { + addr = InetAddress.getByName(this.hostName); + } catch (UnknownHostException e) { + throw new GemFireConfigException("Unable to resolve server location " + location, e); + } + this.netMbr = MemberFactory.newNetMember(addr, location.getPort()); + this.vmKind = DistributionManager.NORMAL_DM_TYPE; + this.versionObj = Version.CURRENT; + } + + /** * Create a InternalDistributedMember referring to the current host (as defined by the given * string). * <p> @@ -260,7 +282,7 @@ public class InternalDistributedMember implements DistributedMember, Externaliza * @param version the version of this member * @throws UnknownHostException if the given hostname cannot be resolved */ - public InternalDistributedMember(String i, int p, Version version) throws UnknownHostException { + public InternalDistributedMember(String i, int p, Version version) { this(i, p, version, MemberFactory.newNetMember(i, p)); } @@ -272,8 +294,7 @@ public class InternalDistributedMember implements DistributedMember, Externaliza * <b> THIS METHOD IS FOR TESTING ONLY. DO NOT USE IT TO CREATE IDs FOR USE IN THE PRODUCT. IT * DOES NOT PROPERLY INITIALIZE ATTRIBUTES NEEDED FOR P2P FUNCTIONALITY. </b> **/ - public InternalDistributedMember(String i, int p, Version version, NetMember netMember) - throws UnknownHostException { + public InternalDistributedMember(String i, int p, Version version, NetMember netMember) { netMbr = netMember; defaultToCurrentHost(); this.vmKind = DistributionManager.NORMAL_DM_TYPE; http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/87f2fb5f/geode-core/src/main/java/org/apache/geode/internal/cache/tier/InternalClientMembership.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/InternalClientMembership.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/InternalClientMembership.java index 656f7de..aeabc86 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/InternalClientMembership.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/InternalClientMembership.java @@ -27,6 +27,8 @@ import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; +import org.apache.geode.distributed.internal.membership.InternalDistributedMember; +import org.apache.geode.internal.net.SocketCreator; import org.apache.logging.log4j.Logger; import org.apache.geode.CancelException; @@ -349,77 +351,77 @@ public final class InternalClientMembership { /** - * Notifies registered listeners that a Client member has joined. The new member may be a client - * connecting to this process or a server that this process has just connected to. + * Notifies registered listeners that a Client member has connected * - * @param member the <code>DistributedMember</code> - * @param client true if the member is a client; false if server + * @param clientId the representing the client */ - public static void notifyJoined(final DistributedMember member, final boolean client) { - startMonitoring(); - ThreadPoolExecutor queuedExecutor = executor; - if (queuedExecutor == null) { - return; - } + public static void notifyClientJoined(final DistributedMember clientId) { + notifyListeners(clientId, true, EventType.JOINED); + } - final ClientMembershipEvent event = new InternalClientMembershipEvent(member, client); - if (forceSynchronous) { - doNotifyClientMembershipListener(member, client, event, EventType.CLIENT_JOINED); - } else { - try { - queuedExecutor.execute(new Runnable() { - public void run() { - doNotifyClientMembershipListener(member, client, event, EventType.CLIENT_JOINED); - } - }); - } catch (RejectedExecutionException e) { - // executor must have been shutdown - } - } + /** + * Notifies registered listeners that a Client member has left + * + * @param clientId the representing the client + */ + public static void notifyClientLeft(final DistributedMember clientId) { + notifyListeners(clientId, true, EventType.LEFT); + } + + /** + * Notifies registered listeners that a Client member has crashed + * + * @param clientId the representing the client + */ + public static void notifyClientCrashed(final DistributedMember clientId) { + notifyListeners(clientId, true, EventType.CRASHED); } /** - * Notifies registered listeners that a member has left. The departed member may be a client - * previously connected to this process or a server that this process was connected to. + * Notifies registered listeners that a Client member has connected * - * @param member the <code>DistributedMember</code> - * @param client true if the member is a client; false if server + * @param location the address of the server */ - public static void notifyLeft(final DistributedMember member, final boolean client) { - startMonitoring(); - ThreadPoolExecutor queuedExecutor = executor; - if (queuedExecutor == null) { - return; - } + public static void notifyServerJoined(final ServerLocation location) { + DistributedMember id = new InternalDistributedMember(location); + notifyListeners(id, false, EventType.JOINED); + } + /** + * Notifies registered listeners that a Client member has left + * + * @param location the address of the server + */ + public static void notifyServerLeft(final ServerLocation location) { + DistributedMember id = new InternalDistributedMember(location); + notifyListeners(id, false, EventType.LEFT); + } - final ClientMembershipEvent event = new InternalClientMembershipEvent(member, client); - if (forceSynchronous) { - doNotifyClientMembershipListener(member, client, event, EventType.CLIENT_LEFT); - } else { - try { - queuedExecutor.execute(new Runnable() { - public void run() { - doNotifyClientMembershipListener(member, client, event, EventType.CLIENT_LEFT); - } - }); - } catch (RejectedExecutionException e) { - // executor must have been shutdown - } - } + /** + * Notifies registered listeners that a Client member has crashed + * + * @param location the address of the server + */ + public static void notifyServerCrashed(final ServerLocation location) { + DistributedMember id = new InternalDistributedMember(location); + notifyListeners(id, false, EventType.CRASHED); } + /** - * Notifies registered listeners that a member has crashed. The departed member may be a client - * previously connected to this process or a server that this process was connected to. - * + * Notifies registered listeners that a Client member has joined. The new member may be a client + * connecting to this process or a server that this process has just connected to. + * * @param member the <code>DistributedMember</code> * @param client true if the member is a client; false if server + * @param typeOfEvent joined/left/crashed */ - public static void notifyCrashed(final DistributedMember member, final boolean client) { + private static void notifyListeners(final DistributedMember member, final boolean client, + final EventType typeOfEvent) { + startMonitoring(); ThreadPoolExecutor queuedExecutor = executor; if (queuedExecutor == null) { return; @@ -427,14 +429,11 @@ public final class InternalClientMembership { final ClientMembershipEvent event = new InternalClientMembershipEvent(member, client); if (forceSynchronous) { - doNotifyClientMembershipListener(member, client, event, EventType.CLIENT_CRASHED); + doNotifyClientMembershipListener(member, client, event, typeOfEvent); } else { - try { - queuedExecutor.execute(new Runnable() { - public void run() { - doNotifyClientMembershipListener(member, client, event, EventType.CLIENT_CRASHED); - } + queuedExecutor.execute(() -> { + doNotifyClientMembershipListener(member, client, event, typeOfEvent); }); } catch (RejectedExecutionException e) { // executor must have been shutdown @@ -442,6 +441,7 @@ public final class InternalClientMembership { } } + private static void doNotifyClientMembershipListener(DistributedMember member, boolean client, ClientMembershipEvent clientMembershipEvent, EventType eventType) { @@ -450,9 +450,9 @@ public final class InternalClientMembership { ClientMembershipListener listener = iter.next(); try { - if (eventType.equals(EventType.CLIENT_JOINED)) { + if (eventType.equals(EventType.JOINED)) { listener.memberJoined(clientMembershipEvent); - } else if (eventType.equals(EventType.CLIENT_LEFT)) { + } else if (eventType.equals(EventType.LEFT)) { listener.memberLeft(clientMembershipEvent); } else { listener.memberCrashed(clientMembershipEvent); @@ -549,17 +549,26 @@ public final class InternalClientMembership { } /** - * Internal implementation of ClientMembershipEvent. + * Internal implementation of ClientMembershipEvent. This class is used in both clients and + * servers to notify listeners about events concerning client/server communications. In servers + * listeners are notified about clients connecting/disconnecting. In clients listeners notified + * about new connections being formed to servers. The instance variable "client" is used to + * distinguish between the two. */ protected static class InternalClientMembershipEvent implements ClientMembershipEvent { private final DistributedMember member; + + /** + * If true this means that a client has joined/left/crashed. + * <p> + * If false this means that a server has joined/left/crashed + */ private final boolean client; - /** Constructs new instance of event */ - protected InternalClientMembershipEvent(DistributedMember member, boolean client) { + protected InternalClientMembershipEvent(DistributedMember member, boolean isClient) { this.member = member; - this.client = client; + this.client = isClient; } public DistributedMember getMember() { @@ -593,7 +602,7 @@ public final class InternalClientMembership { } private static enum EventType { - CLIENT_JOINED, CLIENT_LEFT, CLIENT_CRASHED + JOINED, LEFT, CRASHED } } http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/87f2fb5f/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/CacheClientUpdater.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/CacheClientUpdater.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/CacheClientUpdater.java index 90cdeda..b4a6bed 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/CacheClientUpdater.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/CacheClientUpdater.java @@ -300,7 +300,7 @@ public class CacheClientUpdater extends Thread implements ClientUpdater, Disconn mySock.getInetAddress().getHostAddress(), mySock.getLocalPort(), mySock.getPort()); } - ServerQueueStatus sqs = handshake.greetNotifier(mySock, this.isPrimary, location); + ServerQueueStatus sqs = handshake.greetNotifier(mySock, this.isPrimary); if (sqs.isPrimary() || sqs.isNonRedundant()) { PoolImpl pool = (PoolImpl) this.qManager.getPool(); if (!pool.getReadyForEventsCalled()) { http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/87f2fb5f/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/HandShake.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/HandShake.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/HandShake.java index 95e531d..c0db945 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/HandShake.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/HandShake.java @@ -1297,7 +1297,7 @@ public class HandShake implements ClientHandShake { } } - public ServerQueueStatus greetNotifier(Socket sock, boolean isPrimary, ServerLocation location) + public ServerQueueStatus greetNotifier(Socket sock, boolean isPrimary) throws IOException, AuthenticationRequiredException, AuthenticationFailedException, ServerRefusedConnectionException, ClassNotFoundException { ServerQueueStatus sqs = null; @@ -1378,7 +1378,7 @@ public class HandShake implements ClientHandShake { dis = new VersionedDataInputStream(dis, v); } try { - return (DistributedMember) DataSerializer.readObject(dis); + return DataSerializer.readObject(dis); } catch (EOFException e) { throw e; } catch (Exception e) { http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/87f2fb5f/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ServerConnection.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ServerConnection.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ServerConnection.java index 47932d0..7e915f2 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ServerConnection.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ServerConnection.java @@ -552,7 +552,7 @@ public class ServerConnection implements Runnable { this.crHelper.checkCancelInProgress(null); if (clientJoined && isFiringMembershipEvents()) { // This is a new client. Notify bridge membership and heartbeat monitor. - InternalClientMembership.notifyJoined(this.proxyId.getDistributedMember(), true); + InternalClientMembership.notifyClientJoined(this.proxyId.getDistributedMember()); } ClientHealthMonitor chm = this.acceptor.getClientHealthMonitor(); @@ -862,9 +862,9 @@ public class ServerConnection implements Runnable { // the heartbeat monitor; other wise just remove the connection. if (clientDeparted && isFiringMembershipEvents()) { if (this.clientDisconnectedCleanly && !forceClientCrashEvent) { - InternalClientMembership.notifyLeft(proxyId.getDistributedMember(), true); + InternalClientMembership.notifyClientLeft(proxyId.getDistributedMember()); } else { - InternalClientMembership.notifyCrashed(this.proxyId.getDistributedMember(), true); + InternalClientMembership.notifyClientCrashed(this.proxyId.getDistributedMember()); } // The client has departed. Remove this last connection and unregister it. } http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/87f2fb5f/geode-core/src/test/java/org/apache/geode/cache/client/internal/AutoConnectionSourceImplJUnitTest.java ---------------------------------------------------------------------- diff --git a/geode-core/src/test/java/org/apache/geode/cache/client/internal/AutoConnectionSourceImplJUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/client/internal/AutoConnectionSourceImplJUnitTest.java index 913edf2..fdde35c 100644 --- a/geode-core/src/test/java/org/apache/geode/cache/client/internal/AutoConnectionSourceImplJUnitTest.java +++ b/geode-core/src/test/java/org/apache/geode/cache/client/internal/AutoConnectionSourceImplJUnitTest.java @@ -32,6 +32,11 @@ import org.apache.geode.distributed.internal.tcpserver.TcpHandler; import org.apache.geode.distributed.internal.tcpserver.TcpServer; import org.apache.geode.internal.AvailablePortHelper; import org.apache.geode.internal.cache.PoolStats; +import org.apache.geode.internal.cache.tier.InternalClientMembership; +import org.apache.geode.internal.cache.tier.sockets.HandShake; +import org.apache.geode.internal.net.SocketCreator; +import org.apache.geode.management.membership.ClientMembershipEvent; +import org.apache.geode.management.membership.ClientMembershipListener; import org.apache.geode.test.junit.categories.IntegrationTest; import org.junit.After; import org.junit.Before; @@ -49,12 +54,16 @@ import java.util.Map; import java.util.Properties; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS; import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.fail; +import com.jayway.awaitility.Awaitility; + /** * */ @@ -138,6 +147,52 @@ public class AutoConnectionSourceImplJUnitTest { } @Test + public void testServerLocationUsedInListenerNotification() throws Exception { + final ClientMembershipEvent[] listenerEvents = new ClientMembershipEvent[1]; + + ClientMembershipListener listener = new ClientMembershipListener() { + + @Override + public void memberJoined(final ClientMembershipEvent event) { + synchronized (listenerEvents) { + listenerEvents[0] = event; + } + } + + @Override + public void memberLeft(final ClientMembershipEvent event) {} + + @Override + public void memberCrashed(final ClientMembershipEvent event) {} + }; + InternalClientMembership.registerClientMembershipListener(listener); + + ServerLocation location = new ServerLocation("1.1.1.1", 0); + + InternalClientMembership.notifyServerJoined(location); + Awaitility.await("wait for listener notification").atMost(10, TimeUnit.SECONDS).until(() -> { + synchronized (listenerEvents) { + return listenerEvents[0] != null; + } + }); + + assertEquals("1.1.1.1", listenerEvents[0].getMember().getHost()); + + InetAddress addr = InetAddress.getLocalHost(); + location = new ServerLocation(addr.getHostAddress(), 0); + + listenerEvents[0] = null; + InternalClientMembership.notifyServerJoined(location); + Awaitility.await("wait for listener notification").atMost(10, TimeUnit.SECONDS).until(() -> { + synchronized (listenerEvents) { + return listenerEvents[0] != null; + } + }); + + assertEquals(addr.getCanonicalHostName(), listenerEvents[0].getMember().getHost()); + } + + @Test public void testNoServers() throws Exception { startFakeLocator(); handler.nextConnectionResponse = new ClientConnectionResponse(null); http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/87f2fb5f/geode-core/src/test/java/org/apache/geode/cache/client/internal/pooling/ConnectionManagerJUnitTest.java ---------------------------------------------------------------------- diff --git a/geode-core/src/test/java/org/apache/geode/cache/client/internal/pooling/ConnectionManagerJUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/client/internal/pooling/ConnectionManagerJUnitTest.java index 1017db2..0f632b8 100644 --- a/geode-core/src/test/java/org/apache/geode/cache/client/internal/pooling/ConnectionManagerJUnitTest.java +++ b/geode-core/src/test/java/org/apache/geode/cache/client/internal/pooling/ConnectionManagerJUnitTest.java @@ -799,12 +799,7 @@ public class ConnectionManagerJUnitTest { this.notifyAll(); } DistributedMember fakeMember = null; - try { - fakeMember = new InternalDistributedMember("localhost", 555); - } catch (UnknownHostException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + fakeMember = new InternalDistributedMember("localhost", 555); final DistributedMember member = fakeMember; return new Connection() { http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/87f2fb5f/geode-core/src/test/java/org/apache/geode/cache/partition/PartitionRegionHelperDUnitTest.java ---------------------------------------------------------------------- diff --git a/geode-core/src/test/java/org/apache/geode/cache/partition/PartitionRegionHelperDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/partition/PartitionRegionHelperDUnitTest.java index a4494ca..4236799 100644 --- a/geode-core/src/test/java/org/apache/geode/cache/partition/PartitionRegionHelperDUnitTest.java +++ b/geode-core/src/test/java/org/apache/geode/cache/partition/PartitionRegionHelperDUnitTest.java @@ -612,8 +612,6 @@ public class PartitionRegionHelperDUnitTest extends JUnit4CacheTestCase { fail("Should have received an exception"); } catch (IllegalStateException expected) { System.err.println(expected); - } catch (UnknownHostException e) { - Assert.fail("Unknown host", e); } assertHasMembers(PartitionRegionHelper.getAllMembersForKey(region, 1), member0, member1); @@ -693,8 +691,6 @@ public class PartitionRegionHelperDUnitTest extends JUnit4CacheTestCase { fail("Should have received an exception"); } catch (IllegalStateException expected) { System.err.println(expected); - } catch (UnknownHostException e) { - Assert.fail("Unknown host", e); } assertHasMembers(PartitionRegionHelper.getAllMembersForKey(region, 1), member0, member1); @@ -705,8 +701,6 @@ public class PartitionRegionHelperDUnitTest extends JUnit4CacheTestCase { fail("Should have received an exception"); } catch (IllegalStateException expected) { System.err.println(expected); - } catch (UnknownHostException e) { - Assert.fail("Unknown host", e); } assertHasMembers(PartitionRegionHelper.getAllMembersForKey(region, 1), member0, member1); http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/87f2fb5f/geode-core/src/test/java/org/apache/geode/cache30/ClientMembershipDUnitTest.java ---------------------------------------------------------------------- diff --git a/geode-core/src/test/java/org/apache/geode/cache30/ClientMembershipDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache30/ClientMembershipDUnitTest.java index 83b75d5..67b1e9e 100644 --- a/geode-core/src/test/java/org/apache/geode/cache30/ClientMembershipDUnitTest.java +++ b/geode-core/src/test/java/org/apache/geode/cache30/ClientMembershipDUnitTest.java @@ -33,6 +33,8 @@ import java.util.Set; import java.util.concurrent.TimeUnit; import com.jayway.awaitility.Awaitility; +import org.apache.geode.distributed.internal.ServerLocation; +import org.apache.geode.distributed.internal.membership.InternalDistributedMember; import org.junit.Test; import org.junit.experimental.categories.Category; @@ -82,6 +84,8 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { private static Properties properties; + ServerLocation serverLocation = new ServerLocation("127.0.0.1", 0); + @Override public final void postTearDownCacheTestCase() throws Exception { Invoke.invokeInEveryVM((() -> cleanup())); @@ -270,8 +274,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { ClientMembership.registerClientMembershipListener(listener); // test JOIN for server - DistributedMember serverJoined = new TestDistributedMember("serverJoined"); - InternalClientMembership.notifyJoined(serverJoined, SERVER); + InternalClientMembership.notifyServerJoined(serverLocation); Awaitility.await().pollInterval(100, TimeUnit.MILLISECONDS) .pollDelay(100, TimeUnit.MILLISECONDS).timeout(300, TimeUnit.SECONDS).until(() -> { @@ -279,8 +282,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { }); assertTrue(fired[JOINED]); - assertEquals(serverJoined, member[JOINED]); - assertEquals(serverJoined.getId(), memberId[JOINED]); + assertNotNull(member[JOINED]); assertFalse(isClient[JOINED]); assertFalse(fired[LEFT]); assertNull(memberId[LEFT]); @@ -292,7 +294,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { // test JOIN for client DistributedMember clientJoined = new TestDistributedMember("clientJoined"); - InternalClientMembership.notifyJoined(clientJoined, CLIENT); + InternalClientMembership.notifyClientJoined(clientJoined); Awaitility.await().pollInterval(100, TimeUnit.MILLISECONDS) .pollDelay(100, TimeUnit.MILLISECONDS).timeout(300, TimeUnit.SECONDS).until(() -> { return fired[JOINED]; @@ -311,8 +313,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { resetArraysForTesting(fired, member, memberId, isClient); // test LEFT for server - DistributedMember serverLeft = new TestDistributedMember("serverLeft"); - InternalClientMembership.notifyLeft(serverLeft, SERVER); + InternalClientMembership.notifyServerLeft(serverLocation); Awaitility.await().pollInterval(100, TimeUnit.MILLISECONDS) .pollDelay(100, TimeUnit.MILLISECONDS).timeout(300, TimeUnit.SECONDS).until(() -> { return fired[LEFT]; @@ -322,8 +323,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { assertNull(memberId[JOINED]); assertFalse(isClient[JOINED]); assertTrue(fired[LEFT]); - assertEquals(serverLeft, member[LEFT]); - assertEquals(serverLeft.getId(), memberId[LEFT]); + assertNotNull(member[LEFT]); assertFalse(isClient[LEFT]); assertFalse(fired[CRASHED]); assertNull(memberId[CRASHED]); @@ -332,7 +332,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { // test LEFT for client DistributedMember clientLeft = new TestDistributedMember("clientLeft"); - InternalClientMembership.notifyLeft(clientLeft, CLIENT); + InternalClientMembership.notifyClientLeft(clientLeft); Awaitility.await().pollInterval(100, TimeUnit.MILLISECONDS) .pollDelay(100, TimeUnit.MILLISECONDS).timeout(300, TimeUnit.SECONDS).until(() -> { return fired[LEFT]; @@ -351,8 +351,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { resetArraysForTesting(fired, member, memberId, isClient); // test CRASHED for server - DistributedMember serverCrashed = new TestDistributedMember("serverCrashed"); - InternalClientMembership.notifyCrashed(serverCrashed, SERVER); + InternalClientMembership.notifyServerCrashed(serverLocation); Awaitility.await().pollInterval(100, TimeUnit.MILLISECONDS) .pollDelay(100, TimeUnit.MILLISECONDS).timeout(300, TimeUnit.SECONDS).until(() -> { return fired[CRASHED]; @@ -365,14 +364,13 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { assertNull(memberId[LEFT]); assertFalse(isClient[LEFT]); assertTrue(fired[CRASHED]); - assertEquals(serverCrashed, member[CRASHED]); - assertEquals(serverCrashed.getId(), memberId[CRASHED]); + assertNotNull(member[CRASHED]); assertFalse(isClient[CRASHED]); resetArraysForTesting(fired, member, memberId, isClient); // test CRASHED for client DistributedMember clientCrashed = new TestDistributedMember("clientCrashed"); - InternalClientMembership.notifyCrashed(clientCrashed, CLIENT); + InternalClientMembership.notifyClientCrashed(clientCrashed); Awaitility.await().pollInterval(100, TimeUnit.MILLISECONDS) .pollDelay(100, TimeUnit.MILLISECONDS).timeout(300, TimeUnit.SECONDS).until(() -> { return fired[CRASHED]; @@ -434,7 +432,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { // fire event to make sure listener is registered DistributedMember clientJoined = new TestDistributedMember("clientJoined"); - InternalClientMembership.notifyJoined(clientJoined, true); + InternalClientMembership.notifyClientJoined(clientJoined); Awaitility.await().pollInterval(100, TimeUnit.MILLISECONDS) .pollDelay(100, TimeUnit.MILLISECONDS).timeout(300, TimeUnit.SECONDS).until(() -> { return fired[JOINED]; @@ -452,7 +450,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { // unregister and verify listener is not notified ClientMembership.unregisterClientMembershipListener(listener); - InternalClientMembership.notifyJoined(clientJoined, true); + InternalClientMembership.notifyClientJoined(clientJoined); Awaitility.await().pollInterval(100, TimeUnit.MILLISECONDS) .pollDelay(100, TimeUnit.MILLISECONDS).until(() -> { return true; @@ -496,7 +494,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { } final DistributedMember clientJoined = new TestDistributedMember("clientJoined"); - InternalClientMembership.notifyJoined(clientJoined, true); + InternalClientMembership.notifyClientJoined(clientJoined); for (int i = 0; i < NUM_LISTENERS; i++) { synchronized (listeners[i]) { listeners[i].wait(20); @@ -523,7 +521,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { assertEquals(listeners[0], registeredListeners[0]); assertEquals(listeners[1], registeredListeners[1]); - InternalClientMembership.notifyJoined(clientJoined, true); + InternalClientMembership.notifyClientJoined(clientJoined); synchronized (listeners[1]) { if (!fired[1]) { listeners[1].wait(2000); @@ -549,7 +547,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { assertEquals(1, registeredListeners.length); assertEquals(listeners[1], registeredListeners[0]); - InternalClientMembership.notifyJoined(clientJoined, true); + InternalClientMembership.notifyClientJoined(clientJoined); synchronized (listeners[1]) { if (!fired[1]) { listeners[1].wait(2000); @@ -578,7 +576,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { assertEquals(listeners[2], registeredListeners[1]); assertEquals(listeners[3], registeredListeners[2]); - InternalClientMembership.notifyJoined(clientJoined, true); + InternalClientMembership.notifyClientJoined(clientJoined); synchronized (listeners[3]) { if (!fired[3]) { listeners[3].wait(2000); @@ -607,7 +605,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { assertEquals(listeners[3], registeredListeners[2]); assertEquals(listeners[0], registeredListeners[3]); - InternalClientMembership.notifyJoined(clientJoined, true); + InternalClientMembership.notifyClientJoined(clientJoined); synchronized (listeners[0]) { if (!fired[0]) { listeners[0].wait(2000); @@ -628,7 +626,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { assertEquals(listeners[2], registeredListeners[1]); assertEquals(listeners[0], registeredListeners[2]); - InternalClientMembership.notifyJoined(clientJoined, true); + InternalClientMembership.notifyClientJoined(clientJoined); synchronized (listeners[0]) { if (!fired[0]) { listeners[0].wait(2000); @@ -655,7 +653,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { assertEquals(listeners[1], registeredListeners[0]); assertEquals(listeners[0], registeredListeners[1]); - InternalClientMembership.notifyJoined(clientJoined, true); + InternalClientMembership.notifyClientJoined(clientJoined); synchronized (listeners[0]) { if (!fired[0]) { listeners[0].wait(2000); @@ -681,7 +679,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { registeredListeners = ClientMembership.getClientMembershipListeners(); assertEquals(0, registeredListeners.length); - InternalClientMembership.notifyJoined(clientJoined, true); + InternalClientMembership.notifyClientJoined(clientJoined); for (int i = 0; i < NUM_LISTENERS; i++) { synchronized (listeners[i]) { listeners[i].wait(20); @@ -698,7 +696,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { assertEquals(1, registeredListeners.length); assertEquals(listeners[1], registeredListeners[0]); - InternalClientMembership.notifyJoined(clientJoined, true); + InternalClientMembership.notifyClientJoined(clientJoined); synchronized (listeners[1]) { if (!fired[1]) { listeners[1].wait(2000); @@ -814,15 +812,13 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { // sanity check... System.out.println("[testClientMembershipEventsInClient] sanity check"); - DistributedMember test = new TestDistributedMember("test"); - InternalClientMembership.notifyJoined(test, SERVER); + InternalClientMembership.notifyServerJoined(serverLocation); Awaitility.await().pollInterval(50, TimeUnit.MILLISECONDS).timeout(300, TimeUnit.SECONDS) .pollDelay(50, TimeUnit.MILLISECONDS).until(() -> fired[JOINED] || fired[CRASHED]); assertTrue(fired[JOINED]); - assertEquals(test, member[JOINED]); - assertEquals(test.getId(), memberId[JOINED]); + assertNotNull(member[JOINED]); assertFalse(isClient[JOINED]); assertFalse(fired[LEFT]); assertNull(member[LEFT]); @@ -871,8 +867,6 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { assertTrue(fired[JOINED]); assertNotNull(member[JOINED]); assertNotNull(memberId[JOINED]); - assertEquals(serverMember, member[JOINED]); - assertEquals(serverMemberId, memberId[JOINED]); assertFalse(isClient[JOINED]); assertFalse(fired[LEFT]); assertNull(member[LEFT]); @@ -902,8 +896,6 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { assertTrue(fired[CRASHED]); assertNotNull(member[CRASHED]); assertNotNull(memberId[CRASHED]); - assertEquals(serverMember, member[CRASHED]); - assertEquals(serverMemberId, memberId[CRASHED]); assertFalse(isClient[CRASHED]); resetArraysForTesting(fired, member, memberId, isClient); @@ -927,8 +919,6 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { assertNotNull(member[JOINED]); assertNotNull(memberId[JOINED]); assertFalse(isClient[JOINED]); - assertEquals(serverMember, member[JOINED]); - assertEquals(serverMemberId, memberId[JOINED]); assertFalse(fired[LEFT]); assertNull(member[LEFT]); assertNull(memberId[LEFT]); @@ -1018,7 +1008,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { // sanity check... System.out.println("[testClientMembershipEventsInServer] sanity check"); DistributedMember test = new TestDistributedMember("test"); - InternalClientMembership.notifyJoined(test, CLIENT); + InternalClientMembership.notifyClientJoined(test); Awaitility.await().pollInterval(100, TimeUnit.MILLISECONDS) .pollDelay(100, TimeUnit.MILLISECONDS).timeout(300, TimeUnit.SECONDS).until(() -> { return fired[JOINED] || fired[LEFT] || fired[CRASHED]; @@ -1232,22 +1222,20 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { getSystem(config); // assert that event is fired while connected - DistributedMember serverJoined = new TestDistributedMember("serverJoined"); - InternalClientMembership.notifyJoined(serverJoined, SERVER); + InternalClientMembership.notifyServerJoined(serverLocation); Awaitility.await().pollInterval(100, TimeUnit.MILLISECONDS) .pollDelay(100, TimeUnit.MILLISECONDS).timeout(300, TimeUnit.SECONDS).until(() -> { return fired[JOINED]; }); assertTrue(fired[JOINED]); - assertEquals(serverJoined, member[JOINED]); - assertEquals(serverJoined.getId(), memberId[JOINED]); + assertNotNull(member[JOINED]); assertFalse(isClient[JOINED]); resetArraysForTesting(fired, member, memberId, isClient); // assert that event is NOT fired while disconnected disconnectFromDS(); - InternalClientMembership.notifyJoined(serverJoined, SERVER); + InternalClientMembership.notifyServerJoined(serverLocation); Awaitility.await().pollInterval(100, TimeUnit.MILLISECONDS) .pollDelay(100, TimeUnit.MILLISECONDS).until(() -> { return true; @@ -1264,15 +1252,14 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { InternalDistributedSystem sys = getSystem(config); assertTrue(sys.isConnected()); - InternalClientMembership.notifyJoined(serverJoined, SERVER); + InternalClientMembership.notifyServerJoined(serverLocation); Awaitility.await().pollInterval(100, TimeUnit.MILLISECONDS) .pollDelay(100, TimeUnit.MILLISECONDS).timeout(300, TimeUnit.SECONDS).until(() -> { return fired[JOINED]; }); assertTrue(fired[JOINED]); - assertEquals(serverJoined, member[JOINED]); - assertEquals(serverJoined.getId(), memberId[JOINED]); + assertNotNull(member[JOINED]); assertFalse(isClient[JOINED]); } http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/87f2fb5f/geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionManagerDUnitTest.java ---------------------------------------------------------------------- diff --git a/geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionManagerDUnitTest.java b/geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionManagerDUnitTest.java index 1329c24..b1478e2 100644 --- a/geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionManagerDUnitTest.java +++ b/geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionManagerDUnitTest.java @@ -234,8 +234,6 @@ public class DistributionManagerDUnitTest extends JUnit4DistributedTestCase { vm0.invoke(connectDisconnect); assertTrue("Member was not removed from surprise member set", !mgr.isSurpriseMember(mbr)); - } catch (UnknownHostException e) { - fail("unable to resolve localhost - test needs some attention", e); } finally { if (sys != null && sys.isConnected()) { sys.disconnect(); http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/87f2fb5f/geode-core/src/test/java/org/apache/geode/internal/cache/PartitionedRegionQueryEvaluatorIntegrationTest.java ---------------------------------------------------------------------- diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/PartitionedRegionQueryEvaluatorIntegrationTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/PartitionedRegionQueryEvaluatorIntegrationTest.java index 4e8408c..f19ba1c 100644 --- a/geode-core/src/test/java/org/apache/geode/internal/cache/PartitionedRegionQueryEvaluatorIntegrationTest.java +++ b/geode-core/src/test/java/org/apache/geode/internal/cache/PartitionedRegionQueryEvaluatorIntegrationTest.java @@ -235,20 +235,7 @@ public class PartitionedRegionQueryEvaluatorIntegrationTest { } private InternalDistributedMember createDataStoreMember(int i) { - String hostname = null; - InternalDistributedMember mem = null; - try { - mem = new InternalDistributedMember("host" + i, 3033); - } catch (java.net.UnknownHostException uhe) { - logger.severe( - "PartitionedRegion: initalizeNode() Unknown host = " + hostname + " servicePort = " + 0, - uhe); - throw new PartitionedRegionException( - "PartitionedRegionDataStore: initalizeNode() Unknown host = " + hostname - + " servicePort = " + 0, - uhe); - } - return mem; + return new InternalDistributedMember("host" + i, 3033); } /** @@ -257,14 +244,8 @@ public class PartitionedRegionQueryEvaluatorIntegrationTest { * @return */ public Node createNode(int i) { - Node node = null; - try { - node = new Node(new InternalDistributedMember("host" + i, 3033), i); - node.setPRType(Node.DATASTORE); - } catch (java.net.UnknownHostException uhe) { - logger.severe("PartitionedRegion: initalizeNode() threw exception", uhe); - throw new PartitionedRegionException("", uhe); - } + Node node = new Node(new InternalDistributedMember("host" + i, 3033), i); + node.setPRType(Node.DATASTORE); return node; } http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/87f2fb5f/geode-core/src/test/java/org/apache/geode/management/UniversalMembershipListenerAdapterDUnitTest.java ---------------------------------------------------------------------- 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 019bd0f..eb2e662 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 @@ -18,13 +18,17 @@ import static org.apache.geode.distributed.ConfigurationProperties.*; import static org.apache.geode.test.dunit.Assert.*; import static org.apache.geode.test.dunit.LogWriterUtils.*; +import com.jayway.awaitility.Awaitility; + import java.io.IOException; 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 org.apache.geode.distributed.internal.ServerLocation; import org.junit.Test; import org.junit.experimental.categories.Category; @@ -78,7 +82,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes /** 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 = 120000; + private static final int JOIN_FAIL_MILLIS = 30000; // the following wait millis are max wait time until notify occurs @@ -87,7 +91,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes /** 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 = 120000; // use Integer.MAX_VALUE for debugging + private static final int ASYNC_EVENT_WAIT_MILLIS = 30000; // use Integer.MAX_VALUE for debugging @Override public final void postTearDownCacheTestCase() throws Exception { @@ -132,7 +136,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes }; DistributedMember clientJoined = new TestDistributedMember("clientJoined"); - InternalClientMembership.notifyJoined(clientJoined, true); + InternalClientMembership.notifyClientJoined(clientJoined); synchronized (listener) { if (!fired[0]) { listener.wait(SYNC_ASYNC_EVENT_WAIT_MILLIS); @@ -190,9 +194,10 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes }; DistributedMember memberA = new TestDistributedMember("memberA"); + ServerLocation serverA = new ServerLocation("serverA", 0); // first join - InternalClientMembership.notifyJoined(memberA, true); + InternalClientMembership.notifyClientJoined(memberA); synchronized (listener) { if (!fired[JOINED]) { listener.wait(SYNC_ASYNC_EVENT_WAIT_MILLIS); @@ -206,14 +211,14 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes memberId[JOINED] = null; // duplicate join - InternalClientMembership.notifyJoined(memberA, true); + InternalClientMembership.notifyClientJoined(memberA); Wait.pause(BRIEF_PAUSE_MILLIS); assertFalse(fired[JOINED]); assertNull(member[JOINED]); assertNull(memberId[JOINED]); // first left - InternalClientMembership.notifyLeft(memberA, true); + InternalClientMembership.notifyClientLeft(memberA); synchronized (listener) { if (!fired[LEFT]) { listener.wait(SYNC_ASYNC_EVENT_WAIT_MILLIS); @@ -227,14 +232,14 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes memberId[LEFT] = null; // duplicate left - InternalClientMembership.notifyLeft(memberA, true); + InternalClientMembership.notifyClientLeft(memberA); Wait.pause(BRIEF_PAUSE_MILLIS); assertFalse(fired[LEFT]); assertNull(member[LEFT]); assertNull(memberId[LEFT]); // rejoin - InternalClientMembership.notifyJoined(memberA, true); + InternalClientMembership.notifyClientJoined(memberA); synchronized (listener) { if (!fired[JOINED]) { listener.wait(SYNC_ASYNC_EVENT_WAIT_MILLIS); @@ -399,7 +404,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes final int[] ports = new int[1]; // create BridgeServer in controller vm... - getLogWriter().info("[testLonerClientEventsInServer] Create BridgeServer"); + System.out.println("[testLonerClientEventsInServer] Create BridgeServer"); getSystem(); AttributesFactory factory = new AttributesFactory(); factory.setScope(Scope.LOCAL); @@ -413,9 +418,9 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes final String serverMemberId = serverMember.toString(); final Properties serverProperties = getSystem().getProperties(); - getLogWriter().info("[testLonerClientEventsInServer] ports[0]=" + ports[0]); - getLogWriter().info("[testLonerClientEventsInServer] serverMemberId=" + serverMemberId); - getLogWriter().info("[testLonerClientEventsInServer] serverMember=" + serverMember); + System.out.println("[testLonerClientEventsInServer] ports[0]=" + ports[0]); + System.out.println("[testLonerClientEventsInServer] serverMemberId=" + serverMemberId); + System.out.println("[testLonerClientEventsInServer] serverMember=" + serverMember); // register the bridge listener ClientMembership.registerClientMembershipListener(bridgeListener); @@ -433,7 +438,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes SerializableCallable createBridgeClient = new SerializableCallable("Create bridge client") { @Override public Object call() { - getLogWriter().info("[testLonerClientEventsInServer] create bridge client"); + System.out.println("[testLonerClientEventsInServer] create bridge client"); Properties config = new Properties(); config.setProperty(MCAST_PORT, "0"); config.setProperty(LOCATORS, ""); @@ -466,7 +471,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes } } - getLogWriter().info("[testLonerClientEventsInServer] assert server detected client join"); + 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 @@ -512,7 +517,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes vm0.invoke(new SerializableRunnable("Wait for client to fully connect") { public void run() { - getLogWriter().info("[testLonerClientEventsInServer] wait for client to fully connect"); + 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); @@ -521,7 +526,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes vm0.invoke(new SerializableRunnable("Close bridge client region") { public void run() { - getLogWriter().info("[testLonerClientEventsInServer] close bridge client region"); + System.out.println("[testLonerClientEventsInServer] close bridge client region"); getRootRegion().getSubregion(name).close(); PoolManager.close(); } @@ -538,7 +543,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes } } - getLogWriter().info("[testLonerClientEventsInServer] assert server detected client left"); + System.out.println("[testLonerClientEventsInServer] assert server detected client left"); assertFalse(firedBridge[JOINED]); assertNull(memberIdBridge[JOINED]); @@ -597,7 +602,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes } } - getLogWriter().info("[testLonerClientEventsInServer] assert server detected client re-join"); + System.out.println("[testLonerClientEventsInServer] assert server detected client re-join"); assertTrue(firedBridge[JOINED]); assertEquals(clientMember, memberBridge[JOINED]); assertEquals(clientMemberId, memberIdBridge[JOINED]); @@ -642,7 +647,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes vm0.invoke(new SerializableRunnable("Wait for client to fully connect") { public void run() { - getLogWriter().info("[testLonerClientEventsInServer] wait for client to fully connect"); + 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); @@ -653,7 +658,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes try { vm0.invoke(new SerializableRunnable("Stop bridge client") { public void run() { - getLogWriter().info("[testLonerClientEventsInServer] Stop bridge client"); + System.out.println("[testLonerClientEventsInServer] Stop bridge client"); getRootRegion().getSubregion(name).close(); PoolManager.close(); } @@ -670,7 +675,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes } } - getLogWriter().info("[testLonerClientEventsInServer] assert server detected client crashed"); + System.out.println("[testLonerClientEventsInServer] assert server detected client crashed"); assertFalse(firedBridge[JOINED]); assertNull(memberIdBridge[JOINED]); assertNull(memberBridge[JOINED]); @@ -857,7 +862,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes final int[] ports = new int[1]; // create BridgeServer in controller vm... - getLogWriter().info("[doTestSystemClientEventsInServer] Create BridgeServer"); + System.out.println("[doTestSystemClientEventsInServer] Create BridgeServer"); getSystem(); AttributesFactory factory = new AttributesFactory(); factory.setScope(Scope.LOCAL); @@ -877,9 +882,9 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes serverProperties.remove(CLUSTER_SSL_PROTOCOLS); serverProperties.remove(CLUSTER_SSL_REQUIRE_AUTHENTICATION); - getLogWriter().info("[doTestSystemClientEventsInServer] ports[0]=" + ports[0]); - getLogWriter().info("[doTestSystemClientEventsInServer] serverMemberId=" + serverMemberId); - getLogWriter().info("[doTestSystemClientEventsInServer] serverMember=" + serverMember); + 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); @@ -897,7 +902,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes SerializableCallable createBridgeClient = new SerializableCallable("Create bridge client") { @Override public Object call() { - getLogWriter().info("[doTestSystemClientEventsInServer] create system bridge client"); + System.out.println("[doTestSystemClientEventsInServer] create system bridge client"); assertTrue(getSystem(serverProperties).isConnected()); assertFalse(getCache().isClosed()); AttributesFactory factory = new AttributesFactory(); @@ -931,7 +936,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes } } - getLogWriter().info("[doTestSystemClientEventsInServer] assert server detected client join"); + System.out.println("[doTestSystemClientEventsInServer] assert server detected client join"); assertArrayFalse(firedSystemDuplicate); assertArrayFalse(firedAdapterDuplicate); assertArrayFalse(firedBridgeDuplicate); @@ -980,7 +985,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes vm0.invoke(new SerializableRunnable("Wait for client to fully connect") { public void run() { - getLogWriter().info("[doTestSystemClientEventsInServer] wait for client to fully connect"); + 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); @@ -990,7 +995,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes // close bridge client region vm0.invoke(new SerializableRunnable("Close bridge client region") { public void run() { - getLogWriter().info("[doTestSystemClientEventsInServer] close bridge client region"); + System.out.println("[doTestSystemClientEventsInServer] close bridge client region"); getRootRegion().getSubregion(name).close(); PoolManager.close(); } @@ -1007,7 +1012,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes } } - getLogWriter().info("[doTestSystemClientEventsInServer] assert server detected client left"); + System.out.println("[doTestSystemClientEventsInServer] assert server detected client left"); assertArrayFalse(firedSystemDuplicate); assertArrayFalse(firedAdapterDuplicate); assertArrayFalse(firedBridgeDuplicate); @@ -1069,7 +1074,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes } } - getLogWriter().info("[doTestSystemClientEventsInServer] assert server detected client re-join"); + System.out.println("[doTestSystemClientEventsInServer] assert server detected client re-join"); assertArrayFalse(firedSystemDuplicate); assertArrayFalse(firedAdapterDuplicate); assertArrayFalse(firedBridgeDuplicate); @@ -1118,7 +1123,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes vm0.invoke(new SerializableRunnable("Wait for client to fully connect") { public void run() { - getLogWriter().info("[doTestSystemClientEventsInServer] wait for client to fully connect"); + 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); @@ -1128,7 +1133,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes // have bridge client disconnect from system vm0.invoke(new SerializableRunnable("Disconnect bridge client") { public void run() { - getLogWriter().info("[doTestSystemClientEventsInServer] disconnect bridge client"); + System.out.println("[doTestSystemClientEventsInServer] disconnect bridge client"); closeCache(); disconnectFromDS(); } @@ -1150,7 +1155,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes } } - getLogWriter().info("[doTestSystemClientEventsInServer] assert server detected client left"); + System.out.println("[doTestSystemClientEventsInServer] assert server detected client left"); assertArrayFalse(firedSystemDuplicate); assertArrayFalse(firedAdapterDuplicate); assertArrayFalse(firedBridgeDuplicate); @@ -1217,7 +1222,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes } } - getLogWriter().info("[doTestSystemClientEventsInServer] assert server detected client re-join"); + System.out.println("[doTestSystemClientEventsInServer] assert server detected client re-join"); assertArrayFalse(firedSystemDuplicate); assertArrayFalse(firedAdapterDuplicate); assertArrayFalse(firedBridgeDuplicate); @@ -1266,7 +1271,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes vm0.invoke(new SerializableRunnable("Wait for client to fully connect") { public void run() { - getLogWriter().info("[doTestSystemClientEventsInServer] wait for client to fully connect"); + 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); @@ -1278,7 +1283,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes try { vm0.invoke(new SerializableRunnable("Close bridge client region") { public void run() { - getLogWriter().info("[doTestSystemClientEventsInServer] close bridge client region"); + System.out.println("[doTestSystemClientEventsInServer] close bridge client region"); getRootRegion().getSubregion(name).close(); PoolManager.close(); } @@ -1349,7 +1354,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes * the pool has more than one Endpoint. */ protected void waitForClientToFullyConnect(final PoolImpl pool) { - getLogWriter().info("[waitForClientToFullyConnect]"); + System.out.println("[waitForClientToFullyConnect]"); final long failMillis = System.currentTimeMillis() + JOIN_FAIL_MILLIS; boolean fullyConnected = false; while (!fullyConnected) { @@ -1359,7 +1364,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes + JOIN_FAIL_MILLIS + " milliseconds. Only " + pool.getConnectionCount() + " connections were created.", System.currentTimeMillis() < failMillis); } - getLogWriter().info("[waitForClientToFullyConnect] fullyConnected=" + fullyConnected); + System.out.println("[waitForClientToFullyConnect] fullyConnected=" + fullyConnected); } /** @@ -1556,7 +1561,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes assertTrue(ports[0] != 0); // create BridgeServer in controller vm... - getLogWriter().info("[doTestSystemClientEventsInServer] Create BridgeServer"); + System.out.println("[doTestSystemClientEventsInServer] Create BridgeServer"); getSystem(); AttributesFactory factory = new AttributesFactory(); factory.setScope(Scope.LOCAL); @@ -1575,9 +1580,9 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes serverProperties.remove(CLUSTER_SSL_PROTOCOLS); serverProperties.remove(CLUSTER_SSL_REQUIRE_AUTHENTICATION); - getLogWriter().info("[testServerEventsInPeerSystem] ports[0]=" + ports[0]); - getLogWriter().info("[testServerEventsInPeerSystem] serverMemberId=" + serverMemberId); - getLogWriter().info("[testServerEventsInPeerSystem] serverMember=" + serverMember); + 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); @@ -1592,7 +1597,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes SerializableCallable createPeerCache = new SerializableCallable("Create Peer Cache") { @Override public Object call() { - getLogWriter().info("[testServerEventsInPeerSystem] Create Peer cache"); + System.out.println("[testServerEventsInPeerSystem] Create Peer cache"); getSystem(serverProperties); AttributesFactory factory = new AttributesFactory(); factory.setScope(Scope.LOCAL); @@ -1606,8 +1611,8 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes DistributedMember peerMember = (DistributedMember) vm0.invoke(createPeerCache); String peerMemberId = peerMember.toString(); - getLogWriter().info("[testServerEventsInPeerSystem] peerMemberId=" + peerMemberId); - getLogWriter().info("[testServerEventsInPeerSystem] peerMember=" + peerMember); + System.out.println("[testServerEventsInPeerSystem] peerMemberId=" + peerMemberId); + System.out.println("[testServerEventsInPeerSystem] peerMember=" + peerMember); @@ -1622,7 +1627,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes } } - getLogWriter().info("[testServerEventsInPeerSystem] assert server detected peer join"); + System.out.println("[testServerEventsInPeerSystem] assert server detected peer join"); assertArrayFalse(firedSystemDuplicate); // TODO: sometimes get adapter duplicate since memberId isn't endpoint // initial impl uses Endpoint.toString() for memberId of server; final @@ -1669,7 +1674,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes try { vm0.invoke(new SerializableRunnable("Disconnect Peer server") { public void run() { - getLogWriter().info("[testServerEventsInPeerSystem] disconnect peer server"); + System.out.println("[testServerEventsInPeerSystem] disconnect peer server"); closeCache(); disconnectFromDS(); } @@ -1692,7 +1697,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes ex.remove(); } - getLogWriter().info("[testServerEventsInPeerSystem] assert server detected peer crashed"); + System.out.println("[testServerEventsInPeerSystem] assert server detected peer crashed"); assertArrayFalse(firedSystemDuplicate); // TODO: sometimes get adapter duplicate since memberId isn't endpoint // initial impl uses Endpoint.toString() for memberId of server; final @@ -1775,8 +1780,8 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes UniversalMembershipListenerAdapter adapter = new UniversalMembershipListenerAdapter() { @Override public synchronized void memberJoined(MembershipEvent event) { - getLogWriter() - .info("[testServerEventsInLonerClient] memberJoined >" + event.getMemberId() + "<"); + System.out + .println("[testServerEventsInLonerClient] memberJoined >" + event.getMemberId() + "<"); firedAdapterDuplicate[JOINED] = firedAdapter[JOINED]; firedAdapter[JOINED] = true; memberAdapter[JOINED] = event.getDistributedMember(); @@ -1790,8 +1795,8 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes @Override public synchronized void memberLeft(MembershipEvent event) { - getLogWriter() - .info("[testServerEventsInLonerClient] memberLeft >" + event.getMemberId() + "<"); + System.out + .println("[testServerEventsInLonerClient] memberLeft >" + event.getMemberId() + "<"); firedAdapterDuplicate[LEFT] = firedAdapter[LEFT]; firedAdapter[LEFT] = true; memberAdapter[LEFT] = event.getDistributedMember(); @@ -1805,8 +1810,8 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes @Override public synchronized void memberCrashed(MembershipEvent event) { - getLogWriter() - .info("[testServerEventsInLonerClient] memberCrashed >" + event.getMemberId() + "<"); + System.out + .println("[testServerEventsInLonerClient] memberCrashed >" + event.getMemberId() + "<"); firedAdapterDuplicate[CRASHED] = firedAdapter[CRASHED]; firedAdapter[CRASHED] = true; memberAdapter[CRASHED] = event.getDistributedMember(); @@ -1854,14 +1859,15 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes final int[] ports = new int[] {AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET)}; assertTrue(ports[0] != 0); - getLogWriter().info("[testServerEventsInLonerClient] create loner bridge client"); + System.out.println("[testServerEventsInLonerClient] create loner bridge client"); Properties config = new Properties(); - config.setProperty(MCAST_PORT, "0"); - config.setProperty(LOCATORS, ""); + config.put(MCAST_PORT, "0"); + config.put(LOCATORS, ""); + // config.put(LOG_LEVEL, "fine"); // config.setProperty(ENABLE_NETWORK_PARTITION_DETECTION, "false"); getSystem(config); - getLogWriter().info("[testServerEventsInLonerClient] create system bridge client"); + System.out.println("[testServerEventsInLonerClient] create system bridge client"); getSystem(); // register the bridge listener @@ -1876,7 +1882,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes SerializableCallable createBridgeServer = new SerializableCallable("Create BridgeServer") { @Override public Object call() { - getLogWriter().info("[testServerEventsInLonerClient] Create BridgeServer"); + System.out.println("[testServerEventsInLonerClient] Create BridgeServer"); getSystem(); AttributesFactory factory = new AttributesFactory(); factory.setScope(Scope.LOCAL); @@ -1900,9 +1906,9 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes assertEquals(ports[0], (int) vm0.invoke("getServerPort", () -> UniversalMembershipListenerAdapterDUnitTest.getTestServerEventsInLonerClient_port())); - getLogWriter().info("[testServerEventsInLonerClient] ports[0]=" + ports[0]); - getLogWriter().info("[testServerEventsInLonerClient] serverMemberId=" + serverMemberId); - getLogWriter().info("[testServerEventsInLonerClient] serverMember=" + serverMember); + System.out.println("[testServerEventsInLonerClient] ports[0]=" + ports[0]); + System.out.println("[testServerEventsInLonerClient] serverMemberId=" + serverMemberId); + System.out.println("[testServerEventsInLonerClient] serverMember=" + serverMember); // create region which connects to bridge server AttributesFactory factory = new AttributesFactory(); @@ -1912,18 +1918,20 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes createRegion(name, factory.create()); assertNotNull(getRootRegion().getSubregion(name)); - synchronized (adapter) { - if (!firedAdapter[JOINED]) { - adapter.wait(ASYNC_EVENT_WAIT_MILLIS); - } - } - synchronized (bridgeListener) { - if (!firedBridge[JOINED]) { - bridgeListener.wait(ASYNC_EVENT_WAIT_MILLIS); - } - } - - getLogWriter().info("[testServerEventsInLonerClient] assert client detected server join"); + 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"); // TODO: sometimes get adapter duplicate since memberId isn't endpoint KIRK // initial impl uses Endpoint.toString() for memberId of server; final // impl should have server send its real memberId to client via HandShake @@ -1933,8 +1941,6 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes assertArrayFalse(firedBridgeDuplicate); assertTrue(firedBridge[JOINED]); - assertEquals(serverMember, memberBridge[JOINED]); - assertEquals(serverMemberId, memberIdBridge[JOINED]); assertNotNull(memberBridge[JOINED]); assertNotNull(memberIdBridge[JOINED]); assertFalse(isClientBridge[JOINED]); @@ -1949,8 +1955,6 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes resetArraysForTesting(firedBridge, memberBridge, memberIdBridge, isClientBridge); assertTrue(firedAdapter[JOINED]); - assertEquals(serverMember, memberAdapter[JOINED]); - assertEquals(serverMemberId, memberIdAdapter[JOINED]); assertNotNull(memberIdAdapter[JOINED]); assertFalse(isClientAdapter[JOINED]); assertFalse(firedAdapter[LEFT]); @@ -1963,7 +1967,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes assertFalse(isClientAdapter[CRASHED]); resetArraysForTesting(firedAdapter, memberAdapter, memberIdAdapter, isClientAdapter); - getLogWriter().info("[testServerEventsInLonerClient] wait for client to fully connect"); + 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); @@ -1988,22 +1992,24 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes try { vm0.invoke(new SerializableRunnable("Disconnect bridge server") { public void run() { - getLogWriter().info("[testServerEventsInLonerClient] disconnect bridge server"); + System.out.println("[testServerEventsInLonerClient] disconnect bridge server"); closeCache(); } }); - synchronized (adapter) { - if (!firedAdapter[LEFT]) { - adapter.wait(ASYNC_EVENT_WAIT_MILLIS); - } - } + 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]; + } + }); - synchronized (bridgeListener) { - if (!firedBridge[LEFT] && !firedBridge[CRASHED]) { - bridgeListener.wait(ASYNC_EVENT_WAIT_MILLIS); - } - } } finally { // bgexecLogger.info(removeExpected); // bgexecLogger.info(removeExpected2); @@ -2011,7 +2017,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes lw.info(removeExpected2); } - getLogWriter().info("[testServerEventsInLonerClient] assert client detected server crashed"); + System.out.println("[testServerEventsInLonerClient] assert client detected server crashed"); // TODO: sometimes get adapter duplicate since memberId isn't endpoint KIRK // initial impl uses Endpoint.toString() for memberId of server; final // impl should have server send its real memberId to client via HandShake @@ -2033,8 +2039,6 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes assertTrue(firedBridge[CRASHED]); assertNotNull(memberBridge[CRASHED]); assertNotNull(memberIdBridge[CRASHED]); - assertEquals(serverMember, memberAdapter[CRASHED]); - assertEquals(serverMemberId, memberIdAdapter[CRASHED]); assertFalse(isClientBridge[CRASHED]); resetArraysForTesting(firedBridge, memberBridge, memberIdBridge, isClientBridge); @@ -2051,8 +2055,6 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes assertTrue(firedAdapter[CRASHED]); assertNotNull(memberAdapter[CRASHED]); assertNotNull(memberIdAdapter[CRASHED]); - assertEquals(serverMember, memberAdapter[CRASHED]); - assertEquals(serverMemberId, memberIdAdapter[CRASHED]); assertFalse(isClientAdapter[CRASHED]); resetArraysForTesting(firedAdapter, memberAdapter, memberIdAdapter, isClientAdapter); @@ -2063,25 +2065,27 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes // gather details for later creation of pool... assertEquals(ports[0], (int) vm0.invoke( () -> UniversalMembershipListenerAdapterDUnitTest.getTestServerEventsInLonerClient_port())); - serverMember = (DistributedMember) vm0 - .invoke(() -> UniversalMembershipListenerAdapterDUnitTest.getDistributedMember()); - - getLogWriter().info("[testServerEventsInLonerClient] ports[0]=" + ports[0]); - getLogWriter().info("[testServerEventsInLonerClient] serverMemberId=" + serverMemberId); - getLogWriter().info("[testServerEventsInLonerClient] serverMember=" + serverMember); - - synchronized (adapter) { - if (!firedAdapter[JOINED]) { - adapter.wait(ASYNC_EVENT_WAIT_MILLIS); - } - } - synchronized (bridgeListener) { - if (!firedBridge[JOINED]) { - bridgeListener.wait(ASYNC_EVENT_WAIT_MILLIS); - } - } - - getLogWriter().info("[testServerEventsInLonerClient] assert client detected server re-join"); + 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"); // TODO: sometimes get adapter duplicate since memberId isn't endpoint KIRK // initial impl uses Endpoint.toString() for memberId of server; final // impl should have server send its real memberId to client via HandShake @@ -2093,8 +2097,6 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes assertTrue(firedBridge[JOINED]); assertNotNull(memberBridge[JOINED]); assertNotNull(memberIdBridge[JOINED]); - assertEquals(serverMember, memberBridge[JOINED]); - assertEquals(serverMemberId, memberIdBridge[JOINED]); assertFalse(isClientBridge[JOINED]); assertFalse(firedBridge[LEFT]); assertNull(memberBridge[LEFT]); @@ -2107,8 +2109,6 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes resetArraysForTesting(firedBridge, memberBridge, memberIdBridge, isClientBridge); assertTrue(firedAdapter[JOINED]); - assertEquals(serverMember, memberAdapter[JOINED]); - assertEquals(serverMemberId, memberIdAdapter[JOINED]); assertNotNull(memberAdapter[JOINED]); assertNotNull(memberIdAdapter[JOINED]); assertFalse(isClientAdapter[JOINED]); http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/87f2fb5f/geode-core/src/test/java/org/apache/geode/test/fake/Fakes.java ---------------------------------------------------------------------- diff --git a/geode-core/src/test/java/org/apache/geode/test/fake/Fakes.java b/geode-core/src/test/java/org/apache/geode/test/fake/Fakes.java index aaf3e28..93195c1 100644 --- a/geode-core/src/test/java/org/apache/geode/test/fake/Fakes.java +++ b/geode-core/src/test/java/org/apache/geode/test/fake/Fakes.java @@ -68,11 +68,7 @@ public class Fakes { Statistics stats = mock(Statistics.class); InternalDistributedMember member; - try { - member = new InternalDistributedMember("localhost", 5555); - } catch (UnknownHostException e) { - throw new RuntimeException(e); - } + member = new InternalDistributedMember("localhost", 5555); when(config.getCacheXmlFile()).thenReturn(new File("")); when(config.getDeployWorkingDir()).thenReturn(new File("."));
