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]

Reply via email to