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/08/20 20:52:22 UTC
activemq git commit: https://issues.apache.org/jira/browse/AMQ-2174
Repository: activemq
Updated Branches:
refs/heads/master 45e37e978 -> 3f5cfcf6d
https://issues.apache.org/jira/browse/AMQ-2174
Add a test case.
Project: http://git-wip-us.apache.org/repos/asf/activemq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/3f5cfcf6
Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/3f5cfcf6
Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/3f5cfcf6
Branch: refs/heads/master
Commit: 3f5cfcf6de7910e52871604c8886f2b0da3084b4
Parents: 45e37e9
Author: Timothy Bish <ta...@gmail.com>
Authored: Thu Aug 20 14:52:06 2015 -0400
Committer: Timothy Bish <ta...@gmail.com>
Committed: Thu Aug 20 14:52:06 2015 -0400
----------------------------------------------------------------------
.../org/apache/activemq/bugs/AMQ2174Test.java | 125 +++++++++++++++++++
1 file changed, 125 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq/blob/3f5cfcf6/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/AMQ2174Test.java
----------------------------------------------------------------------
diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/AMQ2174Test.java b/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/AMQ2174Test.java
new file mode 100644
index 0000000..411f8ee
--- /dev/null
+++ b/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/AMQ2174Test.java
@@ -0,0 +1,125 @@
+package org.apache.activemq.bugs;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import javax.jms.Connection;
+import javax.jms.Message;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Session;
+import javax.jms.Topic;
+
+import org.apache.activemq.ActiveMQConnectionFactory;
+import org.apache.activemq.broker.BrokerService;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TestName;
+
+/**
+ * Test cases to investigate subscription problems
+ */
+public class AMQ2174Test {
+
+ @Rule
+ public TestName testName = new TestName();
+
+ private BrokerService broker;
+ private ActiveMQConnectionFactory cf;
+
+ @Before
+ public void setUp() throws Exception {
+ broker = new BrokerService();
+ broker.setDeleteAllMessagesOnStartup(true);
+ broker.addConnector("tcp://localhost:0");
+ broker.setUseJmx(false);
+ broker.start();
+ broker.waitUntilStarted();
+
+ String connectionURI = broker.getTransportConnectors().get(0).getConnectUri().toString();
+ cf = new ActiveMQConnectionFactory(connectionURI);
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ broker.stop();
+ }
+
+ @Test(timeout = 60000)
+ public void testChangeDurableSub() throws Exception {
+
+ Connection connection = cf.createConnection();
+ connection.setClientID(testName.getMethodName());
+ connection.start();
+
+ Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ Topic destination = session.createTopic(testName.getMethodName());
+ MessageConsumer consumer = session.createDurableSubscriber(destination, testName.getMethodName(), "color = 'red'", false);
+ consumer.close();
+
+ sendMessages();
+
+ consumer = session.createDurableSubscriber(destination, testName.getMethodName(), "color = 'red'", false);
+ Message received = consumer.receive(2000);
+ assertNotNull(received);
+ assertEquals("red", received.getStringProperty("color"));
+ assertNull(consumer.receive(10));
+ consumer.close();
+
+ sendMessages();
+
+ consumer = session.createDurableSubscriber(destination, testName.getMethodName(), "color = 'green'", false);
+ received = consumer.receive(500);
+ assertNull(received);
+
+ sendMessages();
+
+ received = consumer.receive(2000);
+ assertNotNull(received);
+ assertEquals("green", received.getStringProperty("color"));
+ assertNull(consumer.receive(10));
+ consumer.close();
+
+ consumer = session.createDurableSubscriber(destination, testName.getMethodName());
+
+ sendMessages();
+
+ received = consumer.receive(2000);
+ assertNotNull(received);
+ assertEquals("red", received.getStringProperty("color"));
+ received = consumer.receive(2000);
+ assertNotNull(received);
+ assertEquals("green", received.getStringProperty("color"));
+ received = consumer.receive(2000);
+ assertNotNull(received);
+ assertEquals("blue", received.getStringProperty("color"));
+ assertNull(consumer.receive(10));
+
+ consumer.close();
+ }
+
+ private void sendMessages() throws Exception {
+ Connection connection = cf.createConnection();
+ Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ Topic destination = session.createTopic(testName.getMethodName());
+ MessageProducer producer = session.createProducer(destination);
+
+ Message message1 = session.createMessage();
+ Message message2 = session.createMessage();
+ Message message3 = session.createMessage();
+
+ message1.setStringProperty("color", "red");
+ message2.setStringProperty("color", "green");
+ message3.setStringProperty("color", "blue");
+
+ producer.send(message1);
+ producer.send(message2);
+ producer.send(message3);
+
+ connection.close();
+ }
+
+}