@Test public void testGetScheduledCountOnRemove() throws Exception { long delay = Integer.MAX_VALUE; SimpleString address = RandomUtil.randomSimpleString(); SimpleString queue = RandomUtil.randomSimpleString(); session.createQueue(address, RoutingType.MULTICAST, queue, null, durable); QueueControl queueControl = createManagementControl(address, queue); Assert.assertEquals(0, queueControl.getScheduledCount()); Field queueMemorySizeField = QueueImpl.class.getDeclaredField("queueMemorySize"); queueMemorySizeField.setAccessible(true); final LocalQueueBinding binding = (LocalQueueBinding) server.getPostOffice().getBinding(queue); Queue q = binding.getQueue(); AtomicInteger queueMemorySize1 = (AtomicInteger) queueMemorySizeField.get(q); assertEquals(0, queueMemorySize1.get()); ClientProducer producer = session.createProducer(address); ClientMessage message = session.createMessage(durable); message.putLongProperty(Message.HDR_SCHEDULED_DELIVERY_TIME, System.currentTimeMillis() + delay); producer.send(message); queueControl.removeAllMessages(); Assert.assertEquals(0, queueControl.getMessageCount()); //Verify that original queue has a memory size of 0 assertEquals(0, queueMemorySize1.get()); session.deleteQueue(queue); }
int removedMatchedMessagesCount = queueControl.removeAllMessages(); Assert.assertEquals(numberOfMessages, removedMatchedMessagesCount); assertMessageMetrics(queueControl, 0, durable);
public void testNonDestructiveExpiry(ConnectionSupplier producerConnectionSupplier, ConnectionSupplier consumerConnectionSupplier) throws Exception { sendMessage(producerConnectionSupplier, NON_DESTRUCTIVE_EXPIRY_QUEUE_NAME); QueueBinding queueBinding = (QueueBinding) server.getPostOffice().getBinding(SimpleString.toSimpleString(NON_DESTRUCTIVE_EXPIRY_QUEUE_NAME)); assertEquals("Ensure Message count", 1, queueBinding.getQueue().getMessageCount()); //Consume Once receive(consumerConnectionSupplier, NON_DESTRUCTIVE_EXPIRY_QUEUE_NAME); assertEquals("Ensure Message count", 1, queueBinding.getQueue().getMessageCount()); Thread.sleep(500); //Consume Again this time we expect the message to be expired, so nothing delivered receiveNull(consumerConnectionSupplier, NON_DESTRUCTIVE_EXPIRY_QUEUE_NAME); assertEquals("Ensure Message count", 0, queueBinding.getQueue().getMessageCount()); QueueControl control = (QueueControl) server.getManagementService().getResource(ResourceNames.QUEUE + NON_DESTRUCTIVE_EXPIRY_QUEUE_NAME); control.removeAllMessages(); assertEquals("Message count after clearing queue via queue control should be 0", 0, queueBinding.getQueue().getMessageCount()); }
@Test public void testRemoveAllMessages() throws Exception { SimpleString address = RandomUtil.randomSimpleString(); SimpleString queue = RandomUtil.randomSimpleString(); session.createQueue(address, RoutingType.MULTICAST, queue, null, durable); ClientProducer producer = session.createProducer(address); // send on queue producer.send(session.createMessage(durable)); producer.send(session.createMessage(durable)); QueueControl queueControl = createManagementControl(address, queue); assertMessageMetrics(queueControl, 2, durable); // removed matching messages to otherQueue int removedMatchedMessagesCount = queueControl.removeAllMessages(); Assert.assertEquals(2, removedMatchedMessagesCount); assertMessageMetrics(queueControl, 0, durable); session.deleteQueue(queue); }
public void testNonDestructiveMulitpleMessagesDualConsumer(ConnectionSupplier producerConnectionSupplier, ConnectionSupplier consumerConnectionSupplier) throws Exception { sendMessage(producerConnectionSupplier, NON_DESTRUCTIVE_QUEUE_NAME, 0); sendMessage(producerConnectionSupplier, NON_DESTRUCTIVE_QUEUE_NAME, 1); sendMessage(producerConnectionSupplier, NON_DESTRUCTIVE_QUEUE_NAME, 2); QueueBinding queueBinding = (QueueBinding) server.getPostOffice().getBinding(SimpleString.toSimpleString(NON_DESTRUCTIVE_QUEUE_NAME)); assertEquals("Ensure Message count", 3, queueBinding.getQueue().getMessageCount()); //Consume Once receiveDualConsumer(consumerConnectionSupplier, NON_DESTRUCTIVE_QUEUE_NAME, 3); //Consume Again as should be non-destructive receiveDualConsumer(consumerConnectionSupplier, NON_DESTRUCTIVE_QUEUE_NAME, 3); QueueControl control = (QueueControl) server.getManagementService().getResource(ResourceNames.QUEUE + NON_DESTRUCTIVE_QUEUE_NAME); control.removeAllMessages(); assertEquals("Message count after clearing queue via queue control should be 0", 0, queueBinding.getQueue().getMessageCount()); }
public void testNonDestructiveMulitpleMessages(ConnectionSupplier producerConnectionSupplier, ConnectionSupplier consumerConnectionSupplier) throws Exception { sendMessage(producerConnectionSupplier, NON_DESTRUCTIVE_QUEUE_NAME, 0); sendMessage(producerConnectionSupplier, NON_DESTRUCTIVE_QUEUE_NAME, 1); sendMessage(producerConnectionSupplier, NON_DESTRUCTIVE_QUEUE_NAME, 2); QueueBinding queueBinding = (QueueBinding) server.getPostOffice().getBinding(SimpleString.toSimpleString(NON_DESTRUCTIVE_QUEUE_NAME)); assertEquals("Ensure Message count", 3, queueBinding.getQueue().getMessageCount()); //Consume Once receive(consumerConnectionSupplier, NON_DESTRUCTIVE_QUEUE_NAME, 3); //Consume Again as should be non-destructive receive(consumerConnectionSupplier, NON_DESTRUCTIVE_QUEUE_NAME, 3); QueueControl control = (QueueControl) server.getManagementService().getResource(ResourceNames.QUEUE + NON_DESTRUCTIVE_QUEUE_NAME); control.removeAllMessages(); assertEquals("Message count after clearing queue via queue control should be 0", 0, queueBinding.getQueue().getMessageCount()); }
public void testNonDestructiveSingle(ConnectionSupplier producerConnectionSupplier, ConnectionSupplier consumerConnectionSupplier) throws Exception { sendMessage(producerConnectionSupplier, NON_DESTRUCTIVE_QUEUE_NAME); QueueBinding queueBinding = (QueueBinding) server.getPostOffice().getBinding(SimpleString.toSimpleString(NON_DESTRUCTIVE_QUEUE_NAME)); assertEquals("Ensure Message count", 1, queueBinding.getQueue().getMessageCount()); //Consume Once receive(consumerConnectionSupplier, NON_DESTRUCTIVE_QUEUE_NAME); assertEquals("Ensure Message count", 1, queueBinding.getQueue().getMessageCount()); //Consume Again as should be non-destructive receive(consumerConnectionSupplier, NON_DESTRUCTIVE_QUEUE_NAME); assertEquals("Ensure Message count", 1, queueBinding.getQueue().getMessageCount()); QueueControl control = (QueueControl) server.getManagementService().getResource(ResourceNames.QUEUE + NON_DESTRUCTIVE_QUEUE_NAME); control.removeAllMessages(); assertEquals("Message count after clearing queue via queue control should be 0", 0, queueBinding.getQueue().getMessageCount()); }
public void testNonDestructiveDualConsumer(ConnectionSupplier producerConnectionSupplier, ConnectionSupplier consumerConnectionSupplier) throws Exception { sendMessage(producerConnectionSupplier, NON_DESTRUCTIVE_QUEUE_NAME); QueueBinding queueBinding = (QueueBinding) server.getPostOffice().getBinding(SimpleString.toSimpleString(NON_DESTRUCTIVE_QUEUE_NAME)); assertEquals("Ensure Message count", 1, queueBinding.getQueue().getMessageCount()); //Consume Once receiveDualConsumer(consumerConnectionSupplier, NON_DESTRUCTIVE_QUEUE_NAME); assertEquals("Ensure Message count", 1, queueBinding.getQueue().getMessageCount()); //Consume Again as should be non-destructive receiveDualConsumer(consumerConnectionSupplier, NON_DESTRUCTIVE_QUEUE_NAME); assertEquals("Ensure Message count", 1, queueBinding.getQueue().getMessageCount()); QueueControl control = (QueueControl) server.getManagementService().getResource(ResourceNames.QUEUE + NON_DESTRUCTIVE_QUEUE_NAME); control.removeAllMessages(); assertEquals("Message count after clearing queue via queue control should be 0", 0, queueBinding.getQueue().getMessageCount()); }
public void testNonDestructiveLVQ(ConnectionSupplier producerConnectionSupplier, ConnectionSupplier consumerConnectionSupplier) throws Exception { sendLVQ(producerConnectionSupplier, NON_DESTRUCTIVE_LVQ_QUEUE_NAME, Message.HDR_LAST_VALUE_NAME.toString()); QueueBinding queueBinding = (QueueBinding) server.getPostOffice().getBinding(SimpleString.toSimpleString(NON_DESTRUCTIVE_LVQ_QUEUE_NAME)); assertEquals("Ensure Message count", 1, queueBinding.getQueue().getMessageCount()); //Simulate a small pause, else both messages could be consumed if consumer is fast enough Thread.sleep(10); //Consume Once receiveLVQ(consumerConnectionSupplier, NON_DESTRUCTIVE_LVQ_QUEUE_NAME, Message.HDR_LAST_VALUE_NAME.toString()); assertEquals("Ensure Message count", 1, queueBinding.getQueue().getMessageCount()); //Consume Again as should be non-destructive receiveLVQ(consumerConnectionSupplier, NON_DESTRUCTIVE_LVQ_QUEUE_NAME, Message.HDR_LAST_VALUE_NAME.toString()); assertEquals("Ensure Message count", 1, queueBinding.getQueue().getMessageCount()); //Send again sendLVQ(producerConnectionSupplier, NON_DESTRUCTIVE_LVQ_QUEUE_NAME, Message.HDR_LAST_VALUE_NAME.toString()); assertEquals("Ensure Message count", 1, queueBinding.getQueue().getMessageCount()); //Simulate a small pause, else both messages could be consumed if consumer is fast enough Thread.sleep(10); //Consume Once More receiveLVQ(consumerConnectionSupplier, NON_DESTRUCTIVE_LVQ_QUEUE_NAME, Message.HDR_LAST_VALUE_NAME.toString()); assertEquals("Ensure Message count", 1, queueBinding.getQueue().getMessageCount()); QueueControl control = (QueueControl) server.getManagementService().getResource(ResourceNames.QUEUE + NON_DESTRUCTIVE_LVQ_QUEUE_NAME); control.removeAllMessages(); assertEquals("Message count after clearing queue via queue control should be 0", 0, queueBinding.getQueue().getMessageCount()); }