You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ma...@apache.org on 2018/01/11 10:59:53 UTC
[2/2] activemq-artemis git commit: ARTEMIS-1576 couple more tests for
good measure
ARTEMIS-1576 couple more tests for good measure
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/2afe0812
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/2afe0812
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/2afe0812
Branch: refs/heads/master
Commit: 2afe08126b4aaf97920954e18ec971cd13e3abb4
Parents: 18d2d13
Author: Justin Bertram <jb...@apache.org>
Authored: Fri Jan 5 15:15:33 2018 -0600
Committer: Martyn Taylor <mt...@redhat.com>
Committed: Thu Jan 11 10:59:11 2018 +0000
----------------------------------------------------------------------
.../integration/amqp/JMSTopicConsumerTest.java | 86 ++++++++++++++++++++
1 file changed, 86 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/2afe0812/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/JMSTopicConsumerTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/JMSTopicConsumerTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/JMSTopicConsumerTest.java
index 52bd247..5f7490f 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/JMSTopicConsumerTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/JMSTopicConsumerTest.java
@@ -16,12 +16,17 @@
*/
package org.apache.activemq.artemis.tests.integration.amqp;
+import java.util.UUID;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
import javax.jms.ExceptionListener;
+import javax.jms.JMSConsumer;
+import javax.jms.JMSContext;
import javax.jms.JMSException;
+import javax.jms.JMSProducer;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
@@ -30,9 +35,11 @@ import javax.jms.TopicPublisher;
import javax.jms.TopicSession;
import javax.jms.TopicSubscriber;
+import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.core.postoffice.Bindings;
import org.apache.activemq.artemis.core.remoting.CloseListener;
+import org.apache.qpid.jms.JmsConnectionFactory;
import org.junit.Assert;
import org.junit.Test;
@@ -65,6 +72,85 @@ public class JMSTopicConsumerTest extends JMSClientTestSupport {
}
@Test(timeout = 60000)
+ public void testSendAndReceiveOnAutoCreatedTopic() throws Exception {
+ Connection connection = createConnection("myClientId");
+ String topicName = UUID.randomUUID().toString();
+ SimpleString simpleTopicName = SimpleString.toSimpleString(topicName);
+
+ try {
+ TopicSession session = (TopicSession) connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ Topic topic = session.createTopic(topicName);
+ TopicPublisher producer = session.createPublisher(topic);
+
+ TextMessage message = session.createTextMessage("test-message");
+ // this will auto-create the address, but not the subscription queue
+ producer.send(message);
+
+ assertNotNull(server.getAddressInfo(simpleTopicName));
+ assertEquals(RoutingType.MULTICAST, server.getAddressInfo(simpleTopicName).getRoutingType());
+ assertTrue(server.getAddressInfo(simpleTopicName).isAutoCreated());
+ assertTrue(server.getPostOffice().getBindingsForAddress(simpleTopicName).getBindings().isEmpty());
+
+ // this will auto-create the subscription queue
+ TopicSubscriber consumer = session.createSubscriber(topic);
+ assertFalse(server.getPostOffice().getBindingsForAddress(simpleTopicName).getBindings().isEmpty());
+ producer.send(message);
+
+ producer.close();
+ connection.start();
+
+ message = (TextMessage) consumer.receive(1000);
+
+ assertNotNull(message);
+ assertNotNull(message.getText());
+ assertEquals("test-message", message.getText());
+ consumer.close();
+ assertTrue(server.getPostOffice().getBindingsForAddress(simpleTopicName).getBindings().isEmpty());
+ } finally {
+ connection.close();
+ }
+ }
+
+ @Test(timeout = 60000)
+ public void testSendAndReceiveOnAutoCreatedTopicJMS2() throws Exception {
+ ConnectionFactory cf = new JmsConnectionFactory(getBrokerQpidJMSConnectionURI());
+ JMSContext context = cf.createContext();
+ String topicName = UUID.randomUUID().toString();
+ SimpleString simpleTopicName = SimpleString.toSimpleString(topicName);
+
+ try {
+ Topic topic = context.createTopic(topicName);
+ JMSProducer producer = context.createProducer();
+
+ TextMessage message = context.createTextMessage("test-message");
+ // this will auto-create the address, but not the subscription queue
+ producer.send(topic, message);
+
+ assertNotNull(server.getAddressInfo(simpleTopicName));
+ assertEquals(RoutingType.MULTICAST, server.getAddressInfo(simpleTopicName).getRoutingType());
+ assertTrue(server.getAddressInfo(simpleTopicName).isAutoCreated());
+ assertTrue(server.getPostOffice().getBindingsForAddress(simpleTopicName).getBindings().isEmpty());
+
+ // this will auto-create the subscription queue
+ JMSConsumer consumer = context.createConsumer(topic);
+ assertFalse(server.getPostOffice().getBindingsForAddress(simpleTopicName).getBindings().isEmpty());
+ producer.send(topic, message);
+
+ context.start();
+
+ message = (TextMessage) consumer.receive(1000);
+
+ assertNotNull(message);
+ assertNotNull(message.getText());
+ assertEquals("test-message", message.getText());
+ consumer.close();
+ assertTrue(server.getPostOffice().getBindingsForAddress(simpleTopicName).getBindings().isEmpty());
+ } finally {
+ context.close();
+ }
+ }
+
+ @Test(timeout = 60000)
public void testSendWithMultipleReceiversOnTopic() throws Exception {
Connection connection = createConnection();