Author: kwall
Date: Fri Feb  5 12:15:01 2016
New Revision: 1728651

URL: http://svn.apache.org/viewvc?rev=1728651&view=rev
Log:
NO-JIRA: [Java System Tests] Increase wiggle room in Heartbeat test

* Slightly increase wiggle room to reduce the risk of failures on slow boxes
* Use latches to keep the time for the happy path as short as possible

Modified:
    
qpid/java/trunk/systests/src/test/java/org/apache/qpid/client/HeartbeatTest.java

Modified: 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/client/HeartbeatTest.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/test/java/org/apache/qpid/client/HeartbeatTest.java?rev=1728651&r1=1728650&r2=1728651&view=diff
==============================================================================
--- 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/client/HeartbeatTest.java
 (original)
+++ 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/client/HeartbeatTest.java
 Fri Feb  5 12:15:01 2016
@@ -20,6 +20,8 @@ package org.apache.qpid.client;
 
 import static 
org.apache.qpid.configuration.ClientProperties.QPID_HEARTBEAT_INTERVAL;
 
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import javax.jms.Destination;
@@ -38,7 +40,8 @@ public class HeartbeatTest extends QpidB
     private static final Logger LOGGER = 
LoggerFactory.getLogger(HeartbeatTest.class);
 
     private static final String CONNECTION_URL_WITH_HEARTBEAT = 
"amqp://guest:guest@clientid/?brokerlist='localhost:%d?heartbeat='%d''";
-    private TestListener _listener = new TestListener("listener");
+    private static final int MAXIMUM_WAIT_TIME = 2900;
+    private TestListener _listener = new TestListener("listener", 2, 2);
 
     @Override
     public void setUp() throws Exception
@@ -57,7 +60,7 @@ public class HeartbeatTest extends QpidB
         conn.setHeartbeatListener(_listener);
         conn.start();
 
