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/26 16:03:49 UTC
[1/2] qpid-jms git commit: NO-JIRA: add support for delaying frame
sends for a specified time
Repository: qpid-jms
Updated Branches:
refs/heads/master 5bf3c21a4 -> 5f5e2c2b1
NO-JIRA: add support for delaying frame sends for a specified time
Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/a9e8f1f6
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/a9e8f1f6
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/a9e8f1f6
Branch: refs/heads/master
Commit: a9e8f1f60099f415c7ccfc8bad9ad868eb17b596
Parents: 5bf3c21
Author: Robert Gemmell <ro...@apache.org>
Authored: Fri Jun 26 08:50:36 2015 +0100
Committer: Robert Gemmell <ro...@apache.org>
Committed: Fri Jun 26 15:03:17 2015 +0100
----------------------------------------------------------------------
.../qpid/jms/test/testpeer/FrameSender.java | 7 ++++++-
.../qpid/jms/test/testpeer/TestAmqpPeer.java | 20 ++++++++++++++++----
2 files changed, 22 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/a9e8f1f6/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/FrameSender.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/FrameSender.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/FrameSender.java
index ed34384..9e34d4a 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/FrameSender.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/FrameSender.java
@@ -29,6 +29,7 @@ public class FrameSender implements AmqpPeerRunnable
private ValueProvider _valueProvider;
private int _channel;
private boolean _deferWrite = false;
+ private long _sendDelay = 0;
FrameSender(TestAmqpPeer testAmqpPeer, FrameType type, int channel, ListDescribedType frameDescribedType, Binary framePayload)
{
@@ -47,7 +48,7 @@ public class FrameSender implements AmqpPeerRunnable
_valueProvider.setValues();
}
- _testAmqpPeer.sendFrame(_type, _channel, _frameDescribedType, _framePayload, _deferWrite);
+ _testAmqpPeer.sendFrame(_type, _channel, _frameDescribedType, _framePayload, _deferWrite, _sendDelay);
}
public FrameSender setValueProvider(ValueProvider valueProvider)
@@ -67,4 +68,8 @@ public class FrameSender implements AmqpPeerRunnable
_deferWrite = deferWrite;
return this;
}
+
+ public void setSendDelay(long _sendDelay) {
+ this._sendDelay = _sendDelay;
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/a9e8f1f6/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 a587851..0961d5a 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
@@ -320,10 +320,10 @@ public class TestAmqpPeer implements AutoCloseable
public void sendEmptyFrame(boolean deferWrite)
{
- sendFrame(FrameType.AMQP, 0, null, null, deferWrite);
+ sendFrame(FrameType.AMQP, 0, null, null, deferWrite, 0);
}
- void sendFrame(FrameType type, int channel, DescribedType frameDescribedType, Binary framePayload, boolean deferWrite)
+ void sendFrame(FrameType type, int channel, DescribedType frameDescribedType, Binary framePayload, boolean deferWrite, long sendDelay)
{
if(channel < 0)
{
@@ -331,6 +331,18 @@ public class TestAmqpPeer implements AutoCloseable
}
LOGGER.debug("About to send: {}", frameDescribedType);
+
+ if(sendDelay > 0)
+ {
+ LOGGER.debug("Delaying send by {} ms", sendDelay);
+ try {
+ Thread.sleep(sendDelay);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new RuntimeException("Interrupted before send", e);
+ }
+ }
+
byte[] output = AmqpDataFramer.encodeFrame(type, channel, frameDescribedType, framePayload);
if(deferWrite && _deferredBytes == null)
@@ -397,7 +409,7 @@ public class TestAmqpPeer implements AutoCloseable
FrameType.SASL, 0,
new SaslOutcomeFrame().setCode(SASL_OK),
null,
- false);
+ false, 0);
// Now that we processed the SASL layer AMQP header, reset the
// peer to expect the non-SASL AMQP header.
@@ -519,7 +531,7 @@ public class TestAmqpPeer implements AutoCloseable
FrameType.SASL, 0,
new SaslOutcomeFrame().setCode(SASL_FAIL_AUTH),
null,
- false);
+ false, 0);
_driverRunnable.expectHeader();
}
});
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org
[2/2] qpid-jms git commit: NO-JIRA: add test where producer link
credit is delayed after attach
Posted by ro...@apache.org.
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 <ro...@apache.org>
Authored: Fri Jun 26 15:01:34 2015 +0100
Committer: Robert Gemmell <ro...@apache.org>
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: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org