@Test public void testCloseCOREclient() throws Exception { SimpleString address = RandomUtil.randomSimpleString(); SimpleString name = RandomUtil.randomSimpleString(); boolean durable = true; ActiveMQServerControl serverControl = createManagementControl(); checkNoResource(ObjectNameBuilder.DEFAULT.getQueueObjectName(address, name, RoutingType.ANYCAST)); serverControl.createAddress(address.toString(), "ANYCAST"); serverControl.createQueue(address.toString(), "ANYCAST", name.toString(), null, durable, -1, false, false); ServerLocator receiveLocator = createInVMNonHALocator(); ClientSessionFactory receiveCsf = createSessionFactory(receiveLocator); ClientSession receiveClientSession = receiveCsf.createSession(true, false, false); final ClientConsumer COREclient = receiveClientSession.createConsumer(name); ServerSession ss = server.getSessions().iterator().next(); ServerConsumer sc = ss.getServerConsumers().iterator().next(); Assert.assertFalse(COREclient.isClosed()); serverControl.closeConsumerWithID(((ClientSessionImpl)receiveClientSession).getName(), Long.toString(sc.sequentialID())); Wait.waitFor(() -> COREclient.isClosed()); Assert.assertTrue(COREclient.isClosed()); }
@Test public void testGetAddressDeletedFromJournal() throws Exception { SimpleString address = RandomUtil.randomSimpleString(); SimpleString name = RandomUtil.randomSimpleString(); ActiveMQServerControl serverControl = createManagementControl(); // due to replication, there can be another queue created for replicating // management operations Assert.assertFalse(ActiveMQServerControlTest.contains(address.toString(), serverControl.getAddressNames())); serverControl.createAddress(address.toString(), "ANYCAST"); Assert.assertTrue(ActiveMQServerControlTest.contains(address.toString(), serverControl.getAddressNames())); restartServer(); serverControl.deleteAddress(address.toString()); restartServer(); Assert.assertFalse(ActiveMQServerControlTest.contains(address.toString(), serverControl.getAddressNames())); }
@Test public void testGetQueueNames() throws Exception { SimpleString address = RandomUtil.randomSimpleString(); SimpleString name = RandomUtil.randomSimpleString(); ActiveMQServerControl serverControl = createManagementControl(); // due to replication, there can be another queue created for replicating // management operations Assert.assertFalse(ActiveMQServerControlTest.contains(name.toString(), serverControl.getQueueNames())); serverControl.createAddress(address.toString(), "ANYCAST"); serverControl.createQueue(address.toString(), "ANYCAST", name.toString(), null, true, -1, false, false); Assert.assertTrue(ActiveMQServerControlTest.contains(name.toString(), serverControl.getQueueNames())); serverControl.destroyQueue(name.toString()); Assert.assertFalse(ActiveMQServerControlTest.contains(name.toString(), serverControl.getQueueNames())); }
@Test(timeout = 60000) public void testMulticastMessageRoutingExclusivityUsingPrefix() throws Exception { final String addressA = "addressA"; final String queueA = "queueA"; final String queueB = "queueB"; final String queueC = "queueC"; ActiveMQServerControl serverControl = server.getActiveMQServerControl(); serverControl.createAddress(addressA, RoutingType.ANYCAST.toString() + "," + RoutingType.MULTICAST.toString()); serverControl.createQueue(addressA, queueA, RoutingType.ANYCAST.toString()); serverControl.createQueue(addressA, queueB, RoutingType.MULTICAST.toString()); serverControl.createQueue(addressA, queueC, RoutingType.MULTICAST.toString()); sendMessages("multicast://" + addressA, 1); assertEquals(0, server.locateQueue(SimpleString.toSimpleString(queueA)).getMessageCount()); assertEquals(2, server.locateQueue(SimpleString.toSimpleString(queueC)).getMessageCount() + server.locateQueue(SimpleString.toSimpleString(queueB)).getMessageCount()); }
@Test(timeout = 60000) public void testAnycastMessageRoutingExclusivityUsingPrefix() throws Exception { final String addressA = "addressA"; final String queueA = "queueA"; final String queueB = "queueB"; final String queueC = "queueC"; ActiveMQServerControl serverControl = server.getActiveMQServerControl(); serverControl.createAddress(addressA, RoutingType.ANYCAST.toString() + "," + RoutingType.MULTICAST.toString()); serverControl.createQueue(addressA, queueA, RoutingType.ANYCAST.toString()); serverControl.createQueue(addressA, queueB, RoutingType.ANYCAST.toString()); serverControl.createQueue(addressA, queueC, RoutingType.MULTICAST.toString()); sendMessages("anycast://" + addressA, 1); assertEquals(1, server.locateQueue(SimpleString.toSimpleString(queueA)).getMessageCount() + server.locateQueue(SimpleString.toSimpleString(queueB)).getMessageCount()); assertEquals(0, server.locateQueue(SimpleString.toSimpleString(queueC)).getMessageCount()); }
@Test(timeout = 60000) public void testAnycastMessageRoutingExclusivityUsingProperty() throws Exception { final String addressA = "addressA"; final String queueA = "queueA"; final String queueB = "queueB"; final String queueC = "queueC"; ActiveMQServerControl serverControl = server.getActiveMQServerControl(); serverControl.createAddress(addressA, RoutingType.ANYCAST.toString() + "," + RoutingType.MULTICAST.toString()); serverControl.createQueue(addressA, queueA, RoutingType.ANYCAST.toString()); serverControl.createQueue(addressA, queueB, RoutingType.ANYCAST.toString()); serverControl.createQueue(addressA, queueC, RoutingType.MULTICAST.toString()); sendMessages(addressA, 1, RoutingType.ANYCAST); assertEquals(1, server.locateQueue(SimpleString.toSimpleString(queueA)).getMessageCount() + server.locateQueue(SimpleString.toSimpleString(queueB)).getMessageCount()); assertEquals(0, server.locateQueue(SimpleString.toSimpleString(queueC)).getMessageCount()); }
@Test(timeout = 60000) public void testMulticastMessageRoutingExclusivityUsingProperty() throws Exception { final String addressA = "addressA"; final String queueA = "queueA"; final String queueB = "queueB"; final String queueC = "queueC"; ActiveMQServerControl serverControl = server.getActiveMQServerControl(); serverControl.createAddress(addressA, RoutingType.ANYCAST.toString() + "," + RoutingType.MULTICAST.toString()); serverControl.createQueue(addressA, queueA, RoutingType.ANYCAST.toString()); serverControl.createQueue(addressA, queueB, RoutingType.MULTICAST.toString()); serverControl.createQueue(addressA, queueC, RoutingType.MULTICAST.toString()); sendMessages(addressA, 1, RoutingType.MULTICAST); assertEquals(0, server.locateQueue(SimpleString.toSimpleString(queueA)).getMessageCount()); assertEquals(2, server.locateQueue(SimpleString.toSimpleString(queueC)).getMessageCount() + server.locateQueue(SimpleString.toSimpleString(queueB)).getMessageCount()); }
@Test public void testAnycastMessageRoutingExclusivity() throws Exception { conn.connect(defUser, defPass); final String addressA = "addressA"; final String queueA = "queueA"; final String queueB = "queueB"; final String queueC = "queueC"; ActiveMQServerControl serverControl = server.getActiveMQServerControl(); serverControl.createAddress(addressA, RoutingType.ANYCAST.toString() + "," + RoutingType.MULTICAST.toString()); serverControl.createQueue(addressA, queueA, RoutingType.ANYCAST.toString()); serverControl.createQueue(addressA, queueB, RoutingType.ANYCAST.toString()); serverControl.createQueue(addressA, queueC, RoutingType.MULTICAST.toString()); send(conn, addressA, null, "Hello World!", true, RoutingType.ANYCAST); assertTrue(Wait.waitFor(() -> server.locateQueue(SimpleString.toSimpleString(queueA)).getMessageCount() + server.locateQueue(SimpleString.toSimpleString(queueB)).getMessageCount() == 1, 2000, 100)); assertTrue(Wait.waitFor(() -> server.locateQueue(SimpleString.toSimpleString(queueC)).getMessageCount() == 0, 2000, 100)); }
@Test public void testMulticastMessageRoutingExclusivity() throws Exception { conn.connect(defUser, defPass); final String addressA = "addressA"; final String queueA = "queueA"; final String queueB = "queueB"; final String queueC = "queueC"; ActiveMQServerControl serverControl = server.getActiveMQServerControl(); serverControl.createAddress(addressA, RoutingType.ANYCAST.toString() + "," + RoutingType.MULTICAST.toString()); serverControl.createQueue(addressA, queueA, RoutingType.ANYCAST.toString()); serverControl.createQueue(addressA, queueB, RoutingType.MULTICAST.toString()); serverControl.createQueue(addressA, queueC, RoutingType.MULTICAST.toString()); send(conn, addressA, null, "Hello World!", true, RoutingType.MULTICAST); assertTrue(Wait.waitFor(() -> server.locateQueue(SimpleString.toSimpleString(queueA)).getMessageCount() == 0, 2000, 100)); assertTrue(Wait.waitFor(() -> server.locateQueue(SimpleString.toSimpleString(queueC)).getMessageCount() + server.locateQueue(SimpleString.toSimpleString(queueB)).getMessageCount() == 2, 2000, 100)); }
ClientSessionFactory factory2 = createSessionFactory(locator2); ClientSession session2 = addClientSession(factory2.createSession()); serverControl.createAddress(queueName.toString(), "ANYCAST"); server.createQueue(queueName, RoutingType.ANYCAST, queueName, null, false, false);
@Test public void testCreateAndDestroyQueueClosingConsumers() throws Exception { SimpleString address = RandomUtil.randomSimpleString(); SimpleString name = RandomUtil.randomSimpleString(); boolean durable = true; ActiveMQServerControl serverControl = createManagementControl(); checkNoResource(ObjectNameBuilder.DEFAULT.getQueueObjectName(address, name, RoutingType.ANYCAST)); serverControl.createAddress(address.toString(), "ANYCAST"); serverControl.createQueue(address.toString(), "ANYCAST", name.toString(), null, durable, -1, false, false); ServerLocator receiveLocator = createInVMNonHALocator(); ClientSessionFactory receiveCsf = createSessionFactory(receiveLocator); ClientSession receiveClientSession = receiveCsf.createSession(true, false, false); final ClientConsumer consumer = receiveClientSession.createConsumer(name); Assert.assertFalse(consumer.isClosed()); checkResource(ObjectNameBuilder.DEFAULT.getQueueObjectName(address, name, RoutingType.ANYCAST)); serverControl.destroyQueue(name.toString(), true); Wait.waitFor(new Wait.Condition() { @Override public boolean isSatisfied() throws Exception { return consumer.isClosed(); } }, 1000, 100); Assert.assertTrue(consumer.isClosed()); checkNoResource(ObjectNameBuilder.DEFAULT.getQueueObjectName(address, name, RoutingType.ANYCAST)); }
@Test public void testAmbiguousMessageRouting() throws Exception { conn.connect(defUser, defPass); final String addressA = "addressA"; final String queueA = "queueA"; final String queueB = "queueB"; final String queueC = "queueC"; final String queueD = "queueD"; ActiveMQServerControl serverControl = server.getActiveMQServerControl(); serverControl.createAddress(addressA, RoutingType.ANYCAST.toString() + "," + RoutingType.MULTICAST.toString()); serverControl.createQueue(addressA, queueA, RoutingType.ANYCAST.toString()); serverControl.createQueue(addressA, queueB, RoutingType.ANYCAST.toString()); serverControl.createQueue(addressA, queueC, RoutingType.MULTICAST.toString()); serverControl.createQueue(addressA, queueD, RoutingType.MULTICAST.toString()); send(conn, addressA, null, "Hello World!", true); assertTrue(Wait.waitFor(() -> server.locateQueue(SimpleString.toSimpleString(queueA)).getMessageCount() + server.locateQueue(SimpleString.toSimpleString(queueB)).getMessageCount() == 1, 2000, 100)); assertTrue(Wait.waitFor(() -> server.locateQueue(SimpleString.toSimpleString(queueC)).getMessageCount() + server.locateQueue(SimpleString.toSimpleString(queueD)).getMessageCount() == 2, 2000, 100)); }
@Test public void testCreateAndDestroyQueue() throws Exception { SimpleString address = RandomUtil.randomSimpleString(); SimpleString name = RandomUtil.randomSimpleString(); ActiveMQServerControl serverControl = createManagementControl(); checkNoResource(ObjectNameBuilder.DEFAULT.getQueueObjectName(address, name, RoutingType.ANYCAST)); serverControl.createAddress(address.toString(), "ANYCAST"); serverControl.createQueue(address.toString(), "ANYCAST", name.toString(), null, true, -1, false, false); checkResource(ObjectNameBuilder.DEFAULT.getQueueObjectName(address, name, RoutingType.ANYCAST)); QueueControl queueControl = ManagementControlHelper.createQueueControl(address, name, RoutingType.ANYCAST, mbeanServer); Assert.assertEquals(address.toString(), queueControl.getAddress()); Assert.assertEquals(name.toString(), queueControl.getName()); Assert.assertNull(queueControl.getFilter()); Assert.assertEquals(true, queueControl.isDurable()); Assert.assertEquals(false, queueControl.isTemporary()); serverControl.destroyQueue(name.toString()); checkNoResource(ObjectNameBuilder.DEFAULT.getQueueObjectName(address, name, RoutingType.ANYCAST)); }
@Test public void testCreateAndDestroyQueue_3() throws Exception { SimpleString address = RandomUtil.randomSimpleString(); SimpleString name = RandomUtil.randomSimpleString(); boolean durable = true; ActiveMQServerControl serverControl = createManagementControl(); checkNoResource(ObjectNameBuilder.DEFAULT.getQueueObjectName(address, name, RoutingType.ANYCAST)); serverControl.createAddress(address.toString(), "ANYCAST"); serverControl.createQueue(address.toString(), "ANYCAST", name.toString(), null, durable, -1, false, false); checkResource(ObjectNameBuilder.DEFAULT.getQueueObjectName(address, name, RoutingType.ANYCAST)); QueueControl queueControl = ManagementControlHelper.createQueueControl(address, name, RoutingType.ANYCAST, mbeanServer); Assert.assertEquals(address.toString(), queueControl.getAddress()); Assert.assertEquals(name.toString(), queueControl.getName()); Assert.assertNull(queueControl.getFilter()); Assert.assertEquals(durable, queueControl.isDurable()); Assert.assertEquals(false, queueControl.isTemporary()); serverControl.destroyQueue(name.toString()); checkNoResource(ObjectNameBuilder.DEFAULT.getQueueObjectName(address, name, RoutingType.ANYCAST)); }
@Test public void testCreateAndDestroyQueueWithEmptyStringForFilter() throws Exception { SimpleString address = RandomUtil.randomSimpleString(); SimpleString name = RandomUtil.randomSimpleString(); String filter = ""; boolean durable = true; ActiveMQServerControl serverControl = createManagementControl(); checkNoResource(ObjectNameBuilder.DEFAULT.getQueueObjectName(address, name, RoutingType.ANYCAST)); serverControl.createAddress(address.toString(), "ANYCAST"); serverControl.createQueue(address.toString(), "ANYCAST", name.toString(), filter, durable, -1, false, false); checkResource(ObjectNameBuilder.DEFAULT.getQueueObjectName(address, name, RoutingType.ANYCAST)); QueueControl queueControl = ManagementControlHelper.createQueueControl(address, name, RoutingType.ANYCAST, mbeanServer); Assert.assertEquals(address.toString(), queueControl.getAddress()); Assert.assertEquals(name.toString(), queueControl.getName()); Assert.assertNull(queueControl.getFilter()); Assert.assertEquals(durable, queueControl.isDurable()); Assert.assertEquals(false, queueControl.isTemporary()); serverControl.destroyQueue(name.toString()); checkNoResource(ObjectNameBuilder.DEFAULT.getQueueObjectName(address, name, RoutingType.ANYCAST)); }
@Test public void testCreateAndDestroyQueueWithNullFilter() throws Exception { SimpleString address = RandomUtil.randomSimpleString(); SimpleString name = RandomUtil.randomSimpleString(); String filter = null; boolean durable = true; ActiveMQServerControl serverControl = createManagementControl(); checkNoResource(ObjectNameBuilder.DEFAULT.getQueueObjectName(address, name, RoutingType.ANYCAST)); serverControl.createAddress(address.toString(), "ANYCAST"); serverControl.createQueue(address.toString(), "ANYCAST", name.toString(), filter, durable, -1, false, false); checkResource(ObjectNameBuilder.DEFAULT.getQueueObjectName(address, name, RoutingType.ANYCAST)); QueueControl queueControl = ManagementControlHelper.createQueueControl(address, name, RoutingType.ANYCAST, mbeanServer); Assert.assertEquals(address.toString(), queueControl.getAddress()); Assert.assertEquals(name.toString(), queueControl.getName()); Assert.assertNull(queueControl.getFilter()); Assert.assertEquals(durable, queueControl.isDurable()); Assert.assertEquals(false, queueControl.isTemporary()); serverControl.destroyQueue(name.toString()); checkNoResource(ObjectNameBuilder.DEFAULT.getQueueObjectName(address, name, RoutingType.ANYCAST)); }
@Test public void testCreateAndDestroyQueue_2() throws Exception { SimpleString address = RandomUtil.randomSimpleString(); SimpleString name = RandomUtil.randomSimpleString(); String filter = "color = 'green'"; boolean durable = true; ActiveMQServerControl serverControl = createManagementControl(); checkNoResource(ObjectNameBuilder.DEFAULT.getQueueObjectName(address, name, RoutingType.ANYCAST)); serverControl.createAddress(address.toString(), "ANYCAST"); serverControl.createQueue(address.toString(), "ANYCAST", name.toString(), filter, durable, -1, false, false); checkResource(ObjectNameBuilder.DEFAULT.getQueueObjectName(address, name, RoutingType.ANYCAST)); QueueControl queueControl = ManagementControlHelper.createQueueControl(address, name, RoutingType.ANYCAST, mbeanServer); Assert.assertEquals(address.toString(), queueControl.getAddress()); Assert.assertEquals(name.toString(), queueControl.getName()); Assert.assertEquals(filter, queueControl.getFilter()); Assert.assertEquals(durable, queueControl.isDurable()); Assert.assertEquals(false, queueControl.isTemporary()); serverControl.destroyQueue(name.toString()); checkNoResource(ObjectNameBuilder.DEFAULT.getQueueObjectName(address, name, RoutingType.ANYCAST)); }