Author: orudyy
Date: Thu May  1 15:16:20 2014
New Revision: 1591677

URL: http://svn.apache.org/r1591677
Log:
QPID-5715: Fix sporadically faling BDB HA tests

Modified:
    
qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java

Modified: 
qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java?rev=1591677&r1=1591676&r2=1591677&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java
 (original)
+++ 
qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java
 Thu May  1 15:16:20 2014
@@ -47,6 +47,7 @@ import org.apache.qpid.server.model.Virt
 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 ex
 
         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 ex
         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 ex
         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 ex
         _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++;
+        }
+    }
 }
 
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to