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);
+    }
 }