Author: kwall
Date: Fri Sep 14 15:01:29 2012
New Revision: 1384810

URL: http://svn.apache.org/viewvc?rev=1384810&view=rev
Log:
QPID-4056: HAClusterManagementTest.testRemoveNodeFromGroup fails occasionally 
on Apache CI

Test should await all nodes knowning about one and other before commencing the 
remainder of the test.

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

Modified: 
qpid/trunk/qpid/java/bdbstore/jmx/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterManagementTest.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/jmx/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterManagementTest.java?rev=1384810&r1=1384809&r2=1384810&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/bdbstore/jmx/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterManagementTest.java
 (original)
+++ 
qpid/trunk/qpid/java/bdbstore/jmx/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterManagementTest.java
 Fri Sep 14 15:01:29 2012
@@ -37,7 +37,6 @@ import org.apache.log4j.Logger;
 import org.apache.qpid.jms.ConnectionURL;
 import org.apache.qpid.management.common.mbeans.ManagedBroker;
 import org.apache.qpid.server.store.berkeleydb.jmx.ManagedBDBHAMessageStore;
-import org.apache.qpid.server.virtualhost.ManagedVirtualHost;
 import org.apache.qpid.test.utils.JMXTestUtils;
 import org.apache.qpid.test.utils.QpidBrokerTestCase;
 
@@ -132,12 +131,11 @@ public class HAClusterManagementTest ext
         final int brokerPortNumber = getBrokerPortNumbers().iterator().next();
 
         ManagedBDBHAMessageStore storeBean = 
getStoreBeanForNodeAtBrokerPort(brokerPortNumber);
+        awaitAllNodesJoiningGroup(storeBean, NUMBER_OF_NODES);
+
         final TabularData groupMembers = storeBean.getAllNodesInGroup();
         assertNotNull(groupMembers);
 
-        final int numberOfDataRows = groupMembers.size();
-        assertEquals("Unexpected number of data rows", NUMBER_OF_NODES 
,numberOfDataRows);
-
         for(int bdbPortNumber : _clusterCreator.getBdbPortNumbers())
         {
             final String nodeName = 
_clusterCreator.getNodeNameForNodeAt(bdbPortNumber);
@@ -155,8 +153,7 @@ public class HAClusterManagementTest ext
         final int brokerPortNumberToMakeObservation = 
brokerPortNumberIterator.next();
         final int brokerPortNumberToBeRemoved = 
brokerPortNumberIterator.next();
         final ManagedBDBHAMessageStore storeBean = 
getStoreBeanForNodeAtBrokerPort(brokerPortNumberToMakeObservation);
-        final int numberOfDataRows = storeBean.getAllNodesInGroup().size();
-        assertEquals("Unexpected number of data rows before test", 
NUMBER_OF_NODES ,numberOfDataRows);
+        awaitAllNodesJoiningGroup(storeBean, NUMBER_OF_NODES);
 
         final String removedNodeName = 
_clusterCreator.getNodeNameForNodeAt(_clusterCreator.getBdbPortForBrokerPort(brokerPortNumberToBeRemoved));
         _clusterCreator.stopNode(brokerPortNumberToBeRemoved);
@@ -266,4 +263,27 @@ public class HAClusterManagementTest ext
 
         return _jmxUtils.getManagedBroker(VIRTUAL_HOST);
     }
+
+    private void awaitAllNodesJoiningGroup(ManagedBDBHAMessageStore storeBean, 
int expectedNumberOfNodes) throws Exception
+    {
+        long totalTimeWaited = 0l;
+        long waitInterval = 100l;
+        long maxWaitTime = 10000;
+
+        int currentNumberOfNodes = storeBean.getAllNodesInGroup().size();
+        while (expectedNumberOfNodes > currentNumberOfNodes || totalTimeWaited 
> maxWaitTime)
+        {
+            LOGGER.debug("Still awaiting nodes to join group; expecting "
+                + expectedNumberOfNodes + " node(s) but only have " + 
currentNumberOfNodes
+                + " after " + totalTimeWaited + " ms.");
+
+            totalTimeWaited += waitInterval;
+            Thread.sleep(waitInterval);
+
+            currentNumberOfNodes = storeBean.getAllNodesInGroup().size();
+        }
+
+        assertEquals("Unexpected number of nodes in group after " + 
totalTimeWaited + " ms",
+                expectedNumberOfNodes ,currentNumberOfNodes);
+    }
 }



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

Reply via email to