qpid-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From kw...@apache.org
Subject qpid-broker-j git commit: QPID-7059: [Java System Tests] Fix racey BDBHAVirtualHostNodeRestTest test
Date Fri, 06 Oct 2017 08:07:29 GMT
Repository: qpid-broker-j
Updated Branches:
  refs/heads/master fb93bae63 -> fcad8ea35


QPID-7059: [Java System Tests] Fix racey BDBHAVirtualHostNodeRestTest test


Project: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/commit/fcad8ea3
Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/fcad8ea3
Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/fcad8ea3

Branch: refs/heads/master
Commit: fcad8ea35a8947116af59d6262520e146a59dc0f
Parents: fb93bae
Author: Keith Wall <kwall@apache.org>
Authored: Thu Oct 5 15:19:39 2017 +0100
Committer: Keith Wall <kwall@apache.org>
Committed: Fri Oct 6 09:07:19 2017 +0100

----------------------------------------------------------------------
 .../BDBHAVirtualHostNodeRestTest.java           | 33 +++++++-------------
 .../qpid/systest/rest/RestTestHelper.java       | 17 +++++++---
 2 files changed, 25 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/fcad8ea3/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/BDBHAVirtualHostNodeRestTest.java
----------------------------------------------------------------------
diff --git a/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/BDBHAVirtualHostNodeRestTest.java
b/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/BDBHAVirtualHostNodeRestTest.java
index 372bb8c..0fde56f 100644
--- a/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/BDBHAVirtualHostNodeRestTest.java
+++ b/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/BDBHAVirtualHostNodeRestTest.java
@@ -293,7 +293,7 @@ public class BDBHAVirtualHostNodeRestTest extends QpidRestTestCase
                 break;
             }
             counter++;
-            Thread.sleep(100l);
+            Thread.sleep(100L);
         }
 
         //connect intruder node
@@ -337,7 +337,7 @@ public class BDBHAVirtualHostNodeRestTest extends QpidRestTestCase
 
     private Map<String, Object> createNodeAttributeMap(String nodeName, int nodePort,
int helperPort) throws Exception
     {
-        Map<String, Object> nodeData = new HashMap<String, Object>();
+        Map<String, Object> nodeData = new HashMap<>();
         nodeData.put(BDBHAVirtualHostNode.NAME, nodeName);
         nodeData.put(BDBHAVirtualHostNode.TYPE, BDBHAVirtualHostNodeImpl.VIRTUAL_HOST_NODE_TYPE);
         nodeData.put(BDBHAVirtualHostNode.GROUP_NAME, _hostName);
@@ -390,35 +390,26 @@ public class BDBHAVirtualHostNodeRestTest extends QpidRestTestCase
 
     private void assertRemoteNodes(String masterNode, String... replicaNodes) throws Exception
     {
-        List<String> clusterNodes = new ArrayList<String>(Arrays.asList(replicaNodes));
+        List<String> clusterNodes = new ArrayList<>(Arrays.asList(replicaNodes));
         clusterNodes.add(masterNode);
 
         for (String clusterNodeName : clusterNodes)
         {
-            List<String> remotes = new ArrayList<String>(clusterNodes);
+            List<String> remotes = new ArrayList<>(clusterNodes);
             remotes.remove(clusterNodeName);
             for (String remote : remotes)
             {
                 String remoteUrl = "remotereplicationnode/" + clusterNodeName + "/" + remote;
-                Map<String, Object> nodeData = _restTestHelper.waitForAttributeChanged(remoteUrl,
BDBHARemoteReplicationNode.ROLE, remote.equals(masterNode) ? "MASTER" : "REPLICA");
-                assertRemoteNodeData(remote, nodeData);
+                String desiredNodeState = remote.equals(masterNode) ? "MASTER" : "REPLICA";
+                _restTestHelper.waitForAttributeChanged(remoteUrl,
+                                                        node -> desiredNodeState.equals(node.get(
+                                                                BDBHARemoteReplicationNode.ROLE))
+                                                                && (Integer) node.get(BDBHAVirtualHostNode.LAST_KNOWN_REPLICATION_TRANSACTION_ID)
> 0
+                                                                && ((Number) node.get(BDBHAVirtualHostNode.JOIN_TIME)).longValue()
> 0L);
             }
         }
     }
 
-    private void assertRemoteNodeData(String name, Map<String, Object> 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);
-
-        Number joinTime = (Number) nodeData.get(BDBHAVirtualHostNode.JOIN_TIME);
-        assertNotNull("Node " + name + " has unexpected joinTime", joinTime);
-        assertTrue("Node " + name + " has unexpected joinTime " + joinTime, joinTime.longValue()
> 0);
-     }
-
     private void assertActualAndDesiredStates(final String restUrl,
                                               final String expectedDesiredState,
                                               final String expectedActualState) throws IOException
@@ -429,7 +420,7 @@ public class BDBHAVirtualHostNodeRestTest extends QpidRestTestCase
 
     private void mutateDesiredState(final String restUrl, final String newState) throws IOException
     {
-        Map<String, Object> newAttributes = new HashMap<String, Object>();
+        Map<String, Object> newAttributes = new HashMap<>();
         newAttributes.put(VirtualHostNode.DESIRED_STATE, newState);
 
         getRestTestHelper().submitRequest(restUrl, "PUT", newAttributes, HttpServletResponse.SC_OK);
@@ -468,7 +459,7 @@ public class BDBHAVirtualHostNodeRestTest extends QpidRestTestCase
             }
             if (newMasterData == null)
             {
-                Thread.sleep(100l);
+                Thread.sleep(100L);
                 counter++;
             }
         }

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/fcad8ea3/systests/src/main/java/org/apache/qpid/systest/rest/RestTestHelper.java
----------------------------------------------------------------------
diff --git a/systests/src/main/java/org/apache/qpid/systest/rest/RestTestHelper.java b/systests/src/main/java/org/apache/qpid/systest/rest/RestTestHelper.java
index b4f474a..4ba8687 100644
--- a/systests/src/main/java/org/apache/qpid/systest/rest/RestTestHelper.java
+++ b/systests/src/main/java/org/apache/qpid/systest/rest/RestTestHelper.java
@@ -38,6 +38,7 @@ import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.function.Predicate;
 
 import javax.net.ssl.HttpsURLConnection;
 import javax.net.ssl.KeyManager;
@@ -662,16 +663,24 @@ public class RestTestHelper
                                                        String attributeName,
                                                        Object newValue) throws Exception
     {
+        return waitForAttributeChanged(url, (attr -> newValue.equals(attr.get(attributeName))));
+
+    }
+
+    public Map<String, Object> waitForAttributeChanged(String url,
+                                                       Predicate<Map<String, Object>>
attributePredicate) throws Exception
+    {
         Map<String, Object> nodeAttributes = getAttributesIgnoringNotFound(url);
         int timeout = 30000;
         long limit = System.currentTimeMillis() + timeout;
-        while(System.currentTimeMillis() < limit && (nodeAttributes == null||
!newValue.equals(nodeAttributes.get(attributeName))))
+        while(System.currentTimeMillis() < limit && (nodeAttributes == null ||
!attributePredicate.test(nodeAttributes)))
         {
-            Thread.sleep(100l);
+            Thread.sleep(100L);
             nodeAttributes = getAttributesIgnoringNotFound(url);
         }
-        Assert.assertEquals("Attribute " + attributeName + " did not reach expected value
within permitted timeout " + timeout + "ms.", newValue, nodeAttributes
-                .get(attributeName));
+        Assert.assertTrue(String.format("Attributes predicate not satisfied after %d ms.
 Last attribute state state : %s",
+                                          timeout,
+                                          nodeAttributes), attributePredicate.test(nodeAttributes));
         return nodeAttributes;
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


Mime
View raw message