diff options
| author | Alex Rudyy <orudyy@apache.org> | 2014-05-01 15:16:20 +0000 |
|---|---|---|
| committer | Alex Rudyy <orudyy@apache.org> | 2014-05-01 15:16:20 +0000 |
| commit | f60e2533a75aa49ab986341835c57d66ee88b75b (patch) | |
| tree | e44876ca64aed5955519a79b84bf487267ff4bb9 /qpid/java/bdbstore/src/test | |
| parent | 7781dfa9b4dbd3897c9d1ce6e38daa417dc42e5d (diff) | |
| download | qpid-python-f60e2533a75aa49ab986341835c57d66ee88b75b.tar.gz | |
QPID-5715: Fix sporadically faling BDB HA tests
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1591677 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/bdbstore/src/test')
| -rw-r--r-- | qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java | 47 |
1 files changed, 27 insertions, 20 deletions
diff --git a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java index 78a86c685d..5e5458b382 100644 --- a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java +++ b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java @@ -47,6 +47,7 @@ import org.apache.qpid.server.model.VirtualHostNode; import org.apache.qpid.server.store.DurableConfigurationStore; import org.apache.qpid.server.util.BrokerTestHelper; import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHARemoteReplicationNode; +import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHARemoteReplicationNodeImpl; import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNode; import org.apache.qpid.test.utils.QpidTestCase; import org.apache.qpid.util.FileUtils; @@ -315,19 +316,9 @@ public class BDBHAVirtualHostNodeTest extends QpidTestCase replica.setAttribute(BDBHAVirtualHostNode.ROLE, "REPLICA", "MASTER"); - int awaitMastershipCount = 0; - while(!"MASTER".equals(replica.getRole())) - { - Thread.sleep(100); - if (awaitMastershipCount > 50) - { - fail("Replica did not assume master role"); - } - awaitMastershipCount++; - } + assertNodeRole(replica, "MASTER"); } - public void testTransferMasterToReplica() throws Exception { int node1PortNumber = findFreePort(); @@ -404,20 +395,22 @@ public class BDBHAVirtualHostNodeTest extends QpidTestCase assertTrue("Replication nodes have not been seen during 5s", remoteNodeLatch.await(5, TimeUnit.SECONDS)); Collection<? extends RemoteReplicationNode> remoteNodes = node1.getRemoteReplicationNodes(); - RemoteReplicationNode replicaRemoteNode = remoteNodes.iterator().next(); - replicaRemoteNode.setAttribute(BDBHARemoteReplicationNode.ROLE, "REPLICA", "MASTER"); + BDBHARemoteReplicationNodeImpl replicaRemoteNode = (BDBHARemoteReplicationNodeImpl)remoteNodes.iterator().next(); - BDBHAVirtualHostNode<?> replica = replicaRemoteNode.getName().equals(node2.getName())? node2 : node3; - int awaitMastershipCount = 0; - while(!"MASTER".equals(replica.getRole())) + long awaitReplicaRoleCount = 0; + while(!"REPLICA".equals(replicaRemoteNode.getRole())) { Thread.sleep(100); - if (awaitMastershipCount > 50) + if (awaitReplicaRoleCount > 50) { - fail("Replica did not assume master role"); + fail("Remote replication node is not in a REPLICA role"); } - awaitMastershipCount++; + awaitReplicaRoleCount++; } + replicaRemoteNode.setAttributes(Collections.<String,Object>singletonMap(BDBHARemoteReplicationNode.ROLE, "MASTER")); + + BDBHAVirtualHostNode<?> replica = replicaRemoteNode.getName().equals(node2.getName())? node2 : node3; + assertNodeRole(replica, "MASTER"); } public void testMutatingRoleWhenNotReplica_IsDisallowed() throws Exception @@ -438,7 +431,7 @@ public class BDBHAVirtualHostNodeTest extends QpidTestCase BDBHAVirtualHostNode<?> node = createHaVHN(node1Attributes); assertEquals("Failed to activate node", State.ACTIVE, node.setDesiredState(node.getState(), State.ACTIVE)); - assertEquals("Node is expected to be master", "MASTER", node.getRole()); + assertNodeRole(node, "MASTER"); try { @@ -458,6 +451,20 @@ public class BDBHAVirtualHostNodeTest extends QpidTestCase _nodes.add(node); return node; } + + private void assertNodeRole(BDBHAVirtualHostNode<?> node, String roleName) throws InterruptedException + { + int awaitMastershipCount = 0; + while(!roleName.equals(node.getRole())) + { + Thread.sleep(100); + if (awaitMastershipCount > 50) + { + fail("Node " + node.getName() + " did not transit into role " + roleName); + } + awaitMastershipCount++; + } + } } |
