Repository: activemq-artemis
Updated Branches:
  refs/heads/2.6.x f2198ae5d -> 58add60c3


NO-JIRA fix flaky test HeuristicXATest.testRecoverHeuristicCommitWithRestart

The below error is prevented by adding Wait.assertEquals,
where Assert.assertEquals was used previously. Timeout is
set to small increments, since we rarely need to wait more
than 100 ms for the condition to become true.

java.lang.AssertionError: expected:<1> but was:<0>
        at org.junit.Assert.fail(Assert.java:88)
        at org.junit.Assert.failNotEquals(Assert.java:743)
        at org.junit.Assert.assertEquals(Assert.java:118)
        at org.junit.Assert.assertEquals(Assert.java:555)
        at org.junit.Assert.assertEquals(Assert.java:542)
        at 
org.apache.activemq.artemis.tests.integration.client.HeuristicXATest.doRecoverHeuristicCompletedTxWithRestart(HeuristicXATest.java:306)
        at 
org.apache.activemq.artemis.tests.integration.client.HeuristicXATest.testRecoverHeuristicCommitWithRestart(HeuristicXATest.java:251)

(cherry picked from commit cb99b4a6663e631fae8048dad8ffca427fceda15)


Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/34043c61
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/34043c61
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/34043c61

Branch: refs/heads/2.6.x
Commit: 34043c614845931cb3700dd1f35010e1be452b5c
Parents: f2198ae
Author: Jiri Danek <[email protected]>
Authored: Sun Jul 22 10:57:14 2018 +0200
Committer: Clebert Suconic <[email protected]>
Committed: Fri Aug 3 18:30:21 2018 -0400

----------------------------------------------------------------------
 .../integration/client/HeuristicXATest.java     | 59 +++++++-------------
 1 file changed, 20 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/34043c61/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/HeuristicXATest.java
----------------------------------------------------------------------
diff --git 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/HeuristicXATest.java
 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/HeuristicXATest.java
index 8f089c3..e32c014 100644
--- 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/HeuristicXATest.java
+++ 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/HeuristicXATest.java
@@ -35,6 +35,7 @@ import org.apache.activemq.artemis.core.server.Queue;
 import org.apache.activemq.artemis.core.transaction.impl.XidImpl;
 import 
org.apache.activemq.artemis.tests.integration.management.ManagementControlHelper;
 import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
+import org.apache.activemq.artemis.tests.util.Wait;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -138,19 +139,7 @@ public class HeuristicXATest extends ActiveMQTestBase {
       }
 
       if (isCommit) {
-         Assert.assertEquals(1, getMessageCount(((Queue) 
server.getPostOffice().getBinding(ADDRESS).getBindable())));
-
-         session = sf.createSession(false, false, false);
-
-         session.start();
-         ClientConsumer consumer = session.createConsumer(ADDRESS);
-         msg = consumer.receive(1000);
-         Assert.assertNotNull(msg);
-         msg.acknowledge();
-         Assert.assertEquals(body, msg.getBodyBuffer().readString());
-
-         session.commit();
-         session.close();
+         assertMessageInQueueThenReceiveAndCheckContent(server, sf);
       }
 
       Assert.assertEquals(0, getMessageCount(((Queue) 
server.getPostOffice().getBinding(ADDRESS).getBindable())));
@@ -213,19 +202,7 @@ public class HeuristicXATest extends ActiveMQTestBase {
       Assert.assertEquals(0, preparedTransactions.length);
 
       if (isCommit) {
-         Assert.assertEquals(1, getMessageCount(((Queue) 
server.getPostOffice().getBinding(ADDRESS).getBindable())));
-
-         session = sf.createSession(false, false, false);
-
-         session.start();
-         ClientConsumer consumer = session.createConsumer(ADDRESS);
-         msg = consumer.receive(1000);
-         Assert.assertNotNull(msg);
-         msg.acknowledge();
-         Assert.assertEquals(body, msg.getBodyBuffer().readString());
-
-         session.commit();
-         session.close();
+         assertMessageInQueueThenReceiveAndCheckContent(server, sf);
       }
 
       Assert.assertEquals(0, getMessageCount(((Queue) 
server.getPostOffice().getBinding(ADDRESS).getBindable())));
@@ -303,19 +280,7 @@ public class HeuristicXATest extends ActiveMQTestBase {
       Assert.assertEquals(0, preparedTransactions.length);
 
       if (heuristicCommit) {
-         Assert.assertEquals(1, getMessageCount(((Queue) 
server.getPostOffice().getBinding(ADDRESS).getBindable())));
-
-         session = sf.createSession(false, false, false);
-
-         session.start();
-         ClientConsumer consumer = session.createConsumer(ADDRESS);
-         msg = consumer.receive(1000);
-         Assert.assertNotNull(msg);
-         msg.acknowledge();
-         Assert.assertEquals(body, msg.getBodyBuffer().readString());
-
-         session.commit();
-         session.close();
+         assertMessageInQueueThenReceiveAndCheckContent(server, sf);
       }
 
       Assert.assertEquals(0, getMessageCount(((Queue) 
server.getPostOffice().getBinding(ADDRESS).getBindable())));
@@ -345,6 +310,22 @@ public class HeuristicXATest extends ActiveMQTestBase {
       session.close();
    }
 
+   private void assertMessageInQueueThenReceiveAndCheckContent(ActiveMQServer 
server, ClientSessionFactory sf) throws Exception {
+      Wait.assertEquals(1, () -> getMessageCount(((Queue) 
server.getPostOffice().getBinding(ADDRESS).getBindable())), 5 * 1000, 100);
+
+      ClientSession session = sf.createSession(false, false, false);
+
+      session.start();
+      ClientConsumer consumer = session.createConsumer(ADDRESS);
+      ClientMessage msg = consumer.receive(1000);
+      Assert.assertNotNull(msg);
+      msg.acknowledge();
+      Assert.assertEquals(body, msg.getBodyBuffer().readString());
+
+      session.commit();
+      session.close();
+   }
+
    @Test
    public void testForgetHeuristicCommitAndRestart() throws Exception {
       doForgetHeuristicCompletedTxAndRestart(true);

Reply via email to