From 3b8cb11a904b9c1f4a808c29fd37121a4e3e7c43 Mon Sep 17 00:00:00 2001 From: Keith Wall Date: Wed, 14 May 2014 07:51:35 +0000 Subject: QPID-5715: BDB HA's remote replication nodes were using wrong value for lastKnownReplicationId property git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1594509 13f79535-47bb-0310-9956-ffa450edef68 --- .../berkeleydb/BDBHAVirtualHostNodeImpl.java | 2 +- .../berkeleydb/BDBHAVirtualHostNodeRestTest.java | 30 +++++++++++++++++++--- 2 files changed, 28 insertions(+), 4 deletions(-) (limited to 'qpid/java') diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java index d2ed22c14c..4aff32fe13 100644 --- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java +++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java @@ -642,7 +642,7 @@ public class BDBHAVirtualHostNodeImpl extends AbstractVirtualHostNode 0); + + Long joinTime = (Long) nodeData.get(BDBHAVirtualHostNode.JOIN_TIME); + assertNotNull("Unexpected joinTime", joinTime); + assertTrue("Unexpected joinTime " + joinTime, joinTime > 0); + if (isMaster) { waitForAttributeChanged("virtualhost/" + masterNode + "/" + _hostName + "?depth=0", VirtualHost.STATE, State.ACTIVE.name()); @@ -155,12 +163,13 @@ public class BDBHAVirtualHostNodeRestTest extends QpidRestTestCase for (String remote : remotes) { String remoteUrl = "replicationnode/" + clusterNodeName + "/" + remote; - waitForAttributeChanged(remoteUrl, BDBHARemoteReplicationNode.ROLE, remote.equals(masterNode) ? "MASTER" : "REPLICA"); + Map nodeData = waitForAttributeChanged(remoteUrl, BDBHARemoteReplicationNode.ROLE, remote.equals(masterNode) ? "MASTER" : "REPLICA"); + assertRemoteNodeData(remote, nodeData); } } } - private void waitForAttributeChanged(String url, String attributeName, Object newValue) throws Exception + private Map waitForAttributeChanged(String url, String attributeName, Object newValue) throws Exception { List> nodeAttributes = getRestTestHelper().getJsonAsList(url); long limit = System.currentTimeMillis() + 5000; @@ -169,6 +178,21 @@ public class BDBHAVirtualHostNodeRestTest extends QpidRestTestCase Thread.sleep(100l); nodeAttributes = getRestTestHelper().getJsonAsList(url); } - assertEquals("Unexpected attribute " + attributeName, newValue, nodeAttributes.get(0).get(attributeName)); + Map nodeData = nodeAttributes.get(0); + assertEquals("Unexpected attribute " + attributeName, newValue, nodeData.get(attributeName)); + return nodeData; } + + private void assertRemoteNodeData(String name, Map nodeData) + { + assertEquals("Remote node " + name + " has unexpected name", name, nodeData.get(BDBHAVirtualHostNode.NAME)); + + Integer lastKnownTransactionId = (Integer) nodeData.get(BDBHAVirtualHostNode.LAST_KNOWN_REPLICATION_TRANSACTION_ID); + assertNotNull("Node " + name + " has unexpected lastKnownReplicationId", lastKnownTransactionId); + assertTrue("Node " + name + " has unexpected lastKnownReplicationId " + lastKnownTransactionId, lastKnownTransactionId > 0); + + Long joinTime = (Long) nodeData.get(BDBHAVirtualHostNode.JOIN_TIME); + assertNotNull("Node " + name + " has unexpected joinTime", joinTime); + assertTrue("Node " + name + " has unexpected joinTime " + joinTime, joinTime > 0); + } } -- cgit v1.2.1