summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Gemmell <robbie@apache.org>2011-11-11 17:48:53 +0000
committerRobert Gemmell <robbie@apache.org>2011-11-11 17:48:53 +0000
commit5d55fd5c152443f0d4ed90b7da4b0d964d0afc81 (patch)
treeb46ff42fdd372e215bb882f605db487ac5d5f50a
parenta7cd11682ce63a0861d40d60fd814b8c4d99c468 (diff)
downloadqpid-python-5d55fd5c152443f0d4ed90b7da4b0d964d0afc81.tar.gz
QPID-3610: set TCP_NODELAY to true by default, add new system property for changing default, add unit tests for system properties + connection url options.
Merged from trunk r1200803 git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/0.14@1200994 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/java/client/src/test/java/org/apache/qpid/test/unit/client/BrokerDetails/BrokerDetailsTest.java31
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/configuration/ClientProperties.java6
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/transport/ConnectionSettings.java5
-rw-r--r--qpid/java/common/src/test/java/org/apache/qpid/transport/ConnectionSettingsTest.java49
4 files changed, 80 insertions, 11 deletions
diff --git a/qpid/java/client/src/test/java/org/apache/qpid/test/unit/client/BrokerDetails/BrokerDetailsTest.java b/qpid/java/client/src/test/java/org/apache/qpid/test/unit/client/BrokerDetails/BrokerDetailsTest.java
index 9095f94960..506185cbaf 100644
--- a/qpid/java/client/src/test/java/org/apache/qpid/test/unit/client/BrokerDetails/BrokerDetailsTest.java
+++ b/qpid/java/client/src/test/java/org/apache/qpid/test/unit/client/BrokerDetails/BrokerDetailsTest.java
@@ -20,19 +20,35 @@
*/
package org.apache.qpid.test.unit.client.BrokerDetails;
-import java.util.HashMap;
-import java.util.Map;
-
import junit.framework.TestCase;
import org.apache.qpid.client.AMQBrokerDetails;
-import org.apache.qpid.client.AMQConnectionURL;
-import org.apache.qpid.jms.ConnectionURL;
import org.apache.qpid.jms.BrokerDetails;
import org.apache.qpid.url.URLSyntaxException;
public class BrokerDetailsTest extends TestCase
{
+ public void testDefaultTCP_NODELAY() throws URLSyntaxException
+ {
+ String brokerURL = "tcp://localhost:5672";
+ AMQBrokerDetails broker = new AMQBrokerDetails(brokerURL);
+
+ assertNull("default value should be null", broker.getProperty(BrokerDetails.OPTIONS_TCP_NO_DELAY));
+ }
+
+ public void testOverridingTCP_NODELAY() throws URLSyntaxException
+ {
+ String brokerURL = "tcp://localhost:5672?tcp_nodelay='true'";
+ AMQBrokerDetails broker = new AMQBrokerDetails(brokerURL);
+
+ assertTrue("value should be true", Boolean.valueOf(broker.getProperty(BrokerDetails.OPTIONS_TCP_NO_DELAY)));
+
+ brokerURL = "tcp://localhost:5672?tcp_nodelay='false''&maxprefetch='1'";
+ broker = new AMQBrokerDetails(brokerURL);
+
+ assertFalse("value should be false", Boolean.valueOf(broker.getProperty(BrokerDetails.OPTIONS_TCP_NO_DELAY)));
+ }
+
public void testMultiParameters() throws URLSyntaxException
{
String url = "tcp://localhost:5672?timeout='200',immediatedelivery='true'";
@@ -82,9 +98,4 @@ public class BrokerDetailsTest extends TestCase
}
}
-
- public static junit.framework.Test suite()
- {
- return new junit.framework.TestSuite(BrokerDetailsTest.class);
- }
}
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/configuration/ClientProperties.java b/qpid/java/common/src/main/java/org/apache/qpid/configuration/ClientProperties.java
index 62ded5b2d8..88e2fb0176 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/configuration/ClientProperties.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/configuration/ClientProperties.java
@@ -102,6 +102,12 @@ public class ClientProperties
*/
public static final int DEFAULT_SYNC_OPERATION_TIMEOUT = 60000;
+ /**
+ * System properties to change the default value used for TCP_NODELAY
+ */
+ public static final String QPID_TCP_NODELAY_PROP_NAME = "qpid.tcp_nodelay";
+ public static final String AMQJ_TCP_NODELAY_PROP_NAME = "amqj.tcp_nodelay";
+
/*
public static final QpidProperty<Boolean> IGNORE_SET_CLIENTID_PROP_NAME =
QpidProperty.booleanProperty(false,"qpid.ignore_set_client_id","ignore_setclientID");
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/ConnectionSettings.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/ConnectionSettings.java
index 37a8e594c0..2ee507e2ec 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/transport/ConnectionSettings.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/ConnectionSettings.java
@@ -22,6 +22,8 @@ package org.apache.qpid.transport;
import java.util.Map;
+import org.apache.qpid.configuration.ClientProperties;
+
/**
* A ConnectionSettings object can only be associated with
* one Connection object. I have added an assertion that will
@@ -38,7 +40,8 @@ public class ConnectionSettings
String username = "guest";
String password = "guest";
int port = 5672;
- boolean tcpNodelay = Boolean.getBoolean("amqj.tcp_nodelay");
+ boolean tcpNodelay = Boolean.valueOf(System.getProperty(ClientProperties.QPID_TCP_NODELAY_PROP_NAME,
+ System.getProperty(ClientProperties.AMQJ_TCP_NODELAY_PROP_NAME, "true")));
int maxChannelCount = 32767;
int maxFrameSize = 65535;
int heartbeatInterval;
diff --git a/qpid/java/common/src/test/java/org/apache/qpid/transport/ConnectionSettingsTest.java b/qpid/java/common/src/test/java/org/apache/qpid/transport/ConnectionSettingsTest.java
new file mode 100644
index 0000000000..62ca0b70ba
--- /dev/null
+++ b/qpid/java/common/src/test/java/org/apache/qpid/transport/ConnectionSettingsTest.java
@@ -0,0 +1,49 @@
+package org.apache.qpid.transport;
+
+import org.apache.qpid.configuration.ClientProperties;
+import org.apache.qpid.test.utils.QpidTestCase;
+
+public class ConnectionSettingsTest extends QpidTestCase
+{
+ ConnectionSettings _conConnectionSettings;
+
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+ _conConnectionSettings = new ConnectionSettings();
+ }
+
+ public void testDefaultTCP_NODELAY()
+ {
+ assertTrue("Default for isTcpNodelay() should be true", _conConnectionSettings.isTcpNodelay());
+ }
+
+ public void testSystemPropertyOverrideTrueForTCP_NODELAY()
+ {
+ systemPropertyOverrideForTCP_NODELAYImpl(ClientProperties.QPID_TCP_NODELAY_PROP_NAME, true);
+ }
+
+ public void testSystemPropertyOverrideFalseForTCP_NODELAY()
+ {
+ systemPropertyOverrideForTCP_NODELAYImpl(ClientProperties.QPID_TCP_NODELAY_PROP_NAME, false);
+ }
+
+ public void testLegacySystemPropertyOverrideTrueForTCP_NODELAY()
+ {
+ systemPropertyOverrideForTCP_NODELAYImpl(ClientProperties.AMQJ_TCP_NODELAY_PROP_NAME, true);
+ }
+
+ public void testLegacySystemPropertyOverrideFalseForTCP_NODELAY()
+ {
+ systemPropertyOverrideForTCP_NODELAYImpl(ClientProperties.AMQJ_TCP_NODELAY_PROP_NAME, false);
+ }
+
+ private void systemPropertyOverrideForTCP_NODELAYImpl(String propertyName, boolean value)
+ {
+ //set the default via system property
+ setTestSystemProperty(propertyName, String.valueOf(value));
+
+ _conConnectionSettings = new ConnectionSettings();
+ assertEquals("Value for isTcpNodelay() is incorrect", value, _conConnectionSettings.isTcpNodelay());
+ }
+}