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]