Repository: activemq-artemis Updated Branches: refs/heads/master c54dfd305 -> b58381f20
NO-JIRA fix race in TopicControlClusterTest Test didn't account for "remote" queue bindings from other cluster member which caused a race condition. Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/bf5ca678 Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/bf5ca678 Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/bf5ca678 Branch: refs/heads/master Commit: bf5ca678eef70b885b433e6200a94c54935f7982 Parents: c54dfd3 Author: Justin Bertram <[email protected]> Authored: Mon Mar 13 12:40:51 2017 -0500 Committer: Justin Bertram <[email protected]> Committed: Mon Mar 13 12:46:20 2017 -0500 ---------------------------------------------------------------------- .../management/TopicControlClusterTest.java | 41 +++++++++++--------- 1 file changed, 23 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/bf5ca678/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/server/management/TopicControlClusterTest.java ---------------------------------------------------------------------- diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/server/management/TopicControlClusterTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/server/management/TopicControlClusterTest.java index 8cb1dc3..5b858b8 100644 --- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/server/management/TopicControlClusterTest.java +++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/server/management/TopicControlClusterTest.java @@ -24,24 +24,23 @@ import org.apache.activemq.artemis.api.core.SimpleString; import org.apache.activemq.artemis.api.core.management.AddressControl; import org.apache.activemq.artemis.tests.integration.management.ManagementControlHelper; import org.apache.activemq.artemis.tests.util.JMSClusteredTestBase; +import org.apache.activemq.artemis.tests.util.Wait; import org.junit.Test; public class TopicControlClusterTest extends JMSClusteredTestBase { @Test public void testClusteredSubscriptionCount() throws Exception { - Connection conn1 = cf1.createConnection(); + final String topicName = "t1"; + final SimpleString simpleTopicName = SimpleString.toSimpleString(topicName); - conn1.setClientID("someClient1"); + try (Connection conn1 = cf1.createConnection(); Connection conn2 = cf2.createConnection()) { + conn1.setClientID("someClient1"); + conn2.setClientID("someClient2"); - Connection conn2 = cf2.createConnection(); + Topic topic1 = createTopic(topicName); - conn2.setClientID("someClient2"); - - try { - Topic topic1 = createTopic("t1"); - - Topic topic2 = (Topic) context2.lookup("/topic/t1"); + Topic topic2 = (Topic) context2.lookup("/topic/" + topicName); Session session1 = conn1.createSession(false, Session.AUTO_ACKNOWLEDGE); session1.createDurableSubscriber(topic1, "sub1_1"); @@ -50,16 +49,22 @@ public class TopicControlClusterTest extends JMSClusteredTestBase { Session session2 = conn2.createSession(false, Session.AUTO_ACKNOWLEDGE); session2.createDurableSubscriber(topic2, "sub2"); - SimpleString add1 = new SimpleString(topic1.getTopicName()); - SimpleString add2 = new SimpleString(topic2.getTopicName()); - AddressControl topicControl1 = ManagementControlHelper.createAddressControl(add1, mBeanServer1); - AddressControl topicControl2 = ManagementControlHelper.createAddressControl(add2, mBeanServer2); + AddressControl topicControl1 = ManagementControlHelper.createAddressControl(simpleTopicName, mBeanServer1); + AddressControl topicControl2 = ManagementControlHelper.createAddressControl(simpleTopicName, mBeanServer2); + + assertTrue("There should be 3 subscriptions on the topic, 2 local and 1 remote.", Wait.waitFor(new Wait.Condition() { + @Override + public boolean isSatisfied() throws Exception { + return topicControl1.getQueueNames().length == 3; + } + }, 2000)); - assertEquals(2, topicControl1.getQueueNames().length); - assertEquals(1, topicControl2.getQueueNames().length); - } finally { - conn1.close(); - conn2.close(); + assertTrue("There should be 3 subscriptions on the topic, 1 local and 2 remote.", Wait.waitFor(new Wait.Condition() { + @Override + public boolean isSatisfied() throws Exception { + return topicControl2.getQueueNames().length == 3; + } + }, 2000)); } jmsServer1.destroyTopic("t1");
