You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2015/02/26 20:27:46 UTC
activemq git commit: https://issues.apache.org/jira/browse/AMQ-5621
Repository: activemq
Updated Branches:
refs/heads/master f00d2fbde -> 79568f16c
https://issues.apache.org/jira/browse/AMQ-5621
Cleanup a couple to show what can be done to reduce test time.
Project: http://git-wip-us.apache.org/repos/asf/activemq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/79568f16
Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/79568f16
Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/79568f16
Branch: refs/heads/master
Commit: 79568f16cc4ce476f5325f3373f7f3c4f19239af
Parents: f00d2fb
Author: Timothy Bish <ta...@gmail.com>
Authored: Thu Feb 26 14:27:34 2015 -0500
Committer: Timothy Bish <ta...@gmail.com>
Committed: Thu Feb 26 14:27:34 2015 -0500
----------------------------------------------------------------------
.../org/apache/activemq/JmsClientAckTest.java | 55 +++++---
.../apache/activemq/RemoveDestinationTest.java | 128 +++++++++++++++----
2 files changed, 136 insertions(+), 47 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq/blob/79568f16/activemq-unit-tests/src/test/java/org/apache/activemq/JmsClientAckTest.java
----------------------------------------------------------------------
diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/JmsClientAckTest.java b/activemq-unit-tests/src/test/java/org/apache/activemq/JmsClientAckTest.java
index ef33f9a..d6ce978 100755
--- a/activemq-unit-tests/src/test/java/org/apache/activemq/JmsClientAckTest.java
+++ b/activemq-unit-tests/src/test/java/org/apache/activemq/JmsClientAckTest.java
@@ -16,6 +16,9 @@
*/
package org.apache.activemq;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.Message;
@@ -24,27 +27,39 @@ import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TestName;
+
/**
- *
+ * Test for client ACK support
*/
-public class JmsClientAckTest extends TestSupport {
+public class JmsClientAckTest {
+
+ @Rule
+ public TestName name = new TestName();
private Connection connection;
- protected void setUp() throws Exception {
- super.setUp();
- connection = createConnection();
+ @Before
+ public void setUp() throws Exception {
+ ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(
+ "vm://localhost?broker.persistent=false&broker.useJmx=false");
+
+ connection = factory.createConnection();;
}
/**
* @see junit.framework.TestCase#tearDown()
*/
- protected void tearDown() throws Exception {
+ @After
+ public void tearDown() throws Exception {
if (connection != null) {
connection.close();
connection = null;
}
- super.tearDown();
}
/**
@@ -52,6 +67,7 @@ public class JmsClientAckTest extends TestSupport {
*
* @throws JMSException
*/
+ @Test(timeout = 60000)
public void testAckedMessageAreConsumed() throws JMSException {
connection.start();
Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
@@ -71,7 +87,7 @@ public class JmsClientAckTest extends TestSupport {
// Attempt to Consume the message...
consumer = session.createConsumer(queue);
- msg = consumer.receive(1000);
+ msg = consumer.receive(500);
assertNull(msg);
session.close();
@@ -82,6 +98,7 @@ public class JmsClientAckTest extends TestSupport {
*
* @throws JMSException
*/
+ @Test(timeout = 60000)
public void testLastMessageAcked() throws JMSException {
connection.start();
Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
@@ -96,7 +113,7 @@ public class JmsClientAckTest extends TestSupport {
Message msg = consumer.receive(1000);
assertNotNull(msg);
msg = consumer.receive(1000);
- assertNotNull(msg);
+ assertNotNull(msg);
msg = consumer.receive(1000);
assertNotNull(msg);
msg.acknowledge();
@@ -107,17 +124,18 @@ public class JmsClientAckTest extends TestSupport {
// Attempt to Consume the message...
consumer = session.createConsumer(queue);
- msg = consumer.receive(1000);
+ msg = consumer.receive(500);
assertNull(msg);
session.close();
}
-
+
/**
* Tests if unacknowledged messages are being re-delivered when the consumer connects again.
- *
+ *
* @throws JMSException
*/
+ @Test(timeout = 60000)
public void testUnAckedMessageAreNotConsumedOnSessionClose() throws JMSException {
connection.start();
Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
@@ -128,24 +146,23 @@ public class JmsClientAckTest extends TestSupport {
// Consume the message...
MessageConsumer consumer = session.createConsumer(queue);
Message msg = consumer.receive(1000);
- assertNotNull(msg);
+ assertNotNull(msg);
// Don't ack the message.
-
+
// Reset the session. This should cause the unacknowledged message to be re-delivered.
session.close();
session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
-
+
// Attempt to Consume the message...
consumer = session.createConsumer(queue);
msg = consumer.receive(2000);
- assertNotNull(msg);
+ assertNotNull(msg);
msg.acknowledge();
-
+
session.close();
}
protected String getQueueName() {
- return getClass().getName() + "." + getName();
+ return getClass().getName() + "." + name.getMethodName();
}
-
}
http://git-wip-us.apache.org/repos/asf/activemq/blob/79568f16/activemq-unit-tests/src/test/java/org/apache/activemq/RemoveDestinationTest.java
----------------------------------------------------------------------
diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/RemoveDestinationTest.java b/activemq-unit-tests/src/test/java/org/apache/activemq/RemoveDestinationTest.java
index 009221b..632294c 100644
--- a/activemq-unit-tests/src/test/java/org/apache/activemq/RemoveDestinationTest.java
+++ b/activemq-unit-tests/src/test/java/org/apache/activemq/RemoveDestinationTest.java
@@ -16,15 +16,13 @@
*/
package org.apache.activemq;
-import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
-import java.net.URI;
+import java.util.concurrent.TimeUnit;
import javax.jms.Connection;
-import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
@@ -34,11 +32,11 @@ import javax.jms.Topic;
import javax.management.ObjectName;
import org.apache.activemq.advisory.DestinationSource;
-import org.apache.activemq.broker.BrokerFactory;
import org.apache.activemq.broker.BrokerService;
import org.apache.activemq.broker.jmx.DestinationViewMBean;
import org.apache.activemq.command.ActiveMQDestination;
import org.apache.activemq.command.ActiveMQTopic;
+import org.apache.activemq.util.Wait;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -46,13 +44,16 @@ import org.junit.Test;
public class RemoveDestinationTest {
private static final String VM_BROKER_URL = "vm://localhost?create=false";
- private static final String BROKER_URL = "broker:vm://localhost?broker.persistent=false&broker.useJmx=true";
BrokerService broker;
@Before
public void setUp() throws Exception {
- broker = BrokerFactory.createBroker(new URI(BROKER_URL));
+ broker = new BrokerService();
+ broker.setPersistent(false);
+ broker.setUseJmx(true);
+ broker.getManagementContext().setCreateConnector(false);
+ broker.setSchedulerSupport(false);
broker.start();
broker.waitUntilStarted();
}
@@ -65,7 +66,7 @@ public class RemoveDestinationTest {
}
private Connection createConnection(final boolean start) throws JMSException {
- ConnectionFactory cf = new ActiveMQConnectionFactory(VM_BROKER_URL);
+ ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory(VM_BROKER_URL);
Connection conn = cf.createConnection();
if (start) {
conn.start();
@@ -73,53 +74,94 @@ public class RemoveDestinationTest {
return conn;
}
- @Test
+ @Test(timeout = 60000)
public void testRemoveDestinationWithoutSubscriber() throws Exception {
ActiveMQConnection amqConnection = (ActiveMQConnection) createConnection(true);
- DestinationSource destinationSource = amqConnection.getDestinationSource();
+
+ final DestinationSource destinationSource = amqConnection.getDestinationSource();
Session session = amqConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic("TEST.FOO");
MessageProducer producer = session.createProducer(topic);
+ final int consumerCount = broker.getAdminView().getTopicSubscribers().length;
MessageConsumer consumer = session.createConsumer(topic);
TextMessage msg = session.createTextMessage("Hellow World");
producer.send(msg);
assertNotNull(consumer.receive(5000));
- Thread.sleep(1000);
+ final ActiveMQTopic amqTopic = (ActiveMQTopic) topic;
+
+ assertTrue("Destination never discovered", Wait.waitFor(new Wait.Condition() {
- ActiveMQTopic amqTopic = (ActiveMQTopic) topic;
- assertTrue(destinationSource.getTopics().contains(amqTopic));
+ @Override
+ public boolean isSatisified() throws Exception {
+ return destinationSource.getTopics().contains(amqTopic);
+ }
+ }, TimeUnit.SECONDS.toMillis(30), TimeUnit.MILLISECONDS.toMillis(100)));
consumer.close();
producer.close();
session.close();
- Thread.sleep(3000);
+ assertTrue("Subscriber still active", Wait.waitFor(new Wait.Condition() {
+
+ @Override
+ public boolean isSatisified() throws Exception {
+ return broker.getAdminView().getTopicSubscribers().length == consumerCount;
+ }
+ }, TimeUnit.SECONDS.toMillis(30), TimeUnit.MILLISECONDS.toMillis(100)));
+
amqConnection.destroyDestination((ActiveMQDestination) topic);
- Thread.sleep(3000);
- assertFalse(destinationSource.getTopics().contains(amqTopic));
+
+ assertTrue("Destination still active", Wait.waitFor(new Wait.Condition() {
+
+ @Override
+ public boolean isSatisified() throws Exception {
+ return !destinationSource.getTopics().contains(amqTopic);
+ }
+ }, TimeUnit.SECONDS.toMillis(30), TimeUnit.MILLISECONDS.toMillis(100)));
+
+ assertTrue("Destination never unregistered", Wait.waitFor(new Wait.Condition() {
+
+ @Override
+ public boolean isSatisified() throws Exception {
+ return !destinationPresentInAdminView(broker, amqTopic);
+ }
+ }, TimeUnit.SECONDS.toMillis(30), TimeUnit.MILLISECONDS.toMillis(100)));
}
- @Test
+ @Test(timeout = 60000)
public void testRemoveDestinationWithSubscriber() throws Exception {
ActiveMQConnection amqConnection = (ActiveMQConnection) createConnection(true);
- DestinationSource destinationSource = amqConnection.getDestinationSource();
+ final DestinationSource destinationSource = amqConnection.getDestinationSource();
Session session = amqConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic("TEST.FOO");
MessageProducer producer = session.createProducer(topic);
+ final int consumerCount = broker.getAdminView().getTopicSubscribers().length;
MessageConsumer consumer = session.createConsumer(topic);
TextMessage msg = session.createTextMessage("Hellow World");
producer.send(msg);
assertNotNull(consumer.receive(5000));
- Thread.sleep(1000);
- ActiveMQTopic amqTopic = (ActiveMQTopic) topic;
+ final ActiveMQTopic amqTopic = (ActiveMQTopic) topic;
+
+ assertTrue("Destination never registered", Wait.waitFor(new Wait.Condition() {
+
+ @Override
+ public boolean isSatisified() throws Exception {
+ return destinationPresentInAdminView(broker, amqTopic);
+ }
+ }, TimeUnit.SECONDS.toMillis(30), TimeUnit.MILLISECONDS.toMillis(100)));
- assertTrue(destinationPresentInAdminView(broker, amqTopic));
- assertTrue(destinationSource.getTopics().contains(amqTopic));
+ assertTrue("Destination never discovered", Wait.waitFor(new Wait.Condition() {
+
+ @Override
+ public boolean isSatisified() throws Exception {
+ return destinationSource.getTopics().contains(amqTopic);
+ }
+ }, TimeUnit.SECONDS.toMillis(30), TimeUnit.MILLISECONDS.toMillis(100)));
// This line generates a broker error since the consumer is still active.
try {
@@ -129,23 +171,53 @@ public class RemoveDestinationTest {
assertTrue(expected.getMessage().indexOf(amqTopic.getTopicName()) != -1);
}
- Thread.sleep(3000);
+ assertTrue("Destination never registered", Wait.waitFor(new Wait.Condition() {
+
+ @Override
+ public boolean isSatisified() throws Exception {
+ return destinationPresentInAdminView(broker, amqTopic);
+ }
+ }, TimeUnit.SECONDS.toMillis(30), TimeUnit.MILLISECONDS.toMillis(100)));
- assertTrue(destinationSource.getTopics().contains(amqTopic));
- assertTrue(destinationPresentInAdminView(broker, amqTopic));
+ assertTrue("Destination never discovered", Wait.waitFor(new Wait.Condition() {
+
+ @Override
+ public boolean isSatisified() throws Exception {
+ return destinationSource.getTopics().contains(amqTopic);
+ }
+ }, TimeUnit.SECONDS.toMillis(30), TimeUnit.MILLISECONDS.toMillis(100)));
consumer.close();
producer.close();
session.close();
- Thread.sleep(3000);
+ assertTrue("Subscriber still active", Wait.waitFor(new Wait.Condition() {
+
+ @Override
+ public boolean isSatisified() throws Exception {
+ return broker.getAdminView().getTopicSubscribers().length == consumerCount;
+ }
+ }, TimeUnit.SECONDS.toMillis(30), TimeUnit.MILLISECONDS.toMillis(100)));
// The destination will not be removed with this call, but if you remove
// the call above that generates the error it will.
amqConnection.destroyDestination(amqTopic);
- Thread.sleep(3000);
- assertFalse(destinationSource.getTopics().contains(amqTopic));
- assertFalse(destinationPresentInAdminView(broker, amqTopic));
+
+ assertTrue("Destination still active", Wait.waitFor(new Wait.Condition() {
+
+ @Override
+ public boolean isSatisified() throws Exception {
+ return !destinationSource.getTopics().contains(amqTopic);
+ }
+ }, TimeUnit.SECONDS.toMillis(30), TimeUnit.MILLISECONDS.toMillis(100)));
+
+ assertTrue("Destination never unregistered", Wait.waitFor(new Wait.Condition() {
+
+ @Override
+ public boolean isSatisified() throws Exception {
+ return !destinationPresentInAdminView(broker, amqTopic);
+ }
+ }, TimeUnit.SECONDS.toMillis(30), TimeUnit.MILLISECONDS.toMillis(100)));
}
private boolean destinationPresentInAdminView(BrokerService broker2, ActiveMQTopic amqTopic) throws Exception {