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 2015/06/03 19:25:24 UTC

qpid-jms git commit: QPIDJMS-65: avoid race leading to sporadic test failure

Repository: qpid-jms
Updated Branches:
  refs/heads/master 2fde87949 -> ab970da6b


QPIDJMS-65: avoid race leading to sporadic test failure


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

Branch: refs/heads/master
Commit: ab970da6b810fccf0f93c4ac7e07aab58ea8ab54
Parents: 2fde879
Author: Robert Gemmell <ro...@apache.org>
Authored: Wed Jun 3 18:24:33 2015 +0100
Committer: Robert Gemmell <ro...@apache.org>
Committed: Wed Jun 3 18:24:33 2015 +0100

----------------------------------------------------------------------
 .../integration/IdleTimeoutIntegrationTest.java |  2 +-
 .../jms/integration/SaslIntegrationTest.java    |  9 +++++++++
 .../qpid/jms/test/testpeer/TestAmqpPeer.java    | 21 ++++++++++++++------
 3 files changed, 25 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/ab970da6/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/IdleTimeoutIntegrationTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/IdleTimeoutIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/IdleTimeoutIntegrationTest.java
index 6e7db22..9fe598c 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/IdleTimeoutIntegrationTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/IdleTimeoutIntegrationTest.java
@@ -179,7 +179,7 @@ public class IdleTimeoutIntegrationTest extends QpidJmsTestCase {
 
             testPeer.waitForAllHandlersToComplete(1000);
             // The peer is still connected, so it will get the close frame with error
-            testPeer.expectClose(Matchers.notNullValue());
+            testPeer.expectClose(Matchers.notNullValue(), false);
             assertNull(testPeer.getThrowable());
             testPeer.setSuppressReadExceptionOnClose(true);
 

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/ab970da6/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/SaslIntegrationTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/SaslIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/SaslIntegrationTest.java
index 19a6b85..d2222c9 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/SaslIntegrationTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/SaslIntegrationTest.java
@@ -37,6 +37,7 @@ import org.apache.qpid.jms.test.testpeer.TestAmqpPeer;
 import org.apache.qpid.jms.transports.TransportSslOptions;
 import org.apache.qpid.jms.transports.TransportSupport;
 import org.apache.qpid.proton.amqp.Symbol;
+import org.hamcrest.Matchers;
 import org.junit.Test;
 
 public class SaslIntegrationTest extends QpidJmsTestCase {
@@ -153,6 +154,10 @@ public class SaslIntegrationTest extends QpidJmsTestCase {
 
             testPeer.expectFailingSaslConnect(serverMechs, clientSelectedMech);
 
+            // Work around race with test peer close
+            testPeer.expectHeaderAndOpen();
+            testPeer.expectClose(Matchers.nullValue(), false);
+
             ConnectionFactory factory = new JmsConnectionFactory("amqp://localhost:" + testPeer.getServerPort() + "?jms.clientID=myclientid");
             try {
                 factory.createConnection(username, password);
@@ -200,6 +205,10 @@ public class SaslIntegrationTest extends QpidJmsTestCase {
 
             testPeer.expectFailingSaslConnect(serverMechs, clientSelectedMech);
 
+            // Work around race with test peer close
+            testPeer.expectHeaderAndOpen();
+            testPeer.expectClose(Matchers.nullValue(), false);
+
             JmsConnectionFactory factory = new JmsConnectionFactory("amqps://localhost:" + testPeer.getServerPort() + connOptions);
             try {
                 factory.createConnection();

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/ab970da6/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/TestAmqpPeer.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/TestAmqpPeer.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/TestAmqpPeer.java
index d4adeb7..7822c80 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/TestAmqpPeer.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/TestAmqpPeer.java
@@ -600,16 +600,25 @@ public class TestAmqpPeer implements AutoCloseable
 
     public void expectClose()
     {
-        expectClose(Matchers.nullValue());
+        expectClose(Matchers.nullValue(), true);
     }
 
-    public void expectClose(Matcher<?> errorMatcher)
+    public void expectClose(Matcher<?> errorMatcher, boolean sendReply)
     {
-        addHandler(new CloseMatcher()
-            .withError(errorMatcher)
-            .onSuccess(new FrameSender(this, FrameType.AMQP, 0,
+        CloseMatcher closeMatcher = new CloseMatcher().withError(errorMatcher);
+        if(sendReply) {
+            closeMatcher.onSuccess(new FrameSender(this, FrameType.AMQP, 0,
                     new CloseFrame(),
-                    null)));
+                    null));
+        }
+
+        addHandler(closeMatcher);
+    }
+
+    public void expectHeaderAndOpen()
+    {
+        addHandler(new HeaderHandlerImpl(AmqpHeader.HEADER, AmqpHeader.HEADER));
+        addHandler(new OpenMatcher());
     }
 
     public void expectBegin(boolean expectSessionFlow)


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