diff options
author | Alex Rudyy <orudyy@apache.org> | 2014-09-03 16:17:46 +0000 |
---|---|---|
committer | Alex Rudyy <orudyy@apache.org> | 2014-09-03 16:17:46 +0000 |
commit | 2a86248aa15ce17c3d5b1b5746c94ea3729a1e59 (patch) | |
tree | 3447fd98884918e5dbf0f3bc2793f8f90f638e1d | |
parent | c0f74b98818faf83be72fc65f1b7c6be31cbbc29 (diff) | |
download | qpid-python-2a86248aa15ce17c3d5b1b5746c94ea3729a1e59.tar.gz |
QPID-6067: Fix test BDBHAVirtualHostNodeOperationalLoggingTest.testRemoteNodeDetached
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1622293 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | java/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeOperationalLoggingTest.java | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/java/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeOperationalLoggingTest.java b/java/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeOperationalLoggingTest.java index 7cfc28ffb2..a567efb00d 100644 --- a/java/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeOperationalLoggingTest.java +++ b/java/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeOperationalLoggingTest.java @@ -26,12 +26,16 @@ import static org.mockito.Mockito.*; import java.util.Collections; import java.util.EnumSet; import java.util.Map; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; import org.apache.qpid.server.logging.EventLogger; import org.apache.qpid.server.logging.LogMessage; import org.apache.qpid.server.logging.LogSubject; import org.apache.qpid.server.logging.messages.HighAvailabilityMessages; +import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.SystemConfig; +import org.apache.qpid.server.store.berkeleydb.NoopConfigurationChangeListener; import org.apache.qpid.test.utils.QpidTestCase; import org.hamcrest.Description; import org.mockito.ArgumentMatcher; @@ -252,20 +256,39 @@ public class BDBHAVirtualHostNodeOperationalLoggingTest extends QpidTestCase Map<String, Object> node1Attributes = _helper.createNodeAttributes(nodeName, groupName, helperAddress, helperAddress, nodeName, node1PortNumber, node2PortNumber); node1Attributes.put(BDBHAVirtualHostNode.DESIGNATED_PRIMARY, true); BDBHAVirtualHostNodeImpl node1 = (BDBHAVirtualHostNodeImpl)_helper.createHaVHN(node1Attributes); - _helper.assertNodeRole(node1, NodeRole.MASTER); + final CountDownLatch remoteNodeAdded = new CountDownLatch(1); + node1.addChangeListener(new NoopConfigurationChangeListener() + { + @Override + public void childAdded(ConfiguredObject<?> object, ConfiguredObject<?> child) + { + if (child instanceof BDBHARemoteReplicationNode) + { + remoteNodeAdded.countDown(); + } + } + }); Map<String, Object> node2Attributes = _helper.createNodeAttributes("node2", groupName, "localhost:" + node2PortNumber, helperAddress, nodeName); BDBHAVirtualHostNodeImpl node2 = (BDBHAVirtualHostNodeImpl)_helper.createHaVHN(node2Attributes); - _helper.awaitRemoteNodes(node1, 1); - reset(_eventLogger); + assertTrue("Remote node was not added during expected period of time", remoteNodeAdded.await(10, TimeUnit.SECONDS)); + BDBHARemoteReplicationNodeImpl remoteNode = (BDBHARemoteReplicationNodeImpl)node1.getRemoteReplicationNodes().iterator().next(); + waitForRemoteNodeToAttainRole(remoteNode, EnumSet.of(NodeRole.REPLICA)); + + + reset(_eventLogger); // close remote node node2.close(); - waitForRemoteNodeToAttainRole(remoteNode, EnumSet.of(NodeRole.DETACHED)); + + waitForRemoteNodeToAttainRole(remoteNode, EnumSet.of(NodeRole.UNREACHABLE)); + + // make sure that task executor thread finishes all scheduled tasks + node1.stop(); // verify that remaining node issues the DETACHED operational logging for remote node String expectedMessage = HighAvailabilityMessages.LEFT(node2.getName(), node2.getAddress()).toString(); @@ -294,10 +317,11 @@ public class BDBHAVirtualHostNodeOperationalLoggingTest extends QpidTestCase _helper.awaitRemoteNodes(node1, 1); BDBHARemoteReplicationNodeImpl remoteNode = (BDBHARemoteReplicationNodeImpl)node1.getRemoteReplicationNodes().iterator().next(); + waitForRemoteNodeToAttainRole(remoteNode, EnumSet.of(NodeRole.REPLICA)); node2.close(); - waitForRemoteNodeToAttainRole(remoteNode, EnumSet.of(NodeRole.DETACHED)); + waitForRemoteNodeToAttainRole(remoteNode, EnumSet.of(NodeRole.UNREACHABLE)); reset(_eventLogger); @@ -307,6 +331,9 @@ public class BDBHAVirtualHostNodeOperationalLoggingTest extends QpidTestCase _helper.assertNodeRole(node2, NodeRole.REPLICA, NodeRole.MASTER); waitForRemoteNodeToAttainRole(remoteNode, EnumSet.of(NodeRole.REPLICA, NodeRole.MASTER)); + // make sure that task executor thread finishes all scheduled tasks + node1.stop(); + final String expectedMessage = HighAvailabilityMessages.JOINED(node2.getName(), node2.getAddress()).toString(); verify(_eventLogger).message(argThat(new LogSubjectMatcher(node1.getGroupLogSubject())), argThat(new LogMessageMatcher(expectedMessage, HighAvailabilityMessages.JOINED_LOG_HIERARCHY))); |