This is an automated email from the ASF dual-hosted git repository. tabish pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/artemis.git
commit d657f960c0362a14546ea38f8e653572ceb2b6e3 Author: Andy Taylor <[email protected]> AuthorDate: Tue Jan 27 14:38:49 2026 +0000 ARTEMIS-5854 add integration tests --- .../management/ActiveMQServerControlTest.java | 69 ++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java index db8f9e9cd8..6abdf31631 100644 --- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java +++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java @@ -134,6 +134,7 @@ import org.apache.activemq.artemis.tests.extensions.parameterized.Parameters; import org.apache.activemq.artemis.tests.unit.core.config.impl.fakes.FakeConnectorServiceFactory; import org.apache.activemq.artemis.tests.util.CFUtil; import org.apache.activemq.artemis.tests.util.Wait; +import org.apache.activemq.artemis.utils.JsonLoader; import org.apache.activemq.artemis.utils.RandomUtil; import org.apache.activemq.artemis.utils.SecurityFormatter; import org.apache.activemq.artemis.utils.UUIDGenerator; @@ -4442,6 +4443,74 @@ public class ActiveMQServerControlTest extends ManagementTestBase { } + @TestTemplate + public void testListConsumersLastAckTime() throws Exception { + testListConsumersTime(ConsumerField.LAST_ACKNOWLEDGED_TIME.getName()); + } + + @TestTemplate + public void testListConsumersLastDeliveredTime() throws Exception { + testListConsumersTime(ConsumerField.LAST_DELIVERED_TIME.getName()); + } + + private void testListConsumersTime(String field) throws Exception { + SimpleString queueName = SimpleString.of(getName()); + + ActiveMQServerControl serverControl = createManagementControl(); + + Queue queue; + if (legacyCreateQueue) { + queue = server.createQueue(queueName, RoutingType.ANYCAST, queueName, null, false, false); + } else { + queue = server.createQueue(QueueConfiguration.of(queueName).setAddress(queueName).setRoutingType(RoutingType.ANYCAST).setDurable(false)); + } + + try (ServerLocator locator = createInVMNonHALocator(); + ClientSessionFactory csf = createSessionFactory(locator); + ClientSession session = csf.createSession()) { + + ClientConsumer consumer1 = session.createConsumer(queueName); + ClientConsumer consumer2 = session.createConsumer(queueName); + ClientConsumer consumer3 = session.createConsumer(queueName); + session.start(); + ClientProducer producer = session.createProducer(queueName); + producer.send(session.createMessage(true)); + ClientMessage message = consumer1.receiveImmediate(); + assertNotNull(message); + message.individualAcknowledge(); + Thread.sleep(3); + producer.send(session.createMessage(true)); + message = consumer2.receiveImmediate(); + assertNotNull(message); + message.individualAcknowledge(); + Wait.assertEquals(2L, () -> queue.getMessagesAcknowledged(), 1000, 20); + + JsonArray array = (JsonArray) JsonUtil.readJsonObject(serverControl.listConsumers(null, -1, -1)).get("data"); + long time1 = array.getJsonObject(0).getJsonNumber(field).longValue(); + long time2 = array.getJsonObject(1).getJsonNumber(field).longValue(); + long time3 = array.getJsonObject(2).getJsonNumber(field).longValue(); + + verifyConsumerCount(serverControl, createJsonFilter(field, "EQUALS", String.valueOf(time1)), queueName, 1); + verifyConsumerCount(serverControl, createJsonFilter(field, "EQUALS", String.valueOf(time2)), queueName, 1); + verifyConsumerCount(serverControl, createJsonFilter(field, "EQUALS", String.valueOf(time3)), queueName, 1); + verifyConsumerCount(serverControl, createJsonFilter(field, "GREATER_THAN", "0"), queueName, 2); + verifyConsumerCount(serverControl, createJsonFilter(field, "LESS_THAN", "1"), queueName, 1); + } + } + + private static void verifyConsumerCount(ActiveMQServerControl serverControl, String filterString, SimpleString expectedQueueName, int expectedConsumerCount) throws Exception { + String consumersAsJsonString = serverControl.listConsumers(filterString, -1, -1); + JsonArray data = (JsonArray) JsonUtil.readJsonObject(consumersAsJsonString).get("data"); + int consumerCount = 0; + for (int i = 0; i < data.size(); i++) { + String consumerQueueName = data.getJsonObject(i).getString(ConsumerField.QUEUE.getName()); + if (consumerQueueName != null && consumerQueueName.equals(expectedQueueName.toString())) { + consumerCount++; + } + } + assertEquals(expectedConsumerCount, consumerCount, "number of consumers returned from query using filter: " + filterString + "\n" + JsonLoader.prettyPrint(consumersAsJsonString)); + } + @TestTemplate public void testListConsumersOrder() throws Exception { SimpleString queueName1 = SimpleString.of("my_queue_one"); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
