NO-JIRA: add test where producer link credit is delayed after attach
Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/5f5e2c2b Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/5f5e2c2b Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/5f5e2c2b Branch: refs/heads/master Commit: 5f5e2c2b1daf58dc66e822cbc6128ca2e59bca52 Parents: a9e8f1f Author: Robert Gemmell <[email protected]> Authored: Fri Jun 26 15:01:34 2015 +0100 Committer: Robert Gemmell <[email protected]> Committed: Fri Jun 26 15:03:29 2015 +0100 ---------------------------------------------------------------------- .../integration/ProducerIntegrationTest.java | 25 ++++++++++++++++++++ .../qpid/jms/test/testpeer/TestAmqpPeer.java | 10 ++++++-- 2 files changed, 33 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/5f5e2c2b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ProducerIntegrationTest.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ProducerIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ProducerIntegrationTest.java index 1d3994d..093833b 100644 --- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ProducerIntegrationTest.java +++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ProducerIntegrationTest.java @@ -562,4 +562,29 @@ public class ProducerIntegrationTest extends QpidJmsTestCase { producer.close(); } } + + @Test(timeout = 20000) + public void testSendWhenLinkCreditIsDelayed() throws Exception { + try(TestAmqpPeer testPeer = new TestAmqpPeer();) { + Connection connection = testFixture.establishConnecton(testPeer, "?amqp.traceFrames=true&amqp.traceBytes=true"); + testPeer.expectBegin(true); + + Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); + String queueName = "myQueue"; + Queue queue = session.createQueue(queueName); + + Message message = session.createTextMessage("text"); + TransferPayloadCompositeMatcher messageMatcher = new TransferPayloadCompositeMatcher(); + + // Expect the producer to attach. Delay sending credit when it does. + testPeer.expectSenderAttach(100); + + testPeer.expectTransfer(messageMatcher); + + MessageProducer producer = session.createProducer(queue); + + producer.send(message); + testPeer.waitForAllHandlersToComplete(1000); + } + } } http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/5f5e2c2b/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 0961d5a..be7282c 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 @@ -805,6 +805,11 @@ public class TestAmqpPeer implements AutoCloseable expectSenderAttach(notNullValue(), false, false); } + public void expectSenderAttach(long creditFlowDelay) + { + expectSenderAttach(notNullValue(), notNullValue(), false, false, creditFlowDelay, null, null); + } + public void expectSenderAttach(final Matcher<?> targetMatcher, final boolean refuseLink, boolean deferAttachResponseWrite) { expectSenderAttach(notNullValue(), targetMatcher, refuseLink, deferAttachResponseWrite); @@ -812,10 +817,10 @@ public class TestAmqpPeer implements AutoCloseable public void expectSenderAttach(final Matcher<?> sourceMatcher, final Matcher<?> targetMatcher, final boolean refuseLink, boolean deferAttachResponseWrite) { - expectSenderAttach(notNullValue(), targetMatcher, refuseLink, deferAttachResponseWrite, null, null); + expectSenderAttach(notNullValue(), targetMatcher, refuseLink, deferAttachResponseWrite, 0, null, null); } - public void expectSenderAttach(final Matcher<?> sourceMatcher, final Matcher<?> targetMatcher, final boolean refuseLink, boolean deferAttachResponseWrite, Symbol errorType, String errorMessage) + public void expectSenderAttach(final Matcher<?> sourceMatcher, final Matcher<?> targetMatcher, final boolean refuseLink, boolean deferAttachResponseWrite, long creditFlowDelay, Symbol errorType, String errorMessage) { final AttachMatcher attachMatcher = new AttachMatcher() .withName(notNullValue()) @@ -878,6 +883,7 @@ public class TestAmqpPeer implements AutoCloseable flowFrame.setDeliveryCount(attachMatcher.getReceivedInitialDeliveryCount()); } }); + flowFrameSender.setSendDelay(creditFlowDelay); final DetachFrame detachResponse = new DetachFrame().setClosed(true); if (errorType != null) --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
