diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/network/BaseNetworkTest.java b/activemq-unit-tests/src/test/java/org/apache/activemq/network/BaseNetworkTest.java index 1af6636e928..60fd8491698 100644 --- a/activemq-unit-tests/src/test/java/org/apache/activemq/network/BaseNetworkTest.java +++ b/activemq-unit-tests/src/test/java/org/apache/activemq/network/BaseNetworkTest.java @@ -16,13 +16,22 @@ */ package org.apache.activemq.network; +import static org.junit.Assert.assertTrue; + import java.net.URI; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.TimeUnit; import jakarta.jms.Connection; import jakarta.jms.Session; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.broker.BrokerService; +import org.apache.activemq.command.ActiveMQDestination; +import org.apache.activemq.command.ActiveMQQueue; +import org.apache.activemq.command.ActiveMQTopic; +import org.apache.activemq.util.Wait; import org.apache.activemq.xbean.BrokerFactoryBean; import org.junit.After; import org.junit.Before; @@ -59,11 +68,15 @@ protected void doTearDown() throws Exception { if(remoteConnection != null) remoteConnection.close(); - if(localBroker != null) + if(localBroker != null) { localBroker.stop(); + localBroker.waitUntilStopped(); + } - if(remoteBroker != null) + if(remoteBroker != null) { remoteBroker.stop(); + remoteBroker.waitUntilStopped(); + } } protected void doSetUp(boolean deleteAllMessages) throws Exception { @@ -75,14 +88,25 @@ protected void doSetUp(boolean deleteAllMessages) throws Exception { localBroker.setDeleteAllMessagesOnStartup(deleteAllMessages); localBroker.start(); localBroker.waitUntilStarted(); - URI localURI = localBroker.getVmConnectorURI(); + + // Programmatically add network connectors using the actual assigned ephemeral ports. + // Use startNetworkConnector() instead of connector.start() to ensure proper JMX MBean registration. + addNetworkConnectors(); + + // Wait for both network bridges to be FULLY started (advisory consumers registered). + // activeBridges().isEmpty() is NOT sufficient because bridges are added to the map + // before start() completes asynchronously. We must wait for the startedLatch. + waitForBridgeFullyStarted(localBroker, "Local"); + waitForBridgeFullyStarted(remoteBroker, "Remote"); + + final URI localURI = localBroker.getVmConnectorURI(); ActiveMQConnectionFactory fac = new ActiveMQConnectionFactory(localURI); fac.setAlwaysSyncSend(true); fac.setDispatchAsync(false); localConnection = fac.createConnection(); localConnection.setClientID("clientId"); localConnection.start(); - URI remoteURI = remoteBroker.getVmConnectorURI(); + final URI remoteURI = remoteBroker.getVmConnectorURI(); fac = new ActiveMQConnectionFactory(remoteURI); remoteConnection = fac.createConnection(); remoteConnection.setClientID("clientId"); @@ -91,21 +115,72 @@ protected void doSetUp(boolean deleteAllMessages) throws Exception { remoteSession = remoteConnection.createSession(false, Session.AUTO_ACKNOWLEDGE); } + /** + * Programmatically adds network connectors between the local and remote brokers + * using the actual assigned ephemeral ports. This avoids hardcoding ports in XML + * config files which causes port conflicts on CI. + */ + protected void addNetworkConnectors() throws Exception { + final URI remoteConnectURI = remoteBroker.getTransportConnectors().get(0).getConnectUri(); + final URI localConnectURI = localBroker.getTransportConnectors().get(0).getConnectUri(); + + // Local -> Remote network connector (matches the original localBroker.xml config) + final DiscoveryNetworkConnector localToRemote = new DiscoveryNetworkConnector( + new URI("static:(" + remoteConnectURI + ")")); + localToRemote.setName("networkConnector"); + localToRemote.setDynamicOnly(false); + localToRemote.setConduitSubscriptions(true); + localToRemote.setDecreaseNetworkConsumerPriority(false); + + final List dynamicallyIncluded = new ArrayList<>(); + dynamicallyIncluded.add(new ActiveMQQueue("include.test.foo")); + dynamicallyIncluded.add(new ActiveMQTopic("include.test.bar")); + localToRemote.setDynamicallyIncludedDestinations(dynamicallyIncluded); + + final List excluded = new ArrayList<>(); + excluded.add(new ActiveMQQueue("exclude.test.foo")); + excluded.add(new ActiveMQTopic("exclude.test.bar")); + localToRemote.setExcludedDestinations(excluded); + + localBroker.addNetworkConnector(localToRemote); + // startNetworkConnector handles JMX MBean registration and connector startup + localBroker.startNetworkConnector(localToRemote, null); + + // Remote -> Local network connector (matches the original remoteBroker.xml config) + final DiscoveryNetworkConnector remoteToLocal = new DiscoveryNetworkConnector( + new URI("static:(" + localConnectURI + ")")); + remoteToLocal.setName("networkConnector"); + remoteBroker.addNetworkConnector(remoteToLocal); + remoteBroker.startNetworkConnector(remoteToLocal, null); + } + + protected void waitForBridgeFullyStarted(final BrokerService broker, final String label) throws Exception { + assertTrue(label + " broker bridge should be fully started", Wait.waitFor(() -> { + if (broker.getNetworkConnectors().isEmpty() + || broker.getNetworkConnectors().get(0).activeBridges().isEmpty()) { + return false; + } + final NetworkBridge bridge = broker.getNetworkConnectors().get(0).activeBridges().iterator().next(); + if (bridge instanceof DemandForwardingBridgeSupport) { + return ((DemandForwardingBridgeSupport) bridge).startedLatch.getCount() == 0; + } + return true; + }, TimeUnit.SECONDS.toMillis(10), 100)); + } + protected String getRemoteBrokerURI() { - return "org/apache/activemq/network/remoteBroker.xml"; + return "org/apache/activemq/network/remoteBroker-ephemeral.xml"; } protected String getLocalBrokerURI() { - return "org/apache/activemq/network/localBroker.xml"; + return "org/apache/activemq/network/localBroker-ephemeral.xml"; } protected BrokerService createBroker(String uri) throws Exception { - Resource resource = new ClassPathResource(uri); - BrokerFactoryBean factory = new BrokerFactoryBean(resource); - resource = new ClassPathResource(uri); - factory = new BrokerFactoryBean(resource); + final Resource resource = new ClassPathResource(uri); + final BrokerFactoryBean factory = new BrokerFactoryBean(resource); factory.afterPropertiesSet(); - BrokerService result = factory.getBroker(); + final BrokerService result = factory.getBroker(); return result; } diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/network/NetworkFailoverTest.java b/activemq-unit-tests/src/test/java/org/apache/activemq/network/NetworkFailoverTest.java index fa7efce8981..f0867532890 100644 --- a/activemq-unit-tests/src/test/java/org/apache/activemq/network/NetworkFailoverTest.java +++ b/activemq-unit-tests/src/test/java/org/apache/activemq/network/NetworkFailoverTest.java @@ -17,6 +17,7 @@ package org.apache.activemq.network; import java.io.IOException; +import java.net.URI; import java.util.concurrent.atomic.AtomicInteger; import jakarta.jms.Connection; @@ -25,7 +26,6 @@ import jakarta.jms.JMSException; import jakarta.jms.Message; import jakarta.jms.MessageConsumer; -import jakarta.jms.MessageListener; import jakarta.jms.MessageProducer; import jakarta.jms.Queue; import jakarta.jms.Session; @@ -39,6 +39,7 @@ import org.apache.activemq.broker.BrokerService; import org.apache.activemq.broker.region.policy.SharedDeadLetterStrategy; import org.apache.activemq.command.ActiveMQQueue; +import org.apache.activemq.command.ActiveMQTopic; import org.apache.activemq.transport.TransportFilter; import org.apache.activemq.transport.failover.FailoverTransport; import org.apache.activemq.xbean.BrokerFactoryBean; @@ -68,32 +69,28 @@ public class NetworkFailoverTest extends TestCase { public void testRequestReply() throws Exception { final MessageProducer remoteProducer = remoteSession.createProducer(null); MessageConsumer remoteConsumer = remoteSession.createConsumer(included); - remoteConsumer.setMessageListener(new MessageListener() { - @Override - public void onMessage(Message msg) { - final TextMessage textMsg = (TextMessage)msg; + remoteConsumer.setMessageListener(msg -> { + final TextMessage textMsg = (TextMessage) msg; + try { + final String payload = "REPLY: " + textMsg.getText() + ", " + textMsg.getJMSMessageID(); + final Destination replyTo = msg.getJMSReplyTo(); + textMsg.clearBody(); + textMsg.setText(payload); + LOG.info("*** Sending response: {}", textMsg.getText()); + remoteProducer.send(replyTo, textMsg); + LOG.info("replied with: " + textMsg.getJMSMessageID()); + + } catch (DestinationDoesNotExistException expected) { + // been removed but not yet recreated + replyToNonExistDest.incrementAndGet(); try { - String payload = "REPLY: " + textMsg.getText() + ", " + textMsg.getJMSMessageID(); - Destination replyTo; - replyTo = msg.getJMSReplyTo(); - textMsg.clearBody(); - textMsg.setText(payload); - LOG.info("*** Sending response: {}", textMsg.getText()); - remoteProducer.send(replyTo, textMsg); - LOG.info("replied with: " + textMsg.getJMSMessageID()); - - } catch (DestinationDoesNotExistException expected) { - // been removed but not yet recreated - replyToNonExistDest.incrementAndGet(); - try { - LOG.info("NED: " + textMsg.getJMSMessageID()); - } catch (JMSException e) { - e.printStackTrace(); - }; - } catch (Exception e) { - LOG.warn("*** Responder listener caught exception: ", e); + LOG.info("NED: " + textMsg.getJMSMessageID()); + } catch (JMSException e) { e.printStackTrace(); } + } catch (Exception e) { + LOG.warn("*** Responder listener caught exception: ", e); + e.printStackTrace(); } }); @@ -104,16 +101,13 @@ public void onMessage(Message msg) { // track remote dlq for forward failures MessageConsumer dlqconsumer = remoteSession.createConsumer(new ActiveMQQueue(SharedDeadLetterStrategy.DEFAULT_DEAD_LETTER_QUEUE_NAME)); - dlqconsumer.setMessageListener(new MessageListener() { - @Override - public void onMessage(Message message) { - try { - LOG.info("dlq " + message.getJMSMessageID()); - } catch (JMSException e) { - e.printStackTrace(); - } - remoteDLQCount.incrementAndGet(); + dlqconsumer.setMessageListener(message -> { + try { + LOG.info("dlq " + message.getJMSMessageID()); + } catch (JMSException e) { + e.printStackTrace(); } + remoteDLQCount.incrementAndGet(); }); // allow for consumer infos to perculate arround @@ -176,25 +170,51 @@ protected void doTearDown() throws Exception { } catch(Exception ex) {} } - protected void doSetUp(boolean deleteAllMessages) throws Exception { + protected void doSetUp(final boolean deleteAllMessages) throws Exception { remoteBroker = createRemoteBroker(); remoteBroker.setDeleteAllMessagesOnStartup(deleteAllMessages); remoteBroker.setCacheTempDestinations(true); remoteBroker.start(); + remoteBroker.waitUntilStarted(); localBroker = createLocalBroker(); localBroker.setDeleteAllMessagesOnStartup(deleteAllMessages); localBroker.setCacheTempDestinations(true); localBroker.start(); - - String localURI = "tcp://localhost:61616"; - String remoteURI = "tcp://localhost:61617"; - ActiveMQConnectionFactory fac = new ActiveMQConnectionFactory("failover:("+localURI+","+remoteURI+")?randomize=false&backup=false&trackMessages=true"); + localBroker.waitUntilStarted(); + + // Get actual assigned ephemeral ports + final URI localConnectURI = localBroker.getTransportConnectors().get(0).getConnectUri(); + final URI remoteConnectURI = remoteBroker.getTransportConnectors().get(0).getConnectUri(); + final String localURI = localConnectURI.toString(); + final String remoteURI = remoteConnectURI.toString(); + + // Add network connectors programmatically using actual ports + final DiscoveryNetworkConnector localToRemote = new DiscoveryNetworkConnector( + new URI("static://(" + remoteURI + ")")); + localToRemote.setName("networkConnector"); + localToRemote.setDynamicOnly(false); + localToRemote.setConduitSubscriptions(true); + localToRemote.setDecreaseNetworkConsumerPriority(false); + localToRemote.setDynamicallyIncludedDestinations( + java.util.List.of(new ActiveMQQueue("include.test.foo"), new ActiveMQTopic("include.test.bar"))); + localToRemote.setExcludedDestinations( + java.util.List.of(new ActiveMQQueue("exclude.test.foo"), new ActiveMQTopic("exclude.test.bar"))); + localBroker.addNetworkConnector(localToRemote); + localBroker.startNetworkConnector(localToRemote, null); + + final DiscoveryNetworkConnector remoteToLocal = new DiscoveryNetworkConnector( + new URI("static://(" + localURI + ")")); + remoteToLocal.setName("networkConnector"); + remoteBroker.addNetworkConnector(remoteToLocal); + remoteBroker.startNetworkConnector(remoteToLocal, null); + + ActiveMQConnectionFactory fac = new ActiveMQConnectionFactory("failover:(" + localURI + "," + remoteURI + ")?randomize=false&backup=false&trackMessages=true"); localConnection = fac.createConnection(); localConnection.setClientID("local"); localConnection.start(); - fac = new ActiveMQConnectionFactory("failover:("+remoteURI + ","+localURI+")?randomize=false&backup=false&trackMessages=true"); + fac = new ActiveMQConnectionFactory("failover:(" + remoteURI + "," + localURI + ")?randomize=false&backup=false&trackMessages=true"); fac.setWatchTopicAdvisories(false); remoteConnection = fac.createConnection(); remoteConnection.setClientID("remote"); @@ -205,11 +225,11 @@ protected void doSetUp(boolean deleteAllMessages) throws Exception { } protected String getRemoteBrokerURI() { - return "org/apache/activemq/network/remoteBroker.xml"; + return "org/apache/activemq/network/remoteBroker-ephemeral.xml"; } protected String getLocalBrokerURI() { - return "org/apache/activemq/network/localBroker.xml"; + return "org/apache/activemq/network/localBroker-ephemeral.xml"; } protected BrokerService createBroker(String uri) throws Exception { diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/perf/NetworkedSyncTest.java b/activemq-unit-tests/src/test/java/org/apache/activemq/perf/NetworkedSyncTest.java index db75e2e5942..5b7fefd54d4 100644 --- a/activemq-unit-tests/src/test/java/org/apache/activemq/perf/NetworkedSyncTest.java +++ b/activemq-unit-tests/src/test/java/org/apache/activemq/perf/NetworkedSyncTest.java @@ -16,6 +16,8 @@ */ package org.apache.activemq.perf; +import java.net.URI; + import jakarta.jms.Connection; import jakarta.jms.DeliveryMode; import jakarta.jms.Destination; @@ -32,22 +34,22 @@ import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.broker.BrokerService; import org.apache.activemq.network.NetworkConnector; -import org.apache.activemq.xbean.BrokerFactoryBean; import org.apache.xbean.spring.context.ClassPathXmlApplicationContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.core.io.ClassPathResource; public class NetworkedSyncTest extends TestCase { // constants public static final int MESSAGE_COUNT = 10000; //100000; - public final static String config = "org/apache/activemq/perf/networkSync.xml"; - public final static String broker1URL = "tcp://localhost:61616"; - public final static String broker2URL = "tcp://localhost:62616"; - private final String networkConnectorURL = "static://(" + broker2URL + ")"; + public static final String config = "org/apache/activemq/perf/networkSync.xml"; private static final Logger LOG = LoggerFactory.getLogger(NetworkedSyncTest.class); + + // Broker URLs resolved after startup from ephemeral ports + static String broker1URL; + static String broker2URL; + BrokerService broker1 = null; BrokerService broker2 = null; NetworkConnector connector = null; @@ -55,12 +57,12 @@ public class NetworkedSyncTest extends TestCase { /** * @param name */ - public NetworkedSyncTest(String name) { + public NetworkedSyncTest(final String name) { super(name); LOG.info("Testcase started."); } - public static void main(String args[]) { + public static void main(final String[] args) { TestRunner.run(NetworkedSyncTest.class); } @@ -70,53 +72,51 @@ public static void main(String args[]) { @Override protected void setUp() throws Exception { LOG.info("setUp() called."); - ClassPathXmlApplicationContext context1 = null; - BrokerFactoryBean brokerFactory = new BrokerFactoryBean(new ClassPathResource(config)); - assertNotNull(brokerFactory); /* start up first broker instance */ try { - // resolve broker1 Thread.currentThread().setContextClassLoader( NetworkedSyncTest.class.getClassLoader()); - context1 = new ClassPathXmlApplicationContext(config); + final ClassPathXmlApplicationContext context1 = new ClassPathXmlApplicationContext(config); broker1 = (BrokerService) context1.getBean("broker1"); - // start the broker if (!broker1.isStarted()) { LOG.info("Broker broker1 not yet started. Kicking it off now."); broker1.start(); - } else { - LOG.info("Broker broker1 already started. Not kicking it off a second time."); - broker1.waitUntilStopped(); + broker1.waitUntilStarted(); } - } catch (Exception e) { + } catch (final Exception e) { LOG.error("Error: " + e.getMessage()); throw e; - // brokerService.stop(); } /* start up second broker instance */ try { Thread.currentThread().setContextClassLoader( NetworkedSyncTest.class.getClassLoader()); - context1 = new ClassPathXmlApplicationContext(config); - broker2 = (BrokerService) context1.getBean("broker2"); + final ClassPathXmlApplicationContext context2 = new ClassPathXmlApplicationContext(config); + broker2 = (BrokerService) context2.getBean("broker2"); - // start the broker if (!broker2.isStarted()) { LOG.info("Broker broker2 not yet started. Kicking it off now."); broker2.start(); - } else { - LOG.info("Broker broker2 already started. Not kicking it off a second time."); - broker2.waitUntilStopped(); + broker2.waitUntilStarted(); } - } catch (Exception e) { + } catch (final Exception e) { LOG.error("Error: " + e.getMessage()); throw e; } - // setup network connector from broker1 to broker2 + // Resolve actual broker URLs from ephemeral ports assigned after startup + final URI broker1ConnectURI = broker1.getTransportConnectors().get(0).getConnectUri(); + final URI broker2ConnectURI = broker2.getTransportConnectors().get(0).getConnectUri(); + broker1URL = broker1ConnectURI.toString(); + broker2URL = broker2ConnectURI.toString(); + LOG.info("Broker1 URL: " + broker1URL); + LOG.info("Broker2 URL: " + broker2URL); + + // setup network connector from broker1 to broker2 using actual assigned port + final String networkConnectorURL = "static://(" + broker2URL + ")"; connector = broker1.addNetworkConnector(networkConnectorURL); connector.setBrokerName(broker1.getBrokerName()); connector.setDuplex(true); @@ -132,41 +132,45 @@ protected void tearDown() throws Exception { LOG.info("tearDown() called."); + if (connector != null) { + connector.stop(); + } + if (broker1 != null && broker1.isStarted()) { LOG.info("Broker1 still running, stopping it now."); broker1.stop(); + broker1.waitUntilStopped(); } else { LOG.info("Broker1 not running, nothing to shutdown."); } if (broker2 != null && broker2.isStarted()) { LOG.info("Broker2 still running, stopping it now."); broker2.stop(); + broker2.waitUntilStopped(); } else { LOG.info("Broker2 not running, nothing to shutdown."); } - } public void testMessageExchange() throws Exception { LOG.info("testMessageExchange() called."); - long start = System.currentTimeMillis(); + final long start = System.currentTimeMillis(); // create producer and consumer threads - Thread producer = new Thread(new Producer()); - Thread consumer = new Thread(new Consumer()); + final Thread producer = new Thread(new Producer()); + final Thread consumer = new Thread(new Consumer()); // start threads consumer.start(); Thread.sleep(2000); producer.start(); - // wait for threads to finish producer.join(); consumer.join(); - long end = System.currentTimeMillis(); + final long end = System.currentTimeMillis(); - System.out.println("Duration: "+(end-start)); + System.out.println("Duration: " + (end - start)); } } @@ -191,20 +195,15 @@ public void run() { MessageProducer producer = null; try { - ActiveMQConnectionFactory amq = new ActiveMQConnectionFactory( + final ActiveMQConnectionFactory amq = new ActiveMQConnectionFactory( NetworkedSyncTest.broker1URL); connection = amq.createConnection(); - connection.setExceptionListener(new jakarta.jms.ExceptionListener() { - @Override - public void onException(jakarta.jms.JMSException e) { - e.printStackTrace(); - } - }); + connection.setExceptionListener(e -> e.printStackTrace()); connection.start(); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); - Topic destination = session.createTopic("TEST.FOO"); + final Topic destination = session.createTopic("TEST.FOO"); producer = session.createProducer(destination); producer.setDeliveryMode(DeliveryMode.PERSISTENT); @@ -214,10 +213,10 @@ public void onException(jakarta.jms.JMSException e) { // Create and send message for (int i = 0; i < NetworkedSyncTest.MESSAGE_COUNT; i++) { - String text = "Hello world! From: " + final String text = "Hello world! From: " + Thread.currentThread().getName() + " : " + this.hashCode() + ":" + counter; - TextMessage message = session.createTextMessage(text); + final TextMessage message = session.createTextMessage(text); producer.send(message); counter++; @@ -225,7 +224,7 @@ public void onException(jakarta.jms.JMSException e) { LOG.info("sent " + counter + " messages"); } - } catch (Exception ex) { + } catch (final Exception ex) { LOG.error(ex.toString()); return; } finally { @@ -236,7 +235,7 @@ public void onException(jakarta.jms.JMSException e) { session.close(); if (connection != null) connection.close(); - } catch (Exception e) { + } catch (final Exception e) { LOG.error("Problem closing down JMS objects: " + e); } } @@ -250,8 +249,7 @@ public void onException(jakarta.jms.JMSException e) { */ class Consumer implements Runnable { - private static final Logger LOG = LoggerFactory.getLogger(Consumer.class);; - + private static final Logger LOG = LoggerFactory.getLogger(Consumer.class); /** * connect to broker and receive messages @@ -263,42 +261,35 @@ public void run() { MessageConsumer consumer = null; try { - ActiveMQConnectionFactory amq = new ActiveMQConnectionFactory( + final ActiveMQConnectionFactory amq = new ActiveMQConnectionFactory( NetworkedSyncTest.broker2URL); connection = amq.createConnection(); // need to set clientID when using durable subscription. connection.setClientID("tmielke"); - connection.setExceptionListener(new jakarta.jms.ExceptionListener() { - @Override - public void onException(jakarta.jms.JMSException e) { - e.printStackTrace(); - } - }); + connection.setExceptionListener(e -> e.printStackTrace()); connection.start(); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); - Destination destination = session.createTopic("TEST.FOO"); - consumer = session.createDurableSubscriber((Topic) destination,"tmielke"); + final Destination destination = session.createTopic("TEST.FOO"); + consumer = session.createDurableSubscriber((Topic) destination, "tmielke"); long counter = 0; // Wait for a message for (int i = 0; i < NetworkedSyncTest.MESSAGE_COUNT; i++) { - Message message2 = consumer.receive(); + final Message message2 = consumer.receive(); if (message2 instanceof TextMessage) { - TextMessage textMessage = (TextMessage) message2; + final TextMessage textMessage = (TextMessage) message2; textMessage.getText(); - // logger.info("Received: " + text); } else { - LOG.error("Received message of unsupported type. Expecting TextMessage. "+ message2); + LOG.error("Received message of unsupported type. Expecting TextMessage. " + message2); } counter++; if ((counter % 1000) == 0) LOG.info("received " + counter + " messages"); - } - } catch (Exception e) { + } catch (final Exception e) { LOG.error("Error in Consumer: " + e); return; } finally { @@ -309,7 +300,7 @@ public void onException(jakarta.jms.JMSException e) { session.close(); if (connection != null) connection.close(); - } catch (Exception ex) { + } catch (final Exception ex) { LOG.error("Error closing down JMS objects: " + ex); } } diff --git a/activemq-unit-tests/src/test/resources/org/apache/activemq/broker/spring.xml b/activemq-unit-tests/src/test/resources/org/apache/activemq/broker/spring.xml index 7d37217f476..95a15547945 100644 --- a/activemq-unit-tests/src/test/resources/org/apache/activemq/broker/spring.xml +++ b/activemq-unit-tests/src/test/resources/org/apache/activemq/broker/spring.xml @@ -23,20 +23,21 @@ - + + - tcp://localhost:61616 - tcp://localhost:61636 + tcp://localhost:0 - + - + @@ -47,7 +48,7 @@ - + diff --git a/activemq-unit-tests/src/test/resources/org/apache/activemq/network/localBroker-ephemeral.xml b/activemq-unit-tests/src/test/resources/org/apache/activemq/network/localBroker-ephemeral.xml new file mode 100644 index 00000000000..c58962326ed --- /dev/null +++ b/activemq-unit-tests/src/test/resources/org/apache/activemq/network/localBroker-ephemeral.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + diff --git a/activemq-unit-tests/src/test/resources/org/apache/activemq/network/remoteBroker-ephemeral.xml b/activemq-unit-tests/src/test/resources/org/apache/activemq/network/remoteBroker-ephemeral.xml new file mode 100644 index 00000000000..dd7561e5b82 --- /dev/null +++ b/activemq-unit-tests/src/test/resources/org/apache/activemq/network/remoteBroker-ephemeral.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + diff --git a/activemq-unit-tests/src/test/resources/org/apache/activemq/perf/networkSync.xml b/activemq-unit-tests/src/test/resources/org/apache/activemq/perf/networkSync.xml index 5c7c14c2d4f..0b1f5eafdb9 100644 --- a/activemq-unit-tests/src/test/resources/org/apache/activemq/perf/networkSync.xml +++ b/activemq-unit-tests/src/test/resources/org/apache/activemq/perf/networkSync.xml @@ -27,22 +27,22 @@ - + - + - - + + - + - +