diff options
Diffstat (limited to 'qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterBlackboxTest.java')
-rw-r--r-- | qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterBlackboxTest.java | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterBlackboxTest.java b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterBlackboxTest.java index 995af791e9..84b8de7be9 100644 --- a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterBlackboxTest.java +++ b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterBlackboxTest.java @@ -120,7 +120,7 @@ public class HAClusterBlackboxTest extends QpidBrokerTestCase connection.createSession(false, Session.AUTO_ACKNOWLEDGE); } - public void testTransferMaster() throws Exception + public void testTransferMasterFromLocalNode() throws Exception { final Connection connection = getConnection(_brokerFailoverUrl); @@ -145,6 +145,33 @@ public class HAClusterBlackboxTest extends QpidBrokerTestCase assertProducingConsuming(connection); } + public void testTransferMasterFromRemoteNode() throws Exception + { + final Connection connection = getConnection(_brokerFailoverUrl); + + ((AMQConnection)connection).setConnectionListener(_failoverAwaitingListener); + + final int activeBrokerPort = _clusterCreator.getBrokerPortNumberFromConnection(connection); + LOGGER.info("Active connection port " + activeBrokerPort); + + final int inactiveBrokerPort = _clusterCreator.getPortNumberOfAnInactiveBroker(connection); + LOGGER.info("Update role attribute on inactive broker on port " + inactiveBrokerPort); + + String nodeName = _clusterCreator.getNodeNameForBrokerPort(inactiveBrokerPort); + _clusterCreator.awaitNodeToAttainRole(activeBrokerPort, nodeName, "REPLICA"); + Map<String, Object> attributes = _clusterCreator.getReplicationNodeAttributes(activeBrokerPort, nodeName); + assertEquals("Inactive broker has unexpeced role", "REPLICA", attributes.get(ReplicationNode.ROLE)); + + _clusterCreator.setReplicationNodeAttributes(activeBrokerPort, nodeName, Collections.<String, Object>singletonMap(ReplicationNode.ROLE, "MASTER")); + + _failoverAwaitingListener.assertFailoverOccurs(20000); + LOGGER.info("Listener has finished"); + + attributes = _clusterCreator.getReplicationNodeAttributes(inactiveBrokerPort); + assertEquals("Inactive broker has unexpeced role", "MASTER", attributes.get(ReplicationNode.ROLE)); + + assertProducingConsuming(connection); + } public void testQuorumOverride() throws Exception { final Connection connection = getConnection(_brokerFailoverUrl); |