You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by gt...@apache.org on 2010/12/15 13:21:44 UTC
svn commit: r1049521 - in /activemq/trunk/activemq-core/src:
main/java/org/apache/activemq/transport/failover/FailoverTransport.java
test/java/org/apache/activemq/transport/failover/FailoverTimeoutTest.java
Author: gtully
Date: Wed Dec 15 12:21:43 2010
New Revision: 1049521
URL: http://svn.apache.org/viewvc?rev=1049521&view=rev
Log:
resolve: https://issues.apache.org/jira/browse/AMQ-3085 with test
Modified:
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java
activemq/trunk/activemq-core/src/test/java/org/apache/activemq/transport/failover/FailoverTimeoutTest.java
Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java?rev=1049521&r1=1049520&r2=1049521&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java Wed Dec 15 12:21:43 2010
@@ -609,8 +609,8 @@ public class FailoverTransport implement
public void add(boolean rebalance, URI u[]) {
boolean newURI = false;
for (int i = 0; i < u.length; i++) {
- if (contains(u[i])==false) {
- uris.add(i, u[i]);
+ if (!contains(u[i])) {
+ uris.add(u[i]);
newURI = true;
}
}
@@ -1096,7 +1096,7 @@ public class FailoverTransport implement
}
private boolean contains(URI newURI) {
-
+
boolean result = false;
try {
for (URI uri:uris) {
Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/transport/failover/FailoverTimeoutTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/transport/failover/FailoverTimeoutTest.java?rev=1049521&r1=1049520&r2=1049521&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/transport/failover/FailoverTimeoutTest.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/transport/failover/FailoverTimeoutTest.java Wed Dec 15 12:21:43 2010
@@ -17,56 +17,77 @@
package org.apache.activemq.transport.failover;
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;
public class FailoverTimeoutTest extends TestCase {
-
- private static final String QUEUE_NAME = "test.failovertimeout";
- public void testTimeout() throws Exception {
-
- long timeout = 1000;
- URI tcpUri = new URI("tcp://localhost:61616");
- BrokerService bs = new BrokerService();
- bs.setUseJmx(false);
- bs.addConnector(tcpUri);
- bs.start();
-
- ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("failover:(" + tcpUri + ")?timeout=" + timeout + "&useExponentialBackOff=false");
- Connection connection = cf.createConnection();
- Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
- MessageProducer producer = session.createProducer(session
- .createQueue(QUEUE_NAME));
- TextMessage message = session.createTextMessage("Test message");
- producer.send(message);
-
- bs.stop();
-
- try {
- producer.send(message);
- } catch (JMSException jmse) {
- assertEquals("Failover timeout of " + timeout + " ms reached.", jmse.getMessage());
- }
-
- bs = new BrokerService();
- bs.setUseJmx(false);
- bs.addConnector(tcpUri);
- bs.start();
- bs.waitUntilStarted();
-
- producer.send(message);
-
- bs.stop();
- }
-
+ private static final String QUEUE_NAME = "test.failovertimeout";
+ BrokerService bs;
+ URI tcpUri;
+
+ public void setUp() throws Exception {
+ bs = new BrokerService();
+ bs.setUseJmx(false);
+ bs.addConnector("tcp://localhost:0");
+ bs.start();
+ tcpUri = bs.getTransportConnectors().get(0).getConnectUri();
+ }
+
+ public void tearDown() throws Exception {
+ if (bs != null) {
+ bs.stop();
+ }
+ }
+
+ public void testTimeout() throws Exception {
+
+ long timeout = 1000;
+ ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("failover:(" + tcpUri + ")?timeout=" + timeout + "&useExponentialBackOff=false");
+ Connection connection = cf.createConnection();
+ Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ MessageProducer producer = session.createProducer(session
+ .createQueue(QUEUE_NAME));
+ TextMessage message = session.createTextMessage("Test message");
+ producer.send(message);
+
+ bs.stop();
+
+ try {
+ producer.send(message);
+ } catch (JMSException jmse) {
+ assertEquals("Failover timeout of " + timeout + " ms reached.", jmse.getMessage());
+ }
+
+ bs = new BrokerService();
+ bs.setUseJmx(false);
+ bs.addConnector(tcpUri);
+ bs.start();
+ bs.waitUntilStarted();
+
+ producer.send(message);
+
+ bs.stop();
+ }
+
+ public void testUpdateUris() throws Exception {
+
+ ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("failover:(" + tcpUri + ")?useExponentialBackOff=false");
+ ActiveMQConnection connection = (ActiveMQConnection) cf.createConnection();
+ connection.start();
+ FailoverTransport failoverTransport = connection.getTransport().narrow(FailoverTransport.class);
+
+ URI[] bunchOfUnknownAndOneKnown = new URI[]{
+ new URI("tcp://unknownHost:" + tcpUri.getPort()),
+ new URI("tcp://unknownHost2:" + tcpUri.getPort()),
+ new URI("tcp://localhost:2222")};
+ failoverTransport.add(false, bunchOfUnknownAndOneKnown);
+ }
}