From 1045fc0c7d2211b3ebdbcc7e28bc170b54d60474 Mon Sep 17 00:00:00 2001 From: Robert Davies Date: Tue, 21 Feb 2006 20:08:40 +0000 Subject: [PATCH] basic network tests git-svn-id: https://svn.apache.org/repos/asf/incubator/activemq/trunk@379569 13f79535-47bb-0310-9956-ffa450edef68 --- .../activemq/network/SimpleNetworkTest.java | 141 ++++++++++++++++++ .../apache/activemq/network/localBroker.xml | 38 +++++ .../apache/activemq/network/remoteBroker.xml | 26 ++++ 3 files changed, 205 insertions(+) create mode 100755 activemq-core/src/test/java/org/apache/activemq/network/SimpleNetworkTest.java create mode 100644 activemq-core/src/test/resources/org/apache/activemq/network/localBroker.xml create mode 100644 activemq-core/src/test/resources/org/apache/activemq/network/remoteBroker.xml diff --git a/activemq-core/src/test/java/org/apache/activemq/network/SimpleNetworkTest.java b/activemq-core/src/test/java/org/apache/activemq/network/SimpleNetworkTest.java new file mode 100755 index 0000000000..deff3066a6 --- /dev/null +++ b/activemq-core/src/test/java/org/apache/activemq/network/SimpleNetworkTest.java @@ -0,0 +1,141 @@ +/** + * + * Copyright 2005-2006 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.activemq.network; + +import java.net.URI; +import java.util.ArrayList; +import java.util.Iterator; +import javax.jms.*; +import junit.framework.TestCase; + +import org.apache.activemq.*; +import org.apache.activemq.broker.BrokerRegistry; +import org.apache.activemq.broker.BrokerService; +import org.apache.activemq.broker.BrokerTestSupport; +import org.apache.activemq.broker.StubConnection; +import org.apache.activemq.broker.TransportConnector; +import org.apache.activemq.broker.region.QueueRegion; +import org.apache.activemq.command.ActiveMQTopic; +import org.apache.activemq.memory.UsageManager; +import org.apache.activemq.store.PersistenceAdapter; +import org.apache.activemq.store.memory.MemoryPersistenceAdapter; +import org.apache.activemq.transport.Transport; +import org.apache.activemq.transport.TransportFactory; +import org.apache.activemq.xbean.BrokerFactoryBean; +import org.springframework.context.support.AbstractApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; + +public class SimpleNetworkTest extends TestCase { + + protected static final int MESSAGE_COUNT = 10; + protected AbstractApplicationContext context; + protected Connection localConnection; + protected Connection remoteConnection; + protected BrokerService localBroker; + protected BrokerService remoteBroker; + + + + protected void setUp() throws Exception { + + super.setUp(); + Resource resource = new ClassPathResource("org/apache/activemq/network/localBroker.xml"); + BrokerFactoryBean factory = new BrokerFactoryBean(resource); + factory.afterPropertiesSet(); + localBroker = factory.getBroker(); + + resource = new ClassPathResource("org/apache/activemq/network/remoteBroker.xml"); + factory = new BrokerFactoryBean(resource); + factory.afterPropertiesSet(); + remoteBroker = factory.getBroker(); + + localBroker.start(); + remoteBroker.start(); + + URI localURI = localBroker.getVmConnectorURI(); + ActiveMQConnectionFactory fac = new ActiveMQConnectionFactory(localURI); + localConnection = fac.createConnection(); + localConnection.start(); + + URI remoteURI = remoteBroker.getVmConnectorURI(); + fac = new ActiveMQConnectionFactory(remoteURI); + remoteConnection = fac.createConnection(); + remoteConnection.start(); + + } + + + protected void tearDown() throws Exception { + localConnection.close(); + remoteConnection.close(); + localBroker.stop(); + remoteBroker.stop(); + super.tearDown(); + } + + + public void testFiltering() throws Exception{ + ActiveMQTopic included = new ActiveMQTopic("include.test.bar"); + ActiveMQTopic excluded = new ActiveMQTopic("exclude.test.bar"); + Session localSession = localConnection.createSession(false,Session.AUTO_ACKNOWLEDGE); + Session remoteSession = remoteConnection.createSession(false,Session.AUTO_ACKNOWLEDGE); + MessageConsumer includedConsumer = remoteSession.createConsumer(included); + MessageConsumer excludedConsumer = remoteSession.createConsumer(excluded); + MessageProducer includedProducer = localSession.createProducer(included); + MessageProducer excludedProducer = localSession.createProducer(excluded); + Thread.sleep(1000); + + Message test = localSession.createTextMessage("test"); + includedProducer.send(test); + excludedProducer.send(test); + + assertNull(excludedConsumer.receive(500)); + assertNotNull(includedConsumer.receive(500)); + } + + public void testConduitBridge() throws Exception{ + ActiveMQTopic included = new ActiveMQTopic("include.test.bar"); + + Session localSession = localConnection.createSession(false,Session.AUTO_ACKNOWLEDGE); + Session remoteSession = remoteConnection.createSession(false,Session.AUTO_ACKNOWLEDGE); + MessageConsumer consumer1 = remoteSession.createConsumer(included); + MessageConsumer consumer2 = remoteSession.createConsumer(included); + MessageProducer producer = localSession.createProducer(included); + producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); + + Thread.sleep(1000); + + + int count = 10; + for (int i = 0; i < count; i++){ + Message test = localSession.createTextMessage("test-" + i); + producer.send(test); + assertNotNull(consumer1.receive(500)); + assertNotNull(consumer2.receive(500)); + } + + + //ensure no more messages received + assertNull(consumer1.receive(500)); + assertNull(consumer2.receive(500)); + } + + + +} diff --git a/activemq-core/src/test/resources/org/apache/activemq/network/localBroker.xml b/activemq-core/src/test/resources/org/apache/activemq/network/localBroker.xml new file mode 100644 index 0000000000..9e0e0f4cf2 --- /dev/null +++ b/activemq-core/src/test/resources/org/apache/activemq/network/localBroker.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/activemq-core/src/test/resources/org/apache/activemq/network/remoteBroker.xml b/activemq-core/src/test/resources/org/apache/activemq/network/remoteBroker.xml new file mode 100644 index 0000000000..08ab241632 --- /dev/null +++ b/activemq-core/src/test/resources/org/apache/activemq/network/remoteBroker.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + +