NO-JIRA fix race in TopicControlClusterTest

Test didn't account for "remote" queue bindings from other cluster
member which caused a race condition.
This commit is contained in:
Justin Bertram 2017-03-13 12:40:51 -05:00
parent c54dfd3055
commit bf5ca678ee
1 changed files with 23 additions and 18 deletions

View File

@ -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);
assertEquals(2, topicControl1.getQueueNames().length);
assertEquals(1, topicControl2.getQueueNames().length);
} finally {
conn1.close();
conn2.close();
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));
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");