You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ha...@apache.org on 2014/12/16 00:21:59 UTC
[14/17] activemq git commit:
https://issues.apache.org/jira/browse/AMQ-5231
https://issues.apache.org/jira/browse/AMQ-5231
Only apply timeout to the Message sends, other commands are handled
separately as needed.
Project: http://git-wip-us.apache.org/repos/asf/activemq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/70b02fde
Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/70b02fde
Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/70b02fde
Branch: refs/heads/activemq-5.10.x
Commit: 70b02fde333959b4c7ad91e15ddbca144061e2d2
Parents: f63bd32
Author: Timothy Bish <ta...@gmail.com>
Authored: Wed Jun 18 12:58:50 2014 -0400
Committer: Hadrian Zbarcea <ha...@apache.org>
Committed: Mon Dec 15 17:01:30 2014 -0500
----------------------------------------------------------------------
.../transport/failover/FailoverTransport.java | 2 +-
.../transport/failover/FailoverTimeoutTest.java | 47 +++++++++++++++++++-
2 files changed, 46 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq/blob/70b02fde/activemq-client/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java
----------------------------------------------------------------------
diff --git a/activemq-client/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java b/activemq-client/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java
index 2829d41..6df82ed 100755
--- a/activemq-client/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java
+++ b/activemq-client/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java
@@ -602,7 +602,7 @@ public class FailoverTransport implements CompositeTransport {
LOG.trace("Waiting for transport to reconnect..: " + command);
}
long end = System.currentTimeMillis();
- if (timeout > 0 && (end - start > timeout)) {
+ if (command.isMessage() && timeout > 0 && (end - start > timeout)) {
timedout = true;
if (LOG.isInfoEnabled()) {
LOG.info("Failover timed out after " + (end - start) + "ms");
http://git-wip-us.apache.org/repos/asf/activemq/blob/70b02fde/activemq-unit-tests/src/test/java/org/apache/activemq/transport/failover/FailoverTimeoutTest.java
----------------------------------------------------------------------
diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/transport/failover/FailoverTimeoutTest.java b/activemq-unit-tests/src/test/java/org/apache/activemq/transport/failover/FailoverTimeoutTest.java
index e52b2c7..9ef6e28 100644
--- a/activemq-unit-tests/src/test/java/org/apache/activemq/transport/failover/FailoverTimeoutTest.java
+++ b/activemq-unit-tests/src/test/java/org/apache/activemq/transport/failover/FailoverTimeoutTest.java
@@ -16,23 +16,36 @@
*/
package org.apache.activemq.transport.failover;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
import java.net.URI;
+
import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
-import junit.framework.TestCase;
+
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.broker.BrokerService;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class FailoverTimeoutTest {
-public class FailoverTimeoutTest extends TestCase {
+ private static final Logger LOG = LoggerFactory.getLogger(FailoverTimeoutTest.class);
private static final String QUEUE_NAME = "test.failovertimeout";
BrokerService bs;
URI tcpUri;
+ @Before
public void setUp() throws Exception {
bs = new BrokerService();
bs.setUseJmx(false);
@@ -41,12 +54,41 @@ public class FailoverTimeoutTest extends TestCase {
tcpUri = bs.getTransportConnectors().get(0).getConnectUri();
}
+ @After
public void tearDown() throws Exception {
if (bs != null) {
bs.stop();
}
}
+ @Test
+ public void testTimoutDoesNotFailConnectionAttempts() throws Exception {
+ bs.stop();
+ long timeout = 1000;
+
+ long startTime = System.currentTimeMillis();
+
+ ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory(
+ "failover:(" + tcpUri + ")" +
+ "?timeout=" + timeout + "&useExponentialBackOff=false" +
+ "&maxReconnectAttempts=5" + "&initialReconnectDelay=1000");
+ Connection connection = cf.createConnection();
+ try {
+ connection.start();
+ fail("Should have failed to connect");
+ } catch (JMSException ex) {
+ LOG.info("Caught exception on call to start: {}", ex.getMessage());
+ }
+
+ long endTime = System.currentTimeMillis();
+ long duration = endTime - startTime;
+
+ LOG.info("Time spent waiting to connect: {} ms", duration);
+
+ assertTrue(duration > 3000);
+ }
+
+ @Test
public void testTimeout() throws Exception {
long timeout = 1000;
@@ -77,6 +119,7 @@ public class FailoverTimeoutTest extends TestCase {
bs.stop();
}
+ @Test
public void testUpdateUris() throws Exception {
ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("failover:(" + tcpUri + ")?useExponentialBackOff=false");