diff options
author | Robert Gemmell <robbie@apache.org> | 2012-08-12 16:44:50 +0000 |
---|---|---|
committer | Robert Gemmell <robbie@apache.org> | 2012-08-12 16:44:50 +0000 |
commit | 3ebbcab976ada9ea97e530770c0003b4b475efce (patch) | |
tree | b9d65e645d2eb299c1250e61ce4b3b81f6420056 | |
parent | 097470826d8089c37ba5fd13f67badd84aa6c549 (diff) | |
download | qpid-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
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) { |