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 2019/05/31 23:06:56 UTC

[activemq-artemis] 02/03: NO-JIRA test improvements

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 a7e5e6d074aa3be0fa8369c9ceefe17abaae9821
Author: Clebert Suconic <cl...@apache.org>
AuthorDate: Fri May 31 13:45:22 2019 -0400

    NO-JIRA test improvements
---
 .../core/message/impl/CoreMessagePersister.java    | 11 ++++++++-
 .../tests/integration/client/SendAckFailTest.java  | 24 ++++++++++++++++---
 .../replication/SharedNothingReplicationTest.java  | 28 ++++++++++++----------
 .../server/ActivationFailureListenerTest.java      |  4 ++--
 .../impl/netty/NettyHandshakeTimeoutTest.java      | 16 ++++++-------
 5 files changed, 56 insertions(+), 27 deletions(-)

diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/message/impl/CoreMessagePersister.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/message/impl/CoreMessagePersister.java
index 115b29b..cbd565d 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/message/impl/CoreMessagePersister.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/message/impl/CoreMessagePersister.java
@@ -26,7 +26,16 @@ import org.apache.activemq.artemis.utils.DataConstants;
 public class CoreMessagePersister implements Persister<Message> {
    public static final byte ID = 1;
 
-   public static CoreMessagePersister theInstance;
+   private static CoreMessagePersister theInstance;
+
+   /** This is a hook for testing */
+   public static void registerPersister(CoreMessagePersister newPersister) {
+      theInstance = newPersister;
+   }
+
+   public static void resetPersister() {
+      theInstance = null;
+   }
 
    public static CoreMessagePersister getInstance() {
       if (theInstance == null) {
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/SendAckFailTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/SendAckFailTest.java
index 9364aa0..ab1932f 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/SendAckFailTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/SendAckFailTest.java
@@ -128,7 +128,7 @@ public class SendAckFailTest extends SpawnedTestBase {
             ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory();
             ServerLocator locator = factory.getServerLocator();
 
-            locator.setConfirmationWindowSize(0).setInitialConnectAttempts(100).setRetryInterval(100).setBlockOnDurableSend(false).setReconnectAttempts(0);
+            locator.setConfirmationWindowSize(0).setInitialConnectAttempts(10000).setRetryInterval(10).setBlockOnDurableSend(false).setReconnectAttempts(0);
 
             ClientSessionFactory sf = locator.createSessionFactory();
 
@@ -213,14 +213,31 @@ public class SendAckFailTest extends SpawnedTestBase {
 
    public ActiveMQServer startServer(boolean fail) {
       try {
-         //ActiveMQServerImpl server = (ActiveMQServerImpl) createServer(true, true);
-
          AtomicInteger count = new AtomicInteger(0);
 
          ActiveMQSecurityManager securityManager = new ActiveMQJAASSecurityManager(InVMLoginModule.class.getName(), new SecurityConfiguration());
 
          Configuration configuration = createDefaultConfig(true);
 
+
+         if (fail) {
+            new Thread() {
+               @Override
+               public void run() {
+                  try {
+
+                     // this is a protection, if the process is left forgoten for any amount of time,
+                     // this will kill it
+                     // This is to avoid rogue processes on the CI
+                     Thread.sleep(10000);
+                     System.err.println("Halting process, protecting the CI from rogue processes");
+                     Runtime.getRuntime().halt(-1);
+                  } catch (Throwable e) {
+                  }
+               }
+            }.start();
+         }
+
          ActiveMQServer server = new ActiveMQServerImpl(configuration, ManagementFactory.getPlatformMBeanServer(), securityManager) {
             @Override
             public StorageManager createStorageManager() {
@@ -249,6 +266,7 @@ public class SendAckFailTest extends SpawnedTestBase {
 
 
          System.out.println("Location::" + server.getConfiguration().getJournalLocation().getAbsolutePath());
+         addServer(server);
          server.start();
          return server;
       } catch (Exception e) {
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/replication/SharedNothingReplicationTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/replication/SharedNothingReplicationTest.java
index 3997c1d..e6e997f 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/replication/SharedNothingReplicationTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/replication/SharedNothingReplicationTest.java
@@ -46,6 +46,7 @@ import org.apache.activemq.artemis.core.server.ActiveMQServer;
 import org.apache.activemq.artemis.core.server.ActiveMQServers;
 import org.apache.activemq.artemis.core.server.JournalType;
 import org.apache.activemq.artemis.junit.Wait;
+import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
 import org.jboss.logging.Logger;
 import org.junit.After;
 import org.junit.Assert;
@@ -58,12 +59,12 @@ import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.Executor;
+import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 
-public class SharedNothingReplicationTest {
+public class SharedNothingReplicationTest extends ActiveMQTestBase {
 
    private static final Logger logger = Logger.getLogger(SharedNothingReplicationTest.class);
 
@@ -71,30 +72,32 @@ public class SharedNothingReplicationTest {
    public TemporaryFolder brokersFolder = new TemporaryFolder();
 
    private SlowMessagePersister slowMessagePersister;
+   ExecutorService sendMessageExecutor;
 
    @Before
+   @Override
    public void setUp() throws Exception {
-      slowMessagePersister = new SlowMessagePersister();
-      CoreMessagePersister.theInstance = slowMessagePersister;
+      super.setUp();
+      sendMessageExecutor = Executors.newSingleThreadExecutor();
+      CoreMessagePersister.registerPersister(SlowMessagePersister._getInstance());
    }
 
    @After
+   @Override
    public void tearDown() throws Exception {
-      if (slowMessagePersister != null) {
-         CoreMessagePersister.theInstance = slowMessagePersister.persister;
-      }
+      CoreMessagePersister.resetPersister();
+      sendMessageExecutor.shutdownNow();
+      super.tearDown();
    }
 
    @Test
    public void testReplicateFromSlowLive() throws Exception {
       // start live
       Configuration liveConfiguration = createLiveConfiguration();
-      ActiveMQServer liveServer = ActiveMQServers.newActiveMQServer(liveConfiguration);
+      ActiveMQServer liveServer = addServer(ActiveMQServers.newActiveMQServer(liveConfiguration));
       liveServer.start();
 
-      Wait.waitFor(() -> liveServer.isStarted());
-
-      CoreMessagePersister.theInstance = SlowMessagePersister._getInstance();
+      Wait.waitFor(liveServer::isStarted);
 
       final CountDownLatch replicated = new CountDownLatch(1);
 
@@ -120,7 +123,6 @@ public class SharedNothingReplicationTest {
       ClientSession sess = csf.createSession();
       sess.createQueue("slow", RoutingType.ANYCAST, "slow", true);
       sess.close();
-      Executor sendMessageExecutor = Executors.newCachedThreadPool();
 
       // let's write some messages
       int i = 0;
@@ -150,7 +152,7 @@ public class SharedNothingReplicationTest {
 
       // start backup
       Configuration backupConfiguration = createBackupConfiguration();
-      ActiveMQServer backupServer = ActiveMQServers.newActiveMQServer(backupConfiguration);
+      ActiveMQServer backupServer = addServer(ActiveMQServers.newActiveMQServer(backupConfiguration));
       backupServer.start();
 
       Wait.waitFor(() -> backupServer.isStarted());
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/ActivationFailureListenerTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/ActivationFailureListenerTest.java
index 597751b..3d6d307 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/ActivationFailureListenerTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/ActivationFailureListenerTest.java
@@ -18,7 +18,7 @@
 package org.apache.activemq.artemis.tests.integration.server;
 
 import java.net.InetSocketAddress;
-import java.net.Socket;
+import java.net.ServerSocket;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
@@ -36,7 +36,7 @@ public class ActivationFailureListenerTest extends ActiveMQTestBase {
 
    @Test
    public void simpleTest() throws Exception {
-      Socket s = new Socket();
+      ServerSocket s = new ServerSocket();
       try {
          s.bind(new InetSocketAddress("127.0.0.1", 61616));
          server = createServer(false, createDefaultNettyConfig());
diff --git a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/remoting/impl/netty/NettyHandshakeTimeoutTest.java b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/remoting/impl/netty/NettyHandshakeTimeoutTest.java
index ec9c995..515a893 100644
--- a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/remoting/impl/netty/NettyHandshakeTimeoutTest.java
+++ b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/remoting/impl/netty/NettyHandshakeTimeoutTest.java
@@ -17,6 +17,10 @@
 
 package org.apache.activemq.artemis.tests.unit.core.remoting.impl.netty;
 
+import java.net.URI;
+import java.util.HashMap;
+import java.util.concurrent.TimeUnit;
+
 import io.netty.buffer.ByteBuf;
 import org.apache.activemq.artemis.api.core.TransportConfiguration;
 import org.apache.activemq.artemis.core.config.Configuration;
@@ -30,10 +34,6 @@ import org.apache.activemq.transport.netty.NettyTransportFactory;
 import org.apache.activemq.transport.netty.NettyTransportListener;
 import org.junit.Test;
 
-import java.net.URI;
-import java.util.HashMap;
-import java.util.concurrent.TimeUnit;
-
 public class NettyHandshakeTimeoutTest extends ActiveMQTestBase {
 
    protected ActiveMQServer server;
@@ -43,8 +43,6 @@ public class NettyHandshakeTimeoutTest extends ActiveMQTestBase {
    public void testHandshakeTimeout() throws Exception {
       int handshakeTimeout = 3;
 
-      setUp();
-      ActiveMQTestBase.checkFreePort(TransportConstants.DEFAULT_PORT);
       HashMap<String, Object> params = new HashMap<>();
       params.put(TransportConstants.HANDSHAKE_TIMEOUT, handshakeTimeout);
 
@@ -70,10 +68,12 @@ public class NettyHandshakeTimeoutTest extends ActiveMQTestBase {
 
       try {
          transport.connect();
-         assertTrue("Connection should be closed now", Wait.waitFor(() -> !transport.isConnected(), TimeUnit.SECONDS.toMillis(handshakeTimeout + 1)));
+         assertTrue("Connection should be closed now", Wait.waitFor(() -> !transport.isConnected(), TimeUnit.SECONDS.toMillis(handshakeTimeout + 10)));
       } finally {
          transport.close();
-         tearDown();
       }
+
+      server.stop();
+
    }
 }