You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2018/05/10 16:45:14 UTC

activemq-artemis git commit: NO-JIRA Fixing test race on ClientCrashTest

Repository: activemq-artemis
Updated Branches:
  refs/heads/master 9d62e1d85 -> 32ec602ea


NO-JIRA Fixing test race on ClientCrashTest


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

Branch: refs/heads/master
Commit: 32ec602eaf936158817c161b8ef2246d7652b938
Parents: 9d62e1d
Author: Clebert Suconic <cl...@apache.org>
Authored: Thu May 10 12:18:08 2018 -0400
Committer: Clebert Suconic <cl...@apache.org>
Committed: Thu May 10 12:19:18 2018 -0400

----------------------------------------------------------------------
 .../org/apache/activemq/artemis/junit/Wait.java | 13 +++++++++++--
 .../clientcrash/ClientCrashTest.java            | 20 ++++++++++++--------
 .../integration/clientcrash/ClientTestBase.java | 14 +++-----------
 .../integration/clientcrash/CrashClient.java    |  7 +++++--
 .../integration/clientcrash/CrashClient2.java   |  4 +++-
 5 files changed, 34 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/32ec602e/artemis-junit/src/main/java/org/apache/activemq/artemis/junit/Wait.java
----------------------------------------------------------------------
diff --git a/artemis-junit/src/main/java/org/apache/activemq/artemis/junit/Wait.java b/artemis-junit/src/main/java/org/apache/activemq/artemis/junit/Wait.java
index 8deca21..679b112 100644
--- a/artemis-junit/src/main/java/org/apache/activemq/artemis/junit/Wait.java
+++ b/artemis-junit/src/main/java/org/apache/activemq/artemis/junit/Wait.java
@@ -46,8 +46,13 @@ public class Wait {
       return waitFor(condition, MAX_WAIT_MILLIS);
    }
 
