You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ch...@apache.org on 2009/06/23 01:44:23 UTC
svn commit: r787446 - in
/activemq/sandbox/activemq-flow/activemq-client/src/test/java/org/apache/activemq:
apollo/perf/ legacy/test6/
Author: chirino
Date: Mon Jun 22 23:44:22 2009
New Revision: 787446
URL: http://svn.apache.org/viewvc?rev=787446&view=rev
Log:
Moving some more passing tests to a perf package.
Added:
activemq/sandbox/activemq-flow/activemq-client/src/test/java/org/apache/activemq/apollo/perf/
activemq/sandbox/activemq-flow/activemq-client/src/test/java/org/apache/activemq/apollo/perf/JmsMultipleClientsTestSupport.java
activemq/sandbox/activemq-flow/activemq-client/src/test/java/org/apache/activemq/apollo/perf/QueueSubscriptionTest.java (with props)
activemq/sandbox/activemq-flow/activemq-client/src/test/java/org/apache/activemq/apollo/perf/TopicSubscriptionTest.java (with props)
Removed:
activemq/sandbox/activemq-flow/activemq-client/src/test/java/org/apache/activemq/legacy/test6/JmsMultipleClientsTestSupport.java
activemq/sandbox/activemq-flow/activemq-client/src/test/java/org/apache/activemq/legacy/test6/QueueSubscriptionTest.java
activemq/sandbox/activemq-flow/activemq-client/src/test/java/org/apache/activemq/legacy/test6/TopicSubscriptionTest.java
Modified:
activemq/sandbox/activemq-flow/activemq-client/src/test/java/org/apache/activemq/legacy/test6/NioQueueSubscriptionTest.java
Added: activemq/sandbox/activemq-flow/activemq-client/src/test/java/org/apache/activemq/apollo/perf/JmsMultipleClientsTestSupport.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/activemq-client/src/test/java/org/apache/activemq/apollo/perf/JmsMultipleClientsTestSupport.java?rev=787446&view=auto
==============================================================================
--- activemq/sandbox/activemq-flow/activemq-client/src/test/java/org/apache/activemq/apollo/perf/JmsMultipleClientsTestSupport.java (added)
+++ activemq/sandbox/activemq-flow/activemq-client/src/test/java/org/apache/activemq/apollo/perf/JmsMultipleClientsTestSupport.java Mon Jun 22 23:44:22 2009
@@ -0,0 +1,288 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apollo.perf;
+
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.DeliveryMode;
+import javax.jms.Destination;
+import javax.jms.JMSException;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+import javax.jms.TopicSubscriber;
+
+import org.apache.activemq.ActiveMQConnectionFactory;
+import org.apache.activemq.apollo.CombinationTestSupport;
+import org.apache.activemq.apollo.broker.Broker;
+import org.apache.activemq.apollo.broker.BrokerFactory;
+import org.apache.activemq.command.ActiveMQDestination;
+import org.apache.activemq.command.ActiveMQQueue;
+import org.apache.activemq.command.ActiveMQTopic;
+import org.apache.activemq.transport.TransportFactory;
+import org.apache.activemq.util.MessageIdList;
+
+/**
+ * Test case support used to test multiple message comsumers and message
+ * producers connecting to a single broker.
+ *
+ * @version $Revision$
+ */
+public class JmsMultipleClientsTestSupport extends CombinationTestSupport {
+
+ protected Map<MessageConsumer, MessageIdList> consumers = new HashMap<MessageConsumer, MessageIdList>(); // Map of consumer with messages
+ // received
+ protected int consumerCount = 1;
+ protected int producerCount = 1;
+
+ protected int messageSize = 1024;
+
+ protected boolean useConcurrentSend = true;
+ protected boolean durable;
+ protected boolean topic;
+ protected boolean persistent;
+
+ protected Destination destination;
+ protected List<Connection> connections = Collections.synchronizedList(new ArrayList<Connection>());
+ protected MessageIdList allMessagesList = new MessageIdList();
+
+ private AtomicInteger producerLock;
+ private Broker broker;
+
+ protected void startProducers(Destination dest, int msgCount) throws Exception {
+ startProducers(createConnectionFactory(), dest, msgCount);
+ }
+
+ protected void startProducers(final ConnectionFactory factory, final Destination dest, final int msgCount) throws Exception {
+ // Use concurrent send
+ if (useConcurrentSend) {
+ producerLock = new AtomicInteger(producerCount);
+
+ for (int i = 0; i < producerCount; i++) {
+ Thread t = new Thread(new Runnable() {
+ public void run() {
+ try {
+ sendMessages(factory.createConnection(), dest, msgCount);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ synchronized (producerLock) {
+ producerLock.decrementAndGet();
+ producerLock.notifyAll();
+ }
+ }
+ });
+
+ t.start();
+ }
+
+ // Wait for all producers to finish sending
+ synchronized (producerLock) {
+ while (producerLock.get() != 0) {
+ producerLock.wait(2000);
+ }
+ }
+
+ // Use serialized send
+ } else {
+ for (int i = 0; i < producerCount; i++) {
+ sendMessages(factory.createConnection(), dest, msgCount);
+ }
+ }
+ }
+
+ protected void sendMessages(Connection connection, Destination destination, int count) throws Exception {
+ connection.start();
+
+ Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ MessageProducer producer = session.createProducer(destination);
+ producer.setDeliveryMode(persistent ? DeliveryMode.PERSISTENT : DeliveryMode.NON_PERSISTENT);
+
+ for (int i = 0; i < count; i++) {
+ TextMessage msg = createTextMessage(session, "" + i);
+ producer.send(msg);
+ }
+
+ producer.close();
+ session.close();
+ connection.close();
+ }
+
+ protected TextMessage createTextMessage(Session session, String initText) throws Exception {
+ TextMessage msg = session.createTextMessage();
+
+ // Pad message text
+ if (initText.length() < messageSize) {
+ char[] data = new char[messageSize - initText.length()];
+ Arrays.fill(data, '*');
+ String str = new String(data);
+ msg.setText(initText + str);
+
+ // Do not pad message text
+ } else {
+ msg.setText(initText);
+ }
+
+ return msg;
+ }
+
+ protected void startConsumers(Destination dest) throws Exception {
+ startConsumers(createConnectionFactory(), dest);
+ }
+
+ protected void startConsumers(ConnectionFactory factory, Destination dest) throws Exception {
+ MessageConsumer consumer;
+ for (int i = 0; i < consumerCount; i++) {
+ if (durable && topic) {
+ consumer = createDurableSubscriber(factory.createConnection(), dest, "consumer" + (i + 1));
+ } else {
+ consumer = createMessageConsumer(factory.createConnection(), dest);
+ }
+ MessageIdList list = new MessageIdList();
+ list.setParent(allMessagesList);
+ consumer.setMessageListener(list);
+ consumers.put(consumer, list);
+ }
+ }
+
+ protected MessageConsumer createMessageConsumer(Connection conn, Destination dest) throws Exception {
+ connections.add(conn);
+
+ Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ final MessageConsumer consumer = sess.createConsumer(dest);
+ conn.start();
+
+ return consumer;
+ }
+
+ protected TopicSubscriber createDurableSubscriber(Connection conn, Destination dest, String name) throws Exception {
+ conn.setClientID(name);
+ connections.add(conn);
+ conn.start();
+
+ Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ final TopicSubscriber consumer = sess.createDurableSubscriber((javax.jms.Topic)dest, name);
+
+ return consumer;
+ }
+
+ protected void waitForAllMessagesToBeReceived(int messageCount) throws Exception {
+ allMessagesList.waitForMessagesToArrive(messageCount);
+ }
+
+ protected ActiveMQDestination createDestination() throws JMSException {
+ String name = "." + getClass().getName() + "." + getName();
+ if (topic) {
+ destination = new ActiveMQTopic("Topic" + name);
+ return (ActiveMQDestination)destination;
+ } else {
+ destination = new ActiveMQQueue("Queue" + name);
+ return (ActiveMQDestination)destination;
+ }
+ }
+
+ protected ConnectionFactory createConnectionFactory() throws Exception {
+ return new ActiveMQConnectionFactory("pipe://localhost");
+ }
+
+ protected Broker createBroker() throws Exception {
+ Broker broker = BrokerFactory.createBroker(new URI("jaxb:classpath:non-persistent-activemq.xml"));
+ broker.addTransportServer(TransportFactory.bind(new URI("pipe://localhost")));
+ return broker;
+ }
+
+ protected void setUp() throws Exception {
+ super.setAutoFail(true);
+ super.setUp();
+ broker = createBroker();
+ broker.start();
+ }
+
+ protected void tearDown() throws Exception {
+ for (Iterator<Connection> iter = connections.iterator(); iter.hasNext();) {
+ Connection conn = iter.next();
+ try {
+ conn.close();
+ } catch (Throwable e) {
+ }
+ }
+ broker.stop();
+ allMessagesList.flushMessages();
+ consumers.clear();
+ super.tearDown();
+ }
+
+ /*
+ * Some helpful assertions for multiple consumers.
+ */
+ protected void assertConsumerReceivedAtLeastXMessages(MessageConsumer consumer, int msgCount) {
+ MessageIdList messageIdList = consumers.get(consumer);
+ messageIdList.assertAtLeastMessagesReceived(msgCount);
+ }
+
+ protected void assertConsumerReceivedAtMostXMessages(MessageConsumer consumer, int msgCount) {
+ MessageIdList messageIdList = consumers.get(consumer);
+ messageIdList.assertAtMostMessagesReceived(msgCount);
+ }
+
+ protected void assertConsumerReceivedXMessages(MessageConsumer consumer, int msgCount) {
+ MessageIdList messageIdList = consumers.get(consumer);
+ messageIdList.assertMessagesReceivedNoWait(msgCount);
+ }
+
+ protected void assertEachConsumerReceivedAtLeastXMessages(int msgCount) {
+ for (Iterator<MessageConsumer> i = consumers.keySet().iterator(); i.hasNext();) {
+ assertConsumerReceivedAtLeastXMessages(i.next(), msgCount);
+ }
+ }
+
+ protected void assertEachConsumerReceivedAtMostXMessages(int msgCount) {
+ for (Iterator<MessageConsumer> i = consumers.keySet().iterator(); i.hasNext();) {
+ assertConsumerReceivedAtMostXMessages(i.next(), msgCount);
+ }
+ }
+
+ protected void assertEachConsumerReceivedXMessages(int msgCount) {
+ for (Iterator<MessageConsumer> i = consumers.keySet().iterator(); i.hasNext();) {
+ assertConsumerReceivedXMessages(i.next(), msgCount);
+ }
+ }
+
+ protected void assertTotalMessagesReceived(int msgCount) {
+ allMessagesList.assertMessagesReceivedNoWait(msgCount);
+
+ // now lets count the individual messages received
+ int totalMsg = 0;
+ for (Iterator<MessageConsumer> i = consumers.keySet().iterator(); i.hasNext();) {
+ MessageIdList messageIdList = consumers.get(i.next());
+ totalMsg += messageIdList.getMessageCount();
+ }
+ assertEquals("Total of consumers message count", msgCount, totalMsg);
+ }
+}
Added: activemq/sandbox/activemq-flow/activemq-client/src/test/java/org/apache/activemq/apollo/perf/QueueSubscriptionTest.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/activemq-client/src/test/java/org/apache/activemq/apollo/perf/QueueSubscriptionTest.java?rev=787446&view=auto
==============================================================================
--- activemq/sandbox/activemq-flow/activemq-client/src/test/java/org/apache/activemq/apollo/perf/QueueSubscriptionTest.java (added)
+++ activemq/sandbox/activemq-flow/activemq-client/src/test/java/org/apache/activemq/apollo/perf/QueueSubscriptionTest.java Mon Jun 22 23:44:22 2009
@@ -0,0 +1,156 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apollo.perf;
+
+import org.apache.activemq.ActiveMQConnectionFactory;
+import org.apache.activemq.command.ActiveMQDestination;
+
+public class QueueSubscriptionTest extends JmsMultipleClientsTestSupport {
+ protected int messageCount = 1000; // 1000 Messages per producer
+ protected int prefetchCount = 10;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ durable = false;
+ topic = false;
+ }
+
+ public void testManyProducersOneConsumer() throws Exception {
+ consumerCount = 1;
+ producerCount = 10;
+ messageCount = 100;
+ messageSize = 1; // 1 byte
+ prefetchCount = 10;
+
+ doMultipleClientsTest();
+
+ assertTotalMessagesReceived(messageCount * producerCount);
+ }
+
+ public void testOneProducerTwoConsumersSmallMessagesOnePrefetch() throws Exception {
+ consumerCount = 2;
+ producerCount = 1;
+ messageCount = 1000;
+ messageSize = 1024; // 1 Kb
+ configurePrefetchOfOne();
+
+ doMultipleClientsTest();
+
+ assertTotalMessagesReceived(messageCount * producerCount);
+ }
+
+ public void testOneProducerTwoConsumersSmallMessagesLargePrefetch() throws Exception {
+ consumerCount = 2;
+ producerCount = 1;
+ messageCount = 1000;
+ prefetchCount = messageCount * 2;
+ messageSize = 1024; // 1 Kb
+
+ doMultipleClientsTest();
+
+ assertTotalMessagesReceived(messageCount * producerCount);
+ }
+
+ public void testOneProducerTwoConsumersLargeMessagesOnePrefetch() throws Exception {
+ consumerCount = 2;
+ producerCount = 1;
+ messageCount = 10;
+ messageSize = 1024 * 1024 * 1; // 2 MB
+ configurePrefetchOfOne();
+
+ doMultipleClientsTest();
+
+ assertTotalMessagesReceived(messageCount * producerCount);
+ }
+
+ public void testOneProducerTwoConsumersLargeMessagesLargePrefetch() throws Exception {
+ consumerCount = 2;
+ producerCount = 1;
+ messageCount = 10;
+ prefetchCount = messageCount * 2;
+ messageSize = 1024 * 1024 * 1; // 2 MB
+
+ doMultipleClientsTest();
+
+ assertTotalMessagesReceived(messageCount * producerCount);
+ }
+
+ public void testOneProducerManyConsumersFewMessages() throws Exception {
+ consumerCount = 50;
+ producerCount = 1;
+ messageCount = 10;
+ messageSize = 1; // 1 byte
+ prefetchCount = 10;
+
+ doMultipleClientsTest();
+
+ assertTotalMessagesReceived(messageCount * producerCount);
+ }
+
+ public void testOneProducerManyConsumersManyMessages() throws Exception {
+ consumerCount = 50;
+ producerCount = 1;
+ messageCount = 1000;
+ messageSize = 1; // 1 byte
+ prefetchCount = messageCount / consumerCount;
+ allMessagesList.setMaximumDuration(allMessagesList.getMaximumDuration() * 20);
+ doMultipleClientsTest();
+
+ assertTotalMessagesReceived(messageCount * producerCount);
+ }
+
+ public void testManyProducersManyConsumers() throws Exception {
+ consumerCount = 200;
+ producerCount = 50;
+ messageCount = 100;
+ messageSize = 1; // 1 byte
+ prefetchCount = 100;
+ allMessagesList.setMaximumDuration(allMessagesList.getMaximumDuration() * 20);
+ doMultipleClientsTest();
+
+ assertTotalMessagesReceived(messageCount * producerCount);
+ }
+
+ protected void configurePrefetchOfOne() {
+ prefetchCount = 1;
+
+ // this is gonna be a bit slow what with the low prefetch so bump up the
+ // wait time
+ allMessagesList.setMaximumDuration(allMessagesList.getMaximumDuration() * 20);
+ }
+
+ public void doMultipleClientsTest() throws Exception {
+ // Create destination
+ final ActiveMQDestination dest = createDestination();
+
+ // Create consumers
+ ActiveMQConnectionFactory consumerFactory = (ActiveMQConnectionFactory)createConnectionFactory();
+ consumerFactory.getPrefetchPolicy().setAll(prefetchCount);
+
+ startConsumers(consumerFactory, dest);
+
+ startProducers(dest, messageCount);
+
+ // Wait for messages to be received. Make it proportional to the
+ // messages delivered.
+ int totalMessageCount = messageCount * producerCount;
+ if (dest.isTopic()) {
+ totalMessageCount *= consumerCount;
+ }
+ waitForAllMessagesToBeReceived(totalMessageCount);
+ }
+}
Propchange: activemq/sandbox/activemq-flow/activemq-client/src/test/java/org/apache/activemq/apollo/perf/QueueSubscriptionTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: activemq/sandbox/activemq-flow/activemq-client/src/test/java/org/apache/activemq/apollo/perf/TopicSubscriptionTest.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/activemq-client/src/test/java/org/apache/activemq/apollo/perf/TopicSubscriptionTest.java?rev=787446&view=auto
==============================================================================
--- activemq/sandbox/activemq-flow/activemq-client/src/test/java/org/apache/activemq/apollo/perf/TopicSubscriptionTest.java (added)
+++ activemq/sandbox/activemq-flow/activemq-client/src/test/java/org/apache/activemq/apollo/perf/TopicSubscriptionTest.java Mon Jun 22 23:44:22 2009
@@ -0,0 +1,124 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apollo.perf;
+
+
+public class TopicSubscriptionTest extends QueueSubscriptionTest {
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ durable = true;
+ topic = true;
+ }
+
+ public void testManyProducersManyConsumers() throws Exception {
+ consumerCount = 40;
+ producerCount = 20;
+ messageCount = 100;
+ messageSize = 1;
+ prefetchCount = 10;
+
+ doMultipleClientsTest();
+
+ assertTotalMessagesReceived(messageCount * producerCount * consumerCount);
+ }
+
+ public void testOneProducerTwoConsumersLargeMessagesOnePrefetch() throws Exception {
+ consumerCount = 2;
+ producerCount = 1;
+ messageCount = 10;
+ messageSize = 1024 * 1024 * 1; // 1 MB
+ prefetchCount = 1;
+
+ doMultipleClientsTest();
+
+ assertTotalMessagesReceived(messageCount * consumerCount * producerCount);
+ }
+
+ public void testOneProducerTwoConsumersSmallMessagesOnePrefetch() throws Exception {
+ consumerCount = 2;
+ producerCount = 1;
+ prefetchCount = 1;
+ messageSize = 1024;
+ messageCount = 1000;
+
+ doMultipleClientsTest();
+
+ assertTotalMessagesReceived(messageCount * consumerCount * producerCount);
+ }
+
+ public void testOneProducerTwoConsumersSmallMessagesLargePrefetch() throws Exception {
+ consumerCount = 2;
+ producerCount = 1;
+ messageCount = 1000;
+ messageSize = 1024;
+ prefetchCount = messageCount * 2;
+
+ doMultipleClientsTest();
+
+ assertTotalMessagesReceived(messageCount * consumerCount * producerCount);
+ }
+
+ public void testOneProducerTwoConsumersLargeMessagesLargePrefetch() throws Exception {
+ consumerCount = 2;
+ producerCount = 1;
+ messageCount = 10;
+ messageSize = 1024 * 1024 * 1; // 1 MB
+ prefetchCount = messageCount * 2;
+
+ doMultipleClientsTest();
+
+ assertTotalMessagesReceived(messageCount * consumerCount * producerCount);
+ }
+
+ public void testOneProducerManyConsumersFewMessages() throws Exception {
+ consumerCount = 50;
+ producerCount = 1;
+ messageCount = 10;
+ messageSize = 1; // 1 byte
+ prefetchCount = 10;
+
+ doMultipleClientsTest();
+
+ assertTotalMessagesReceived(messageCount * consumerCount * producerCount);
+ }
+
+ public void testOneProducerManyConsumersManyMessages() throws Exception {
+ consumerCount = 50;
+ producerCount = 1;
+ messageCount = 100;
+ messageSize = 1; // 1 byte
+ prefetchCount = 10;
+
+ doMultipleClientsTest();
+
+ assertTotalMessagesReceived(messageCount * consumerCount * producerCount);
+ }
+
+
+ public void testManyProducersOneConsumer() throws Exception {
+ consumerCount = 1;
+ producerCount = 20;
+ messageCount = 100;
+ messageSize = 1; // 1 byte
+ prefetchCount = 10;
+
+ doMultipleClientsTest();
+
+ assertTotalMessagesReceived(messageCount * producerCount * consumerCount);
+ }
+}
Propchange: activemq/sandbox/activemq-flow/activemq-client/src/test/java/org/apache/activemq/apollo/perf/TopicSubscriptionTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: activemq/sandbox/activemq-flow/activemq-client/src/test/java/org/apache/activemq/legacy/test6/NioQueueSubscriptionTest.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/activemq-client/src/test/java/org/apache/activemq/legacy/test6/NioQueueSubscriptionTest.java?rev=787446&r1=787445&r2=787446&view=diff
==============================================================================
--- activemq/sandbox/activemq-flow/activemq-client/src/test/java/org/apache/activemq/legacy/test6/NioQueueSubscriptionTest.java (original)
+++ activemq/sandbox/activemq-flow/activemq-client/src/test/java/org/apache/activemq/legacy/test6/NioQueueSubscriptionTest.java Mon Jun 22 23:44:22 2009
@@ -32,6 +32,7 @@
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.apollo.broker.Broker;
import org.apache.activemq.apollo.broker.BrokerFactory;
+import org.apache.activemq.apollo.perf.QueueSubscriptionTest;
import org.apache.activemq.transport.TransportFactory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;