-        Thread.sleep(2500);
+        _listener.awaitExpectedHeartbeats(MAXIMUM_WAIT_TIME);
 
         assertTrue("Too few heartbeats received: 
"+_listener.getHeartbeatsReceived() +" (expected at least 2)", 
_listener.getHeartbeatsReceived() >=2);
         assertTrue("Too few heartbeats sent "+_listener.getHeartbeatsSent() +" 
(expected at least 2)", _listener.getHeartbeatsSent() >=2);
@@ -72,7 +75,7 @@ public class HeartbeatTest extends QpidB
         conn.setHeartbeatListener(_listener);
         conn.start();
 
-        Thread.sleep(2500);
+        _listener.awaitExpectedHeartbeats(MAXIMUM_WAIT_TIME);
 
         assertTrue("Too few heartbeats received: 
"+_listener.getHeartbeatsReceived() +" (expected at least 2)", 
_listener.getHeartbeatsReceived() >=2);
         assertTrue("Too few heartbeats sent "+_listener.getHeartbeatsSent() +" 
(expected at least 2)", _listener.getHeartbeatsSent() >=2);
@@ -87,7 +90,7 @@ public class HeartbeatTest extends QpidB
          conn.setHeartbeatListener(_listener);
          conn.start();
 
-         Thread.sleep(2500);
+        _listener.awaitExpectedHeartbeats(2000);
 
          assertEquals("Heartbeats unexpectedly received", 0, 
_listener.getHeartbeatsReceived());
          assertEquals("Heartbeats unexpectedly sent ", 0, 
_listener.getHeartbeatsSent());
@@ -106,8 +109,8 @@ public class HeartbeatTest extends QpidB
         AMQConnection receiveConn = (AMQConnection) getConnection();
         AMQConnection sendConn = (AMQConnection) getConnection();
         Destination destination = getTestQueue();
-        TestListener receiveListener = new TestListener("receiverListener");
-        TestListener sendListener = new TestListener("senderListener");
+        TestListener receiveListener = new TestListener("receiverListener", 2, 
0);
+        TestListener sendListener = new TestListener("senderListener", 0, 2);
 
 
         Session receiveSession = receiveConn.createSession(false, 
Session.CLIENT_ACKNOWLEDGE);
@@ -148,7 +151,7 @@ public class HeartbeatTest extends QpidB
         conn.setHeartbeatListener(_listener);
         conn.start();
 
-        Thread.sleep(2500);
+        _listener.awaitExpectedHeartbeats(MAXIMUM_WAIT_TIME);
 
         assertTrue("Too few heartbeats received: 
"+_listener.getHeartbeatsReceived() +" (expected at least 2)", 
_listener.getHeartbeatsReceived()>=2);
         assertTrue("Too few heartbeats sent "+ _listener.getHeartbeatsSent() 
+" (expected at least 2)", _listener.getHeartbeatsSent() >=2);
@@ -165,7 +168,7 @@ public class HeartbeatTest extends QpidB
         conn.setHeartbeatListener(_listener);
         conn.start();
 
-        Thread.sleep(2500);
+        _listener.awaitExpectedHeartbeats(MAXIMUM_WAIT_TIME);
 
         assertTrue("Too few heartbeats received: 
"+_listener.getHeartbeatsReceived()+" (expected at least 2)", 
_listener.getHeartbeatsReceived()>=2);
         assertTrue("Too few heartbeats sent "+_listener.getHeartbeatsSent() +" 
(expected at least 2)", _listener.getHeartbeatsSent()>=2);
@@ -181,7 +184,7 @@ public class HeartbeatTest extends QpidB
         conn.setHeartbeatListener(_listener);
         conn.start();
 
-        Thread.sleep(2500);
+        _listener.awaitExpectedHeartbeats(MAXIMUM_WAIT_TIME);
 
         assertTrue("Too few heartbeats received: 
"+_listener.getHeartbeatsReceived() +" (expected at least 2)", 
_listener.getHeartbeatsReceived()>=2);
         assertTrue("Too few heartbeats sent "+_listener.getHeartbeatsSent() +" 
(expected at least 2)", _listener.getHeartbeatsSent()>=2);
@@ -194,10 +197,14 @@ public class HeartbeatTest extends QpidB
         private final String _name;
         private final AtomicInteger _heartbeatsReceived = new AtomicInteger(0);
         private final AtomicInteger _heartbeatsSent = new AtomicInteger(0);
+        private final CountDownLatch _expectedReceivedHeartbeats;
+        private final CountDownLatch _expectedSentHeartbeats;
 
-        public TestListener(String name)
+        public TestListener(String name, int expectedSentHeartbeats, int 
expectedReceivedHeartbeats)
         {
             _name = name;
+            _expectedReceivedHeartbeats = new 
CountDownLatch(expectedReceivedHeartbeats);
+            _expectedSentHeartbeats = new 
CountDownLatch(expectedSentHeartbeats);
         }
 
         @Override
@@ -205,6 +212,7 @@ public class HeartbeatTest extends QpidB
         {
             LOGGER.debug(_name + " heartbeat received");
             _heartbeatsReceived.incrementAndGet();
+            _expectedReceivedHeartbeats.countDown();
         }
 
         public int getHeartbeatsReceived()
@@ -217,11 +225,24 @@ public class HeartbeatTest extends QpidB
         {
             LOGGER.debug(_name + " heartbeat sent");
             _heartbeatsSent.incrementAndGet();
+            _expectedSentHeartbeats.countDown();
         }
 
         public int getHeartbeatsSent()
         {
             return _heartbeatsSent.get();
         }
+
+        public void awaitExpectedHeartbeats(final long maximumWaitTime) throws 
InterruptedException
+        {
+            long startTime = System.currentTimeMillis();
+            _expectedSentHeartbeats.await(maximumWaitTime, 
TimeUnit.MILLISECONDS);
+
+            long remainingTime = maximumWaitTime - (System.currentTimeMillis() 
- startTime);
+            if (remainingTime > 0)
+            {
+                _expectedReceivedHeartbeats.await(remainingTime, 
TimeUnit.MILLISECONDS);
+            }
+        }
     }
 }



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

Reply via email to