/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.activemq.artemis.tests.integration.jms.server.management; import javax.jms.Connection; import javax.jms.Session; import javax.jms.Topic; 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 { final String topicName = "t1"; final SimpleString simpleTopicName = SimpleString.toSimpleString(topicName); try (Connection conn1 = cf1.createConnection(); Connection conn2 = cf2.createConnection()) { conn1.setClientID("someClient1"); conn2.setClientID("someClient2"); Topic topic1 = createTopic(topicName); Topic topic2 = (Topic) context2.lookup("/topic/" + topicName); Session session1 = conn1.createSession(false, Session.AUTO_ACKNOWLEDGE); session1.createDurableSubscriber(topic1, "sub1_1"); session1.createDurableSubscriber(topic1, "sub1_2"); Session session2 = conn2.createSession(false, Session.AUTO_ACKNOWLEDGE); session2.createDurableSubscriber(topic2, "sub2"); 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(() -> topicControl1.getQueueNames().length == 3, 2000)); assertTrue("There should be 3 subscriptions on the topic, 1 local and 2 remote.", Wait.waitFor(() -> topicControl2.getQueueNames().length == 3, 2000)); } jmsServer1.destroyTopic("t1"); jmsServer2.destroyTopic("t1"); } }