+
    public static void assertEquals(long size, LongCondition condition) throws Exception {
-      boolean result = waitFor(() -> condition.getCount() == size);
+      assertEquals(size, condition, MAX_WAIT_MILLIS);
+   }
+
+   public static void assertEquals(long size, LongCondition condition, long timeout) throws Exception {
+      boolean result = waitFor(() -> condition.getCount() == size, timeout);
 
       if (!result) {
          Assert.fail(size + " != " + condition.getCount());
@@ -56,7 +61,11 @@ public class Wait {
 
 
    public static void assertEquals(int size, IntCondition condition) throws Exception {
-      boolean result = waitFor(() -> condition.getCount() == size);
+      assertEquals(size, condition, MAX_WAIT_MILLIS);
+   }
+
+   public static void assertEquals(int size, IntCondition condition, long timeout) throws Exception {
+      boolean result = waitFor(() -> condition.getCount() == size, timeout);
 
       if (!result) {
          Assert.fail(size + " != " + condition.getCount());

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/32ec602e/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/clientcrash/ClientCrashTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/clientcrash/ClientCrashTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/clientcrash/ClientCrashTest.java
index a4d2f80..7ce8834 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/clientcrash/ClientCrashTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/clientcrash/ClientCrashTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.activemq.artemis.tests.integration.clientcrash;
 
+import java.util.concurrent.TimeUnit;
+
 import org.apache.activemq.artemis.api.core.Message;
 import org.apache.activemq.artemis.api.core.SimpleString;
 import org.apache.activemq.artemis.api.core.client.ClientConsumer;
@@ -29,6 +31,7 @@ import org.apache.activemq.artemis.jms.client.ActiveMQTextMessage;
 import org.apache.activemq.artemis.tests.integration.IntegrationTestLogger;
 import org.apache.activemq.artemis.tests.util.SpawnedVMSupport;
 import org.junit.After;
+import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -93,6 +96,10 @@ public class ClientCrashTest extends ClientTestBase {
       // if the client is too fast you race the send before the queue was created, missing a message
       p = SpawnedVMSupport.spawnVM(CrashClient.class.getName());
 
+      Assert.assertTrue(p.waitFor(1, TimeUnit.MINUTES));
+
+      Assert.assertEquals(CrashClient.OK, p.exitValue());
+
       ClientConsumer consumer = session.createConsumer(ClientCrashTest.QUEUE);
       ClientProducer producer = session.createProducer(ClientCrashTest.QUEUE);
 
@@ -103,16 +110,13 @@ public class ClientCrashTest extends ClientTestBase {
       assertNotNull("no message received", messageFromClient);
       assertEquals(ClientCrashTest.MESSAGE_TEXT_FROM_CLIENT, messageFromClient.getBodyBuffer().readString());
 
-      assertActiveConnections(1 + 1); // One local and one from the other vm
-      assertActiveSession(1 + 1);
+      assertActiveConnections( 1); // One local and one from the other vm
+      assertActiveSession(1);
 
       ClientMessage message = session.createMessage(ActiveMQTextMessage.TYPE, false, 0, System.currentTimeMillis(), (byte) 1);
       message.getBodyBuffer().writeString(ClientCrashTest.MESSAGE_TEXT_FROM_SERVER);
       producer.send(message);
 
-      ClientCrashTest.log.debug("waiting for the client VM to crash ...");
-      p.waitFor();
-
       assertEquals(9, p.exitValue());
 
       System.out.println("VM Exited");
@@ -145,16 +149,16 @@ public class ClientCrashTest extends ClientTestBase {
       p = SpawnedVMSupport.spawnVM(CrashClient2.class.getName());
 
       ClientCrashTest.log.debug("waiting for the client VM to crash ...");
-      p.waitFor();
+      Assert.assertTrue(p.waitFor(1, TimeUnit.MINUTES));
 
-      assertEquals(9, p.exitValue());
+      assertEquals(CrashClient2.OK, p.exitValue());
 
       System.out.println("VM Exited");
 
       long timeout = ClientCrashTest.CONNECTION_TTL + ClientCrashTest.PING_PERIOD + 10000;
 
       assertActiveConnections(1, timeout);
-      assertActiveSession(1, timeout);
+      assertActiveSession(2, timeout);
 
       ClientConsumer consumer = session.createConsumer(ClientCrashTest.QUEUE2);
 

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/32ec602e/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/clientcrash/ClientTestBase.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/clientcrash/ClientTestBase.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/clientcrash/ClientTestBase.java
index 8ea6f07..50c34b8 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/clientcrash/ClientTestBase.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/clientcrash/ClientTestBase.java
@@ -18,8 +18,8 @@ package org.apache.activemq.artemis.tests.integration.clientcrash;
 
 import org.apache.activemq.artemis.core.config.Configuration;
 import org.apache.activemq.artemis.core.server.ActiveMQServer;
+import org.apache.activemq.artemis.junit.Wait;
 import org.apache.activemq.artemis.tests.util.SpawnedTestBase;
-import org.junit.Assert;
 import org.junit.Before;
 
 public abstract class ClientTestBase extends SpawnedTestBase {
@@ -41,11 +41,7 @@ public abstract class ClientTestBase extends SpawnedTestBase {
    }
 
    protected void assertActiveConnections(final int expectedActiveConnections, long timeout) throws Exception {
-      timeout += System.currentTimeMillis();
-      while (timeout > System.currentTimeMillis() && server.getActiveMQServerControl().getConnectionCount() != expectedActiveConnections) {
-         Thread.sleep(100);
-      }
-      Assert.assertEquals(expectedActiveConnections, server.getActiveMQServerControl().getConnectionCount());
+      Wait.assertEquals(expectedActiveConnections, server.getActiveMQServerControl()::getConnectionCount, timeout);
    }
 
    protected void assertActiveSession(final int expectedActiveSession) throws Exception {
@@ -53,11 +49,7 @@ public abstract class ClientTestBase extends SpawnedTestBase {
    }
 
    protected void assertActiveSession(final int expectedActiveSession, long timeout) throws Exception {
-      timeout += System.currentTimeMillis();
-      while (timeout > System.currentTimeMillis() && server.getSessions().size() != expectedActiveSession) {
-         Thread.sleep(100);
-      }
-      Assert.assertEquals(expectedActiveSession, server.getSessions().size());
+      Wait.assertEquals(expectedActiveSession, server.getSessions()::size, timeout);
    }
 
 }

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/32ec602e/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/clientcrash/CrashClient.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/clientcrash/CrashClient.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/clientcrash/CrashClient.java
index 6f5d1c6..4bc6010 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/clientcrash/CrashClient.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/clientcrash/CrashClient.java
@@ -33,6 +33,9 @@ import org.apache.activemq.artemis.tests.integration.IntegrationTestLogger;
  * Code to be run in an external VM, via main()
  */
 public class CrashClient {
+
+   public static int OK = 9;
+   public static int NOT_OK = 1;
    // Constants ------------------------------------------------------------------------------------
 
    private static final IntegrationTestLogger log = IntegrationTestLogger.LOGGER;
@@ -58,10 +61,10 @@ public class CrashClient {
          producer.send(message);
 
          // exit without closing the session properly
-         System.exit(9);
+         System.exit(OK);
       } catch (Throwable t) {
          CrashClient.log.error(t.getMessage(), t);
-         System.exit(1);
+         System.exit(NOT_OK);
       }
    }
 

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/32ec602e/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/clientcrash/CrashClient2.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/clientcrash/CrashClient2.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/clientcrash/CrashClient2.java
index bd5a0d4..40367f5 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/clientcrash/CrashClient2.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/clientcrash/CrashClient2.java
@@ -33,6 +33,8 @@ import org.apache.activemq.artemis.tests.integration.IntegrationTestLogger;
  * Code to be run in an external VM, via main()
  */
 public class CrashClient2 {
+
+   public static final int OK = 9;
    // Constants ------------------------------------------------------------------------------------
 
    private static final IntegrationTestLogger log = IntegrationTestLogger.LOGGER;
@@ -72,7 +74,7 @@ public class CrashClient2 {
          }
 
          // exit without closing the session properly
-         System.exit(9);
+         System.exit(OK);
       } catch (Throwable t) {
          log.error(t.getMessage(), t);
          System.exit(1);