summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Gemmell <robbie@apache.org>2012-08-12 16:44:50 +0000
committerRobert Gemmell <robbie@apache.org>2012-08-12 16:44:50 +0000
commit3ebbcab976ada9ea97e530770c0003b4b475efce (patch)
treeb9d65e645d2eb299c1250e61ce4b3b81f6420056
parent097470826d8089c37ba5fd13f67badd84aa6c549 (diff)
downloadqpid-python-3ebbcab976ada9ea97e530770c0003b4b475efce.tar.gz
QPID-4051: use the connecttimeout option value from the BrokerDetails object to control the connect() timeout via the produced ConnectionSettings object
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1372147 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/java/client/src/main/java/org/apache/qpid/client/AMQBrokerDetails.java11
-rw-r--r--qpid/java/client/src/main/java/org/apache/qpid/jms/BrokerDetails.java6
-rw-r--r--qpid/java/client/src/test/java/org/apache/qpid/test/unit/client/BrokerDetails/BrokerDetailsTest.java24
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/transport/ConnectionSettings.java11
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkTransport.java2
5 files changed, 41 insertions, 13 deletions
diff --git a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQBrokerDetails.java b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQBrokerDetails.java
index 987404cb80..89273599b9 100644
--- a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQBrokerDetails.java
+++ b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQBrokerDetails.java
@@ -245,13 +245,13 @@ public class AMQBrokerDetails implements BrokerDetails
_options.put(key, value);
}
- public long getTimeout()
+ private int lookupConnectTimeout()
{
if (_options.containsKey(OPTIONS_CONNECT_TIMEOUT))
{
try
{
- return Long.parseLong(_options.get(OPTIONS_CONNECT_TIMEOUT));
+ return Integer.parseInt(_options.get(OPTIONS_CONNECT_TIMEOUT));
}
catch (NumberFormatException nfe)
{
@@ -290,11 +290,6 @@ public class AMQBrokerDetails implements BrokerDetails
}
}
- public void setTimeout(long timeout)
- {
- setProperty(OPTIONS_CONNECT_TIMEOUT, Long.toString(timeout));
- }
-
public String toString()
{
StringBuffer sb = new StringBuffer();
@@ -460,6 +455,8 @@ public class AMQBrokerDetails implements BrokerDetails
getBooleanProperty(BrokerDetails.OPTIONS_TCP_NO_DELAY,true));
}
+ conSettings.setConnectTimeout(lookupConnectTimeout());
+
return conSettings;
}
}
diff --git a/qpid/java/client/src/main/java/org/apache/qpid/jms/BrokerDetails.java b/qpid/java/client/src/main/java/org/apache/qpid/jms/BrokerDetails.java
index 71d7ffd2a3..4a7fca1efa 100644
--- a/qpid/java/client/src/main/java/org/apache/qpid/jms/BrokerDetails.java
+++ b/qpid/java/client/src/main/java/org/apache/qpid/jms/BrokerDetails.java
@@ -59,7 +59,7 @@ public interface BrokerDetails
public static final String URL_FORMAT_EXAMPLE =
"<transport>://<hostname>[:<port Default=\"" + DEFAULT_PORT + "\">][?<option>='<value>'[,<option>='<value>']]";
- public static final long DEFAULT_CONNECT_TIMEOUT = 30000L;
+ public static final int DEFAULT_CONNECT_TIMEOUT = 30000;
public static final boolean USE_SSL_DEFAULT = false;
// pulled these properties from the new BrokerDetails class in the qpid package
@@ -101,10 +101,6 @@ public interface BrokerDetails
*/
public void setProperties(Map<String,String> props);
- long getTimeout();
-
- void setTimeout(long timeout);
-
boolean getBooleanProperty(String propName);
String toString();
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 506185cbaf..412c458247 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
@@ -24,6 +24,7 @@ import junit.framework.TestCase;
import org.apache.qpid.client.AMQBrokerDetails;
import org.apache.qpid.jms.BrokerDetails;
+import org.apache.qpid.transport.ConnectionSettings;
import org.apache.qpid.url.URLSyntaxException;
public class BrokerDetailsTest extends TestCase
@@ -49,6 +50,29 @@ public class BrokerDetailsTest extends TestCase
assertFalse("value should be false", Boolean.valueOf(broker.getProperty(BrokerDetails.OPTIONS_TCP_NO_DELAY)));
}
+ public void testDefaultConnectTimeout() throws URLSyntaxException
+ {
+ String brokerURL = "tcp://localhost:5672";
+ AMQBrokerDetails broker = new AMQBrokerDetails(brokerURL);
+
+ ConnectionSettings settings = broker.buildConnectionSettings();
+
+ assertEquals("unexpected default connect timeout value", BrokerDetails.DEFAULT_CONNECT_TIMEOUT, settings.getConnectTimeout());
+ }
+
+ public void testOverridingConnectTimeout() throws URLSyntaxException
+ {
+ int timeout = 2 * BrokerDetails.DEFAULT_CONNECT_TIMEOUT;
+ assertTrue(timeout != BrokerDetails.DEFAULT_CONNECT_TIMEOUT);
+
+ String brokerURL = "tcp://localhost:5672?" + BrokerDetails.OPTIONS_CONNECT_TIMEOUT + "='" + timeout + "'";
+ AMQBrokerDetails broker = new AMQBrokerDetails(brokerURL);
+
+ ConnectionSettings settings = broker.buildConnectionSettings();
+
+ assertEquals("unexpected connect timeout value", timeout, settings.getConnectTimeout());
+ }
+
public void testMultiParameters() throws URLSyntaxException
{
String url = "tcp://localhost:5672?timeout='200',immediatedelivery='true'";
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 c90a11594c..c7a7c319f3 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
@@ -60,6 +60,7 @@ public class ConnectionSettings
private int maxChannelCount = 32767;
private int maxFrameSize = 65535;
private int heartbeatInterval;
+ private int connectTimeout = 30000;
private int readBufferSize = QpidProperty.intProperty(65535, RECEIVE_BUFFER_SIZE_PROP_NAME, LEGACY_RECEIVE_BUFFER_SIZE_PROP_NAME).get();
private int writeBufferSize = QpidProperty.intProperty(65535, SEND_BUFFER_SIZE_PROP_NAME, LEGACY_SEND_BUFFER_SIZE_PROP_NAME).get();;
private long transportTimeout = 60000;
@@ -345,6 +346,16 @@ public class ConnectionSettings
this.trustStoreType = trustStoreType;
}
+ public int getConnectTimeout()
+ {
+ return connectTimeout;
+ }
+
+ public void setConnectTimeout(int connectTimeout)
+ {
+ this.connectTimeout = connectTimeout;
+ }
+
public int getReadBufferSize()
{
return readBufferSize;
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkTransport.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkTransport.java
index dfb318b80c..b1e8c2f0e9 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkTransport.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkTransport.java
@@ -75,7 +75,7 @@ public class IoNetworkTransport implements OutgoingNetworkTransport, IncomingNet
InetAddress address = InetAddress.getByName(settings.getHost());
- _socket.connect(new InetSocketAddress(address, settings.getPort()), TIMEOUT);
+ _socket.connect(new InetSocketAddress(address, settings.getPort()), settings.getConnectTimeout());
}
catch (SocketException e)
{