Author: gtully
Date: Mon Feb 8 12:58:02 2010
New Revision: 907647
URL: http://svn.apache.org/viewvc?rev=907647&view=rev
Log:
merge -c 831876 https://svn.apache.org/repos/asf/activemq/trunk -
http://svn.apache.org/viewvc?view=revision&revision=831876 - make networkbridge
tests more resilient to time related issues on slow machines
Modified:
activemq/branches/activemq-5.3/activemq-core/src/main/java/org/apache/activemq/advisory/ConsumerEventSource.java
activemq/branches/activemq-5.3/activemq-core/src/main/java/org/apache/activemq/network/NetworkConnector.java
activemq/branches/activemq-5.3/activemq-core/src/main/java/org/apache/activemq/transport/vm/VMTransport.java
activemq/branches/activemq-5.3/activemq-core/src/test/java/org/apache/activemq/JmsMultipleBrokersTestSupport.java
activemq/branches/activemq-5.3/activemq-core/src/test/java/org/apache/activemq/usecases/MultiBrokersMultiClientsTest.java
activemq/branches/activemq-5.3/activemq-core/src/test/java/org/apache/activemq/usecases/MultiBrokersMultiClientsUsingTcpTest.java
activemq/branches/activemq-5.3/activemq-core/src/test/java/org/apache/activemq/usecases/NoDuplicateOnTopicNetworkTest.java
activemq/branches/activemq-5.3/activemq-core/src/test/java/org/apache/activemq/usecases/ThreeBrokerQueueNetworkTest.java
Modified:
activemq/branches/activemq-5.3/activemq-core/src/main/java/org/apache/activemq/advisory/ConsumerEventSource.java
URL:
http://svn.apache.org/viewvc/activemq/branches/activemq-5.3/activemq-core/src/main/java/org/apache/activemq/advisory/ConsumerEventSource.java?rev=907647&r1=907646&r2=907647&view=diff
==============================================================================
---
activemq/branches/activemq-5.3/activemq-core/src/main/java/org/apache/activemq/advisory/ConsumerEventSource.java
(original)
+++
activemq/branches/activemq-5.3/activemq-core/src/main/java/org/apache/activemq/advisory/ConsumerEventSource.java
Mon Feb 8 12:58:02 2010
@@ -23,7 +23,6 @@
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
-import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Session;
Modified:
activemq/branches/activemq-5.3/activemq-core/src/main/java/org/apache/activemq/network/NetworkConnector.java
URL:
http://svn.apache.org/viewvc/activemq/branches/activemq-5.3/activemq-core/src/main/java/org/apache/activemq/network/NetworkConnector.java?rev=907647&r1=907646&r2=907647&view=diff
==============================================================================
---
activemq/branches/activemq-5.3/activemq-core/src/main/java/org/apache/activemq/network/NetworkConnector.java
(original)
+++
activemq/branches/activemq-5.3/activemq-core/src/main/java/org/apache/activemq/network/NetworkConnector.java
Mon Feb 8 12:58:02 2010
@@ -18,6 +18,7 @@
import java.net.URI;
import java.net.URISyntaxException;
+import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -281,5 +282,9 @@
}
return removeSucceeded;
}
+
+ public Collection<NetworkBridge> activeBridges() {
+ return bridges.values();
+ }
}
Modified:
activemq/branches/activemq-5.3/activemq-core/src/main/java/org/apache/activemq/transport/vm/VMTransport.java
URL:
http://svn.apache.org/viewvc/activemq/branches/activemq-5.3/activemq-core/src/main/java/org/apache/activemq/transport/vm/VMTransport.java?rev=907647&r1=907646&r2=907647&view=diff
==============================================================================
---
activemq/branches/activemq-5.3/activemq-core/src/main/java/org/apache/activemq/transport/vm/VMTransport.java
(original)
+++
activemq/branches/activemq-5.3/activemq-core/src/main/java/org/apache/activemq/transport/vm/VMTransport.java
Mon Feb 8 12:58:02 2010
@@ -32,8 +32,6 @@
import org.apache.activemq.transport.TransportDisposedIOException;
import org.apache.activemq.transport.TransportListener;
import org.apache.activemq.util.IOExceptionSupport;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
/**
Modified:
activemq/branches/activemq-5.3/activemq-core/src/test/java/org/apache/activemq/JmsMultipleBrokersTestSupport.java
URL:
http://svn.apache.org/viewvc/activemq/branches/activemq-5.3/activemq-core/src/test/java/org/apache/activemq/JmsMultipleBrokersTestSupport.java?rev=907647&r1=907646&r2=907647&view=diff
==============================================================================
---
activemq/branches/activemq-5.3/activemq-core/src/test/java/org/apache/activemq/JmsMultipleBrokersTestSupport.java
(original)
+++
activemq/branches/activemq-5.3/activemq-core/src/test/java/org/apache/activemq/JmsMultipleBrokersTestSupport.java
Mon Feb 8 12:58:02 2010
@@ -55,6 +55,7 @@
import org.apache.activemq.network.NetworkConnector;
import org.apache.activemq.util.IdGenerator;
import org.apache.activemq.util.MessageIdList;
+import org.apache.activemq.util.Wait;
import org.apache.activemq.xbean.BrokerFactoryBean;
import org.springframework.core.io.Resource;
@@ -98,10 +99,10 @@
// By default, bridge them using add network connector of the local broker
// and the first connector of the remote broker
protected NetworkConnector bridgeBrokers(BrokerService localBroker,
BrokerService remoteBroker, boolean dynamicOnly, int networkTTL, boolean
conduit) throws Exception {
- List transportConnectors = remoteBroker.getTransportConnectors();
+ List<TransportConnector> transportConnectors =
remoteBroker.getTransportConnectors();
URI remoteURI;
if (!transportConnectors.isEmpty()) {
- remoteURI =
((TransportConnector)transportConnectors.get(0)).getConnectUri();
+ remoteURI = transportConnectors.get(0).getConnectUri();
NetworkConnector connector = new DiscoveryNetworkConnector(new
URI("static:" + remoteURI));
connector.setDynamicOnly(dynamicOnly);
connector.setNetworkTTL(networkTTL);
@@ -128,14 +129,14 @@
Collection<BrokerItem> brokerList = brokers.values();
for (Iterator<BrokerItem> i = brokerList.iterator(); i.hasNext();) {
BrokerService broker = i.next().broker;
- List transportConnectors = broker.getTransportConnectors();
+ List<TransportConnector> transportConnectors =
broker.getTransportConnectors();
if (transportConnectors.isEmpty()) {
broker.addConnector(new URI(AUTO_ASSIGN_TRANSPORT));
transportConnectors = broker.getTransportConnectors();
}
- TransportConnector transport =
(TransportConnector)transportConnectors.get(0);
+ TransportConnector transport = transportConnectors.get(0);
transport.setDiscoveryUri(new URI("multicast://default?group=" +
groupName));
NetworkConnector nc =
broker.addNetworkConnector("multicast://default?group=" + groupName);
nc.setNetworkTTL(ttl);
@@ -147,6 +148,19 @@
maxSetupTime = 8000;
}
+
+ protected void waitForBridgeFormation() throws Exception {
+ for (BrokerItem brokerItem : brokers.values()) {
+ final BrokerService broker = brokerItem.broker;
+ if (!broker.getNetworkConnectors().isEmpty()) {
+ Wait.waitFor(new Wait.Condition() {
+ public boolean isSatisified() throws Exception {
+ return
!broker.getNetworkConnectors().get(0).activeBridges().isEmpty();
+ }});
+ }
+ }
+ }
+
protected void startAllBrokers() throws Exception {
Collection<BrokerItem> brokerList = brokers.values();
for (Iterator<BrokerItem> i = brokerList.iterator(); i.hasNext();) {
@@ -482,6 +496,7 @@
try {
c.close();
} catch (ConnectionClosedException e) {
+ } catch (JMSException e) {
}
}
Modified:
activemq/branches/activemq-5.3/activemq-core/src/test/java/org/apache/activemq/usecases/MultiBrokersMultiClientsTest.java
URL:
http://svn.apache.org/viewvc/activemq/branches/activemq-5.3/activemq-core/src/test/java/org/apache/activemq/usecases/MultiBrokersMultiClientsTest.java?rev=907647&r1=907646&r2=907647&view=diff
==============================================================================
---
activemq/branches/activemq-5.3/activemq-core/src/test/java/org/apache/activemq/usecases/MultiBrokersMultiClientsTest.java
(original)
+++
activemq/branches/activemq-5.3/activemq-core/src/test/java/org/apache/activemq/usecases/MultiBrokersMultiClientsTest.java
Mon Feb 8 12:58:02 2010
@@ -43,12 +43,13 @@
private static final Log LOG =
LogFactory.getLog(MultiBrokersMultiClientsTest.class);
- protected Map consumerMap;
+ protected Map<String, MessageConsumer> consumerMap;
Map<Thread, Throwable> unhandeledExceptions = new HashMap<Thread,
Throwable>();
public void testTopicAllConnected() throws Exception {
bridgeAllBrokers();
startAllBrokers();
+ waitForBridgeFormation();
// Setup topic destination
Destination dest = createDestination("TEST.FOO", true);
@@ -99,6 +100,7 @@
public void testQueueAllConnected() throws Exception {
bridgeAllBrokers();
startAllBrokers();
+ this.waitForBridgeFormation();
// Setup topic destination
Destination dest = createDestination("TEST.FOO", false);
@@ -132,7 +134,7 @@
int totalMsg = 0;
for (int i = 1; i <= BROKER_COUNT; i++) {
for (int j = 0; j < CONSUMER_COUNT; j++) {
- MessageIdList msgs = getConsumerMessages("Broker" + i,
(MessageConsumer)consumerMap.get("Consumer:" + i + ":" + j));
+ MessageIdList msgs = getConsumerMessages("Broker" + i,
consumerMap.get("Consumer:" + i + ":" + j));
totalMsg += msgs.getMessageCount();
}
}
@@ -153,7 +155,7 @@
createBroker(new URI("broker:()/Broker" + i +
"?persistent=false&useJmx=false"));
}
- consumerMap = new HashMap();
+ consumerMap = new HashMap<String, MessageConsumer>();
}
public void uncaughtException(Thread t, Throwable e) {
Modified:
activemq/branches/activemq-5.3/activemq-core/src/test/java/org/apache/activemq/usecases/MultiBrokersMultiClientsUsingTcpTest.java
URL:
http://svn.apache.org/viewvc/activemq/branches/activemq-5.3/activemq-core/src/test/java/org/apache/activemq/usecases/MultiBrokersMultiClientsUsingTcpTest.java?rev=907647&r1=907646&r2=907647&view=diff
==============================================================================
---
activemq/branches/activemq-5.3/activemq-core/src/test/java/org/apache/activemq/usecases/MultiBrokersMultiClientsUsingTcpTest.java
(original)
+++
activemq/branches/activemq-5.3/activemq-core/src/test/java/org/apache/activemq/usecases/MultiBrokersMultiClientsUsingTcpTest.java
Mon Feb 8 12:58:02 2010
@@ -46,14 +46,14 @@
}
protected void bridgeBrokers(BrokerService localBroker, BrokerService
remoteBroker) throws Exception {
- List remoteTransports = remoteBroker.getTransportConnectors();
- List localTransports = localBroker.getTransportConnectors();
+ List<TransportConnector> remoteTransports =
remoteBroker.getTransportConnectors();
+ List<TransportConnector> localTransports =
localBroker.getTransportConnectors();
URI remoteURI;
URI localURI;
if (!remoteTransports.isEmpty() && !localTransports.isEmpty()) {
- remoteURI =
((TransportConnector)remoteTransports.get(0)).getConnectUri();
- localURI =
((TransportConnector)localTransports.get(0)).getConnectUri();
+ remoteURI = remoteTransports.get(0).getConnectUri();
+ localURI = localTransports.get(0).getConnectUri();
// Ensure that we are connecting using tcp
if (remoteURI.toString().startsWith("tcp:") &&
localURI.toString().startsWith("tcp:")) {
@@ -77,8 +77,8 @@
// Assign a tcp connector to each broker
int j = 0;
- for (Iterator i = brokers.values().iterator(); i.hasNext();) {
- ((BrokerItem)i.next()).broker.addConnector("tcp://localhost:" +
(61616 + j++));
+ for (Iterator<BrokerItem> i = brokers.values().iterator();
i.hasNext();) {
+ i.next().broker.addConnector("tcp://localhost:" + (61616 + j++));
}
bridges = new ArrayList<DemandForwardingBridge>();
Modified:
activemq/branches/activemq-5.3/activemq-core/src/test/java/org/apache/activemq/usecases/NoDuplicateOnTopicNetworkTest.java
URL:
http://svn.apache.org/viewvc/activemq/branches/activemq-5.3/activemq-core/src/test/java/org/apache/activemq/usecases/NoDuplicateOnTopicNetworkTest.java?rev=907647&r1=907646&r2=907647&view=diff
==============================================================================
---
activemq/branches/activemq-5.3/activemq-core/src/test/java/org/apache/activemq/usecases/NoDuplicateOnTopicNetworkTest.java
(original)
+++
activemq/branches/activemq-5.3/activemq-core/src/test/java/org/apache/activemq/usecases/NoDuplicateOnTopicNetworkTest.java
Mon Feb 8 12:58:02 2010
@@ -34,14 +34,15 @@
import javax.jms.TextMessage;
import javax.jms.Topic;
+import junit.framework.TestCase;
+
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.broker.BrokerService;
import org.apache.activemq.network.NetworkConnector;
+import org.apache.activemq.util.Wait;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import junit.framework.TestCase;
-
public class NoDuplicateOnTopicNetworkTest extends TestCase {
private static final Log LOG = LogFactory
.getLog(NoDuplicateOnTopicNetworkTest.class);
@@ -71,6 +72,25 @@
Thread.sleep(3000);
broker1 = createAndStartBroker("broker1", BROKER_1);
Thread.sleep(1000);
+
+ waitForBridgeFormation();
+ }
+
+ protected void waitForBridgeFormation() throws Exception {
+ Wait.waitFor(new Wait.Condition() {
+ public boolean isSatisified() throws Exception {
+ return
!broker3.getNetworkConnectors().get(0).activeBridges().isEmpty();
+ }});
+
+ Wait.waitFor(new Wait.Condition() {
+ public boolean isSatisified() throws Exception {
+ return
!broker2.getNetworkConnectors().get(0).activeBridges().isEmpty();
+ }});
+
+ Wait.waitFor(new Wait.Condition() {
+ public boolean isSatisified() throws Exception {
+ return
!broker1.getNetworkConnectors().get(0).activeBridges().isEmpty();
+ }});
}
private BrokerService createAndStartBroker(String name, String addr)
Modified:
activemq/branches/activemq-5.3/activemq-core/src/test/java/org/apache/activemq/usecases/ThreeBrokerQueueNetworkTest.java
URL:
http://svn.apache.org/viewvc/activemq/branches/activemq-5.3/activemq-core/src/test/java/org/apache/activemq/usecases/ThreeBrokerQueueNetworkTest.java?rev=907647&r1=907646&r2=907647&view=diff
==============================================================================
---
activemq/branches/activemq-5.3/activemq-core/src/test/java/org/apache/activemq/usecases/ThreeBrokerQueueNetworkTest.java
(original)
+++
activemq/branches/activemq-5.3/activemq-core/src/test/java/org/apache/activemq/usecases/ThreeBrokerQueueNetworkTest.java
Mon Feb 8 12:58:02 2010
@@ -61,7 +61,8 @@
bridgeBrokers("BrokerB", "BrokerC");
startAllBrokers();
-
+ waitForBridgeFormation();
+
// Setup destination
Destination dest = createDestination("TEST.FOO", false);
@@ -88,7 +89,8 @@
bridgeBrokers("BrokerB", "BrokerC");
startAllBrokers();
-
+ waitForBridgeFormation();
+
// Setup destination
Destination dest = createDestination("TEST.FOO", false);
@@ -119,7 +121,8 @@
bridgeBrokers("BrokerB", "BrokerC", true, 1, false);
startAllBrokers();
-
+ waitForBridgeFormation();
+
// Setup destination
Destination dest = createDestination("TEST.FOO", false);
@@ -160,7 +163,8 @@
bridgeBrokers("BrokerB", "BrokerC", true, 1, false);
startAllBrokers();
-
+ waitForBridgeFormation();
+
// Setup destination
Destination dest = createDestination("TEST.FOO", false);
@@ -201,7 +205,8 @@
bridgeBrokers("BrokerC", "BrokerB");
startAllBrokers();
-
+ waitForBridgeFormation();
+
// Setup destination
Destination dest = createDestination("TEST.FOO", false);
@@ -233,7 +238,8 @@
bridgeBrokers("BrokerC", "BrokerA");
startAllBrokers();
-
+ waitForBridgeFormation();
+
// Setup destination
Destination dest = createDestination("TEST.FOO", false);
@@ -263,7 +269,8 @@
bridgeAllBrokers();
startAllBrokers();
-
+ waitForBridgeFormation();
+
// Setup destination
Destination dest = createDestination("TEST.FOO", false);
@@ -309,7 +316,8 @@
public void testAllConnectedUsingMulticastProducerConsumerOnA() throws
Exception {
bridgeAllBrokers("default", 3, false);
startAllBrokers();
-
+ waitForBridgeFormation();
+
// Setup destination
Destination dest = createDestination("TEST.FOO", false);
@@ -334,7 +342,8 @@
public void testAllConnectedWithSpare() throws Exception {
bridgeAllBrokers("default", 3, false);
startAllBrokers();
-
+ waitForBridgeFormation();
+
// Setup destination
Destination dest = createDestination("TEST.FOO", false);
@@ -367,6 +376,7 @@
boolean suppressQueueDuplicateSubscriptions = false;
bridgeAllBrokers("default", 3, suppressQueueDuplicateSubscriptions);
startAllBrokers();
+ waitForBridgeFormation();
// Setup destination
Destination dest = createDestination("TEST.FOO", false);
@@ -424,7 +434,8 @@
boolean decreaseNetworkConsumerPriority = true;
bridgeAllBrokers("default", 3, suppressQueueDuplicateSubscriptions,
decreaseNetworkConsumerPriority);
startAllBrokers();
-
+ waitForBridgeFormation();
+
// Setup destination
Destination dest = createDestination("TEST.FOO", false);
@@ -467,7 +478,8 @@
bridgeAllBrokers("default", 3, true);
startAllBrokers();
-
+ waitForBridgeFormation();
+
// Setup destination
Destination dest = createDestination("TEST.FOO", false);
@@ -536,7 +548,8 @@
});
startAllBrokers();
-
+ waitForBridgeFormation();
+
// Setup consumers
String brokerName = "BrokerA";
@@ -563,7 +576,8 @@
bridgeAllBrokers("default", 3, false);
startAllBrokers();
-
+ waitForBridgeFormation();
+
// Setup destination
Destination dest = createDestination("TEST.FOO", false);