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 <[email protected]> Authored: Wed Jun 3 18:24:33 2015 +0100 Committer: Robert Gemmell <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
