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);