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/07/17 18:16:41 UTC
qpid-jms git commit: QPIDJMS-87: make the local maxFrameSize value
configurable
Repository: qpid-jms
Updated Branches:
refs/heads/master 32839a599 -> bf0dac455
QPIDJMS-87: make the local maxFrameSize value configurable
Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/bf0dac45
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/bf0dac45
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/bf0dac45
Branch: refs/heads/master
Commit: bf0dac455ae24261faa13fa3bde57984b7b6e336
Parents: 32839a5
Author: Robert Gemmell <ro...@apache.org>
Authored: Fri Jul 17 17:16:08 2015 +0100
Committer: Robert Gemmell <ro...@apache.org>
Committed: Fri Jul 17 17:16:08 2015 +0100
----------------------------------------------------------------------
.../qpid/jms/provider/amqp/AmqpProvider.java | 28 +++++++++++++-----
.../integration/ConnectionIntegrationTest.java | 31 ++++++++++++++++++++
.../jms/integration/SaslIntegrationTest.java | 2 +-
.../provider/amqp/AmqpProviderFactoryTest.java | 11 +++++++
.../qpid/jms/test/testpeer/TestAmqpPeer.java | 11 +++++--
5 files changed, 71 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/bf0dac45/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java
index a927bf0..5db3472 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java
@@ -118,6 +118,7 @@ public class AmqpProvider implements Provider, TransportListener {
private int channelMax = DEFAULT_CHANNEL_MAX;
private int idleTimeout = 60000;
private long sessionOutoingWindow = -1; //Use proton default
+ private int maxFrameSize = DEFAULT_MAX_FRAME_SIZE;
private final URI remoteURI;
private final AtomicBoolean closed = new AtomicBoolean();
@@ -268,7 +269,10 @@ public class AmqpProvider implements Provider, TransportListener {
requestTimeout = connectionInfo.getRequestTimeout();
Connection protonConnection = Connection.Factory.create();
- protonTransport.setMaxFrameSize(getMaxFrameSize());
+
+ if(getMaxFrameSize() > 0) {
+ protonTransport.setMaxFrameSize(getMaxFrameSize());
+ }
protonTransport.setChannelMax(getChannelMax());
protonTransport.setIdleTimeout(idleTimeout);
protonTransport.bind(protonConnection);
@@ -955,6 +959,21 @@ public class AmqpProvider implements Provider, TransportListener {
this.idleTimeout = idleTimeout;
}
+ public int getMaxFrameSize() {
+ return maxFrameSize;
+ }
+
+ /**
+ * Sets the max frame size (in bytes).
+ *
+ * Values of -1 indicates to use the proton default.
+ *
+ * @param maxFrameSize the frame size in bytes.
+ */
+ public void setMaxFrameSize(int maxFrameSize) {
+ this.maxFrameSize = maxFrameSize;
+ }
+
public long getSessionOutgoingWindow() {
return sessionOutoingWindow;
}
@@ -1006,13 +1025,6 @@ public class AmqpProvider implements Provider, TransportListener {
this.presettleProducers = presettle;
}
- /**
- * @return the currently set Max Frame Size value.
- */
- public int getMaxFrameSize() {
- return DEFAULT_MAX_FRAME_SIZE;
- }
-
@Override
public String toString() {
return "AmqpProvider: " + getRemoteURI().getHost() + ":" + getRemoteURI().getPort();
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/bf0dac45/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ConnectionIntegrationTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ConnectionIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ConnectionIntegrationTest.java
index 6cf87c6..a3b2b15 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ConnectionIntegrationTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ConnectionIntegrationTest.java
@@ -63,6 +63,7 @@ import org.apache.qpid.jms.test.testpeer.basictypes.ConnectionError;
import org.apache.qpid.jms.test.testpeer.matchers.CoordinatorMatcher;
import org.apache.qpid.jms.util.MetaDataSupport;
import org.apache.qpid.proton.amqp.Symbol;
+import org.apache.qpid.proton.amqp.UnsignedInteger;
import org.apache.qpid.proton.amqp.transaction.TxnCapability;
import org.hamcrest.Matcher;
import org.junit.Test;
@@ -150,6 +151,36 @@ public class ConnectionIntegrationTest extends QpidJmsTestCase {
}
@Test(timeout = 20000)
+ public void testMaxFrameSizeOptionCommunicatedInOpen() throws Exception {
+ int frameSize = 39215;
+ doMaxFrameSizeOptionTestImpl(frameSize, UnsignedInteger.valueOf(frameSize));
+ }
+
+ @Test(timeout = 20000)
+ public void testMaxFrameSizeOptionCommunicatedInOpenDefault() throws Exception {
+ doMaxFrameSizeOptionTestImpl(-1, UnsignedInteger.MAX_VALUE);
+ }
+
+ private void doMaxFrameSizeOptionTestImpl(int uriOption, UnsignedInteger transmittedValue) throws JMSException, InterruptedException, Exception, IOException {
+ try (TestAmqpPeer testPeer = new TestAmqpPeer();) {
+ testPeer.expectSaslLayerDisabledConnect(equalTo(transmittedValue));
+ // Each connection creates a session for managing temporary destinations etc
+ testPeer.expectBegin();
+
+ String uri = "amqp://localhost:" + testPeer.getServerPort() + "?amqp.saslLayer=false&amqp.maxFrameSize=" + uriOption;
+ ConnectionFactory factory = new JmsConnectionFactory(uri);
+ Connection connection = factory.createConnection();
+ connection.start();
+
+ testPeer.waitForAllHandlersToComplete(3000);
+ assertNull(testPeer.getThrowable());
+
+ testPeer.expectClose();
+ connection.close();
+ }
+ }
+
+ @Test(timeout = 20000)
public void testAmqpHostnameSetByDefault() throws Exception {
doAmqpHostnameTestImpl("localhost", false, equalTo("localhost"));
}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/bf0dac45/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 4f9c299..c41416b 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
@@ -227,7 +227,7 @@ public class SaslIntegrationTest extends QpidJmsTestCase {
public void testSaslLayerDisabledConnection() throws Exception {
try (TestAmqpPeer testPeer = new TestAmqpPeer();) {
// Expect a connection with no SASL layer.
- testPeer.expectSaslLayerDisabledConnect();
+ testPeer.expectSaslLayerDisabledConnect(null);
// Each connection creates a session for managing temporary destinations etc
testPeer.expectBegin();
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/bf0dac45/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/AmqpProviderFactoryTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/AmqpProviderFactoryTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/AmqpProviderFactoryTest.java
index c68559e..5068d6a 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/AmqpProviderFactoryTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/AmqpProviderFactoryTest.java
@@ -95,6 +95,17 @@ public class AmqpProviderFactoryTest extends QpidJmsTestCase {
}
@Test(timeout = 20000)
+ public void testCreateProviderAppliesMaxFrameSizeURIOption() throws IOException, Exception {
+ int frameSize = 274893;
+ Provider provider = AmqpProviderFactory.create(new URI(peerURI.toString() + "?amqp.maxFrameSize=" + frameSize));
+ assertNotNull(provider);
+ assertTrue(provider instanceof AmqpProvider);
+ AmqpProvider amqpProvider = (AmqpProvider) provider;
+
+ assertEquals("maxFrameSize option was not applied", frameSize, amqpProvider.getMaxFrameSize());
+ }
+
+ @Test(timeout = 20000)
public void testCreateProviderAppliesOptions() throws IOException, Exception {
URI configuredURI = new URI(peerURI.toString() +
"?amqp.presettleConsumers=true" +
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/bf0dac45/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 e72f9d2..6f34ea5 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
@@ -543,15 +543,20 @@ public class TestAmqpPeer implements AutoCloseable
* to the AMQP connection (useful to skip a stage for connections that don't
* require SASL, e.g. because of anonymous or client certificate authentication).
*/
- public void expectSaslLayerDisabledConnect()
+ public void expectSaslLayerDisabledConnect(Matcher<?> maxFrameSizeMatcher)
{
addHandler(new HeaderHandlerImpl(AmqpHeader.HEADER, AmqpHeader.HEADER));
OpenFrame openFrame = createOpenFrame();
OpenMatcher openMatcher = new OpenMatcher()
- .withContainerId(notNullValue(String.class))
- .onCompletion(new FrameSender(
+ .withContainerId(notNullValue(String.class));
+
+ if(maxFrameSizeMatcher != null) {
+ openMatcher.withMaxFrameSize(maxFrameSizeMatcher);
+ }
+
+ openMatcher.onCompletion(new FrameSender(
this, FrameType.AMQP, 0,
openFrame,
null));
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org