summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Rudyy <orudyy@apache.org>2014-09-03 16:17:46 +0000
committerAlex Rudyy <orudyy@apache.org>2014-09-03 16:17:46 +0000
commit2a86248aa15ce17c3d5b1b5746c94ea3729a1e59 (patch)
tree3447fd98884918e5dbf0f3bc2793f8f90f638e1d
parentc0f74b98818faf83be72fc65f1b7c6be31cbbc29 (diff)
downloadqpid-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.java37
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)));