You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2018/04/26 16:16:54 UTC

qpid-jms git commit: QPIDJMS-384: fix race in test, ensure handshake result is set before inspecting

Repository: qpid-jms
Updated Branches:
  refs/heads/master eab261a94 -> 0df279d96


QPIDJMS-384: fix race in test, ensure handshake result is set before inspecting


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/0df279d9
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/0df279d9
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/0df279d9

Branch: refs/heads/master
Commit: 0df279d966a26560285047ae147ab303e877c3af
Parents: eab261a
Author: Robbie Gemmell <ro...@apache.org>
Authored: Thu Apr 26 16:11:56 2018 +0100
Committer: Robbie Gemmell <ro...@apache.org>
Committed: Thu Apr 26 16:11:56 2018 +0100

----------------------------------------------------------------------
 .../apache/qpid/jms/transports/netty/NettyServer.java   |  7 +++++++
 .../jms/transports/netty/NettyTcpToMockServerTest.java  | 12 ++++++++----
 .../qpid/jms/transports/netty/NettyWsTransportTest.java | 12 ++++++++----
 3 files changed, 23 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/0df279d9/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyServer.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyServer.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyServer.java
index afde7d6..dd443cc 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyServer.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyServer.java
@@ -23,6 +23,7 @@ import java.io.IOException;
 import java.net.ServerSocket;
 import java.net.URI;
 import java.nio.charset.StandardCharsets;
+import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 
@@ -92,6 +93,7 @@ public abstract class NettyServer implements AutoCloseable {
     private volatile boolean fragmentWrites;
     private volatile SslHandler sslHandler;
     private volatile HandshakeComplete handshakeComplete;
+    private final CountDownLatch handshakeCompletion = new CountDownLatch(1);
 
     private final AtomicBoolean started = new AtomicBoolean();
 
@@ -146,6 +148,10 @@ public abstract class NettyServer implements AutoCloseable {
         return fragmentWrites;
     }
 
+    public boolean awaitHandshakeCompletion(long delayMs) throws InterruptedException {
+        return handshakeCompletion.await(delayMs, TimeUnit.MILLISECONDS);
+    }
+
     public HandshakeComplete getHandshakeComplete() {
         return handshakeComplete;
     }
@@ -309,6 +315,7 @@ public abstract class NettyServer implements AutoCloseable {
         public void userEventTriggered(ChannelHandlerContext context, Object payload) {
             if (payload instanceof HandshakeComplete) {
                 handshakeComplete = (HandshakeComplete) payload;
+                handshakeCompletion.countDown();
             }
         }
 

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/0df279d9/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyTcpToMockServerTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyTcpToMockServerTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyTcpToMockServerTest.java
index 57fb5eb..500f19b 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyTcpToMockServerTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyTcpToMockServerTest.java
@@ -50,6 +50,7 @@ import org.junit.rules.TestName;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import io.netty.handler.codec.http.HttpHeaders;
 import io.netty.handler.codec.http.websocketx.WebSocketServerProtocolHandler.HandshakeComplete;
 
 /**
@@ -321,12 +322,15 @@ public class NettyTcpToMockServerTest extends QpidJmsTestCase {
 
                 assertNotNull(server.getHandshakeComplete());
 
+                assertTrue("HandshakeCompletion not set within given time", server.awaitHandshakeCompletion(2000));
                 HandshakeComplete handshake = server.getHandshakeComplete();
-                assertTrue(handshake.requestHeaders().contains("test-header1"));
-                assertTrue(handshake.requestHeaders().contains("test-header2"));
+                HttpHeaders requestHeaders = handshake.requestHeaders();
 
-                assertEquals("FOO", handshake.requestHeaders().get("test-header1"));
-                assertEquals("BAR", handshake.requestHeaders().get("test-header2"));
+                assertTrue(requestHeaders.contains("test-header1"));
+                assertTrue(requestHeaders.contains("test-header2"));
+
+                assertEquals("FOO", requestHeaders.get("test-header1"));
+                assertEquals("BAR", requestHeaders.get("test-header2"));
             } catch (Exception ex) {
                 LOG.error("Caught exception while attempting to connect");
                 fail("Should be able to connect in this simple test");

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/0df279d9/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyWsTransportTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyWsTransportTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyWsTransportTest.java
index fa1935f..b1ccc0e 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyWsTransportTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyWsTransportTest.java
@@ -38,6 +38,7 @@ import org.slf4j.LoggerFactory;
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.ByteBufUtil;
 import io.netty.buffer.Unpooled;
+import io.netty.handler.codec.http.HttpHeaders;
 import io.netty.handler.codec.http.websocketx.WebSocketServerProtocolHandler.HandshakeComplete;
 
 /**
@@ -366,12 +367,15 @@ public class NettyWsTransportTest extends NettyTcpTransportTest {
             assertTrue(transport.isConnected());
             assertEquals(serverLocation, transport.getRemoteLocation());
 
+            assertTrue("HandshakeCompletion not set within given time", server.awaitHandshakeCompletion(2000));
             HandshakeComplete handshake = server.getHandshakeComplete();
-            assertTrue(handshake.requestHeaders().contains("test-header1"));
-            assertTrue(handshake.requestHeaders().contains("test-header2"));
+            HttpHeaders requestHeaders = handshake.requestHeaders();
 
-            assertEquals("FOO", handshake.requestHeaders().get("test-header1"));
-            assertEquals("BAR", handshake.requestHeaders().get("test-header2"));
+            assertTrue(requestHeaders.contains("test-header1"));
+            assertTrue(requestHeaders.contains("test-header2"));
+
+            assertEquals("FOO", requestHeaders.get("test-header1"));
+            assertEquals("BAR", requestHeaders.get("test-header2"));
 
             transport.close();
         }


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