This is an automated email from the ASF dual-hosted git repository.

gtully pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/activemq.git


The following commit(s) were added to refs/heads/master by this push:
     new 3f5bb97  AMQ-5486 - fix intermittent failure in the test, reallign 
assertions
3f5bb97 is described below

commit 3f5bb9710a4d4c88e9f88cb5c4dc83c1755cb72c
Author: gtully <[email protected]>
AuthorDate: Mon Nov 25 12:13:07 2019 +0000

    AMQ-5486 - fix intermittent failure in the test, reallign assertions
---
 .../java/org/apache/activemq/bugs/AMQ5486Test.java | 26 +++++++++++++++++-----
 1 file changed, 20 insertions(+), 6 deletions(-)

diff --git 
a/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/AMQ5486Test.java 
b/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/AMQ5486Test.java
index 675d660..de96457 100644
--- 
a/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/AMQ5486Test.java
+++ 
b/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/AMQ5486Test.java
@@ -24,11 +24,15 @@ import org.apache.activemq.util.Wait;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.jms.support.JmsUtils;
 
 import javax.jms.Connection;
 import javax.jms.ConnectionFactory;
+import java.util.Collections;
 import java.util.LinkedList;
+import java.util.List;
 import java.util.concurrent.ConcurrentLinkedQueue;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutorService;
@@ -38,7 +42,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 public class AMQ5486Test {
-
+    private static Logger LOG = LoggerFactory.getLogger(AMQ5486Test.class);
     private static final int maxConnections = 100;
     private static final int maxPoolSize = 10;
 
@@ -72,7 +76,7 @@ public class AMQ5486Test {
     public void testFailureOnSelectorThreadPoolExhaustion() throws Exception {
         final ConnectionFactory cf = createConnectionFactory();
         final CountDownLatch startupLatch = new CountDownLatch(1);
-        final LinkedList<Exception> exceptions = new LinkedList<Exception>();
+        final List<Exception> exceptions = Collections.synchronizedList(new 
LinkedList<Exception>());
         for(int i = 0; i < maxConnections; i++) {
             executor.submit(new Runnable() {
                 @Override
@@ -82,7 +86,6 @@ public class AMQ5486Test {
                         startupLatch.await();
                         conn = (ActiveMQConnection) cf.createConnection();
                         conn.start();
-                        //conn.syncSendPacket(new 
TransactionInfo(conn.getConnectionInfo().getConnectionId(), null, 
TransactionInfo.END));
                         connections.add(conn);
                     } catch (Exception e) {
                         exceptions.add(e);
@@ -110,12 +113,22 @@ public class AMQ5486Test {
             })
         );
 
-        assertTrue("Expected: more than " + (maxPoolSize - 1) + " connections, 
found: " + connector.getConnections().size(),
+        assertTrue("Expected some connections, provided not all errored out",
+                Wait.waitFor(new Wait.Condition() {
+                    @Override
+                    public boolean isSatisified() throws Exception {
+                        LOG.info("Exceptions size: " + exceptions.size() + ", 
connections size: " + connector.getConnections().size());
+                        return exceptions.size() == maxConnections || 
connector.getConnections().size() > 0;
+                    }
+                })
+        );
+
+        assertTrue("Expected: connections or exceptions match attempts: "  + 
maxConnections,
                 Wait.waitFor(new Wait.Condition() {
                     @Override
                     public boolean isSatisified() throws Exception {
-                        // selector thread will take one thread from the pool
-                        return connector.getConnections().size() >= 
maxPoolSize - 1;
+                        LOG.info("Exceptions size: " + exceptions.size() + ", 
connections size: " + connector.getConnections().size());
+                        return connector.getConnections().size()  + 
exceptions.size() == maxConnections;
                     }
                 })
         );
@@ -129,6 +142,7 @@ public class AMQ5486Test {
             JmsUtils.closeConnection(connection);
         }
 
+        connections.clear();
         service.stop();
         service.waitUntilStopped();
     }

Reply via email to