This is an automated email from the ASF dual-hosted git repository. clebertsuconic pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git
commit 9f6f36d0418cded74d2e9b0570726ccabafb2790 Author: Clebert Suconic <[email protected]> AuthorDate: Mon Feb 25 17:23:08 2019 -0500 ARTEMIS-2183 Fixing RefsOperation on consumers and adding test --- .../core/transaction/TransactionDetail.java | 3 +- .../management/ActiveMQServerControlTest.java | 49 ++++++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/transaction/TransactionDetail.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/transaction/TransactionDetail.java index 0ee1b7d..800aec3 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/transaction/TransactionDetail.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/transaction/TransactionDetail.java @@ -28,6 +28,7 @@ import java.util.Map; import org.apache.activemq.artemis.api.core.JsonUtil; import org.apache.activemq.artemis.api.core.Message; import org.apache.activemq.artemis.core.server.MessageReference; +import org.apache.activemq.artemis.core.server.impl.RefsOperation; import org.apache.activemq.artemis.core.transaction.impl.XidImpl; import org.apache.activemq.artemis.utils.JsonLoader; @@ -83,7 +84,7 @@ public abstract class TransactionDetail { String opType = null; if (opClassName.equals("org.apache.activemq.artemis.core.postoffice.impl.PostOfficeImpl$AddOperation")) { opType = "(+) send"; - } else if (opClassName.equals("org.apache.activemq.artemis.core.server.impl.QueueImpl$RefsOperation")) { + } else if (opClassName.equals(RefsOperation.class.getName())) { opType = "(-) receive"; } 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 847b01e..5bbb85d 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 @@ -985,6 +985,55 @@ public class ActiveMQServerControlTest extends ManagementTestBase { } @Test + public void testListPreparedTransactionDetailsOnConsumer() throws Exception { + SimpleString atestq = new SimpleString("BasicXaTestq"); + Xid xid = newXID(); + + ServerLocator locator = createInVMNonHALocator(); + ClientSessionFactory csf = createSessionFactory(locator); + ClientSession clientSession = csf.createSession(true, false, false); + clientSession.createQueue(atestq, atestq, null, true); + + ClientMessage m1 = createTextMessage(clientSession, ""); + ClientMessage m2 = createTextMessage(clientSession, ""); + ClientMessage m3 = createTextMessage(clientSession, ""); + ClientMessage m4 = createTextMessage(clientSession, ""); + m1.putStringProperty("m1", "valuem1"); + m2.putStringProperty("m2", "valuem2"); + m3.putStringProperty("m3", "valuem3"); + m4.putStringProperty("m4", "valuem4"); + ClientProducer clientProducer = clientSession.createProducer(atestq); + clientSession.start(xid, XAResource.TMNOFLAGS); + clientProducer.send(m1); + clientProducer.send(m2); + clientProducer.send(m3); + clientProducer.send(m4); + clientSession.end(xid, XAResource.TMSUCCESS); + clientSession.prepare(xid); + clientSession.commit(xid, false); + + ClientConsumer consumer = clientSession.createConsumer(atestq); + clientSession.start(); + xid = newXID(); + clientSession.start(xid, XAResource.TMNOFLAGS); + m1 = consumer.receive(1000); + Assert.assertNotNull(m1); + m1.acknowledge(); + clientSession.end(xid, XAResource.TMSUCCESS); + clientSession.prepare(xid); + ActiveMQServerControl serverControl = createManagementControl(); + String jsonOutput = serverControl.listPreparedTransactionDetailsAsJSON(); + + // just one message is pending, and it should be listed on the output + Assert.assertTrue(jsonOutput.lastIndexOf("valuem1") > 0); + Assert.assertTrue(jsonOutput.lastIndexOf("valuem2") < 0); + Assert.assertTrue(jsonOutput.lastIndexOf("valuem3") < 0); + Assert.assertTrue(jsonOutput.lastIndexOf("valuem4") < 0); + clientSession.close(); + locator.close(); + } + + @Test public void testListPreparedTransactionDetailsAsHTML() throws Exception { SimpleString atestq = new SimpleString("BasicXaTestq"); Xid xid = newXID();
