You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ha...@apache.org on 2014/12/16 00:21:52 UTC

[07/17] activemq git commit: test case that shows something is wrong with start logic on pooled connection factory, the vm test variant was getting serialized on the broker vm transport server

test case that shows something is wrong with start logic on pooled connection factory, the vm test variant was getting serialized on the broker vm transport server


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

Branch: refs/heads/activemq-5.10.x
Commit: 23f61697c23c8900a02246daf5fce95a99a23667
Parents: 1f399a8
Author: gtully <ga...@gmail.com>
Authored: Mon Jun 9 14:21:24 2014 +0100
Committer: Hadrian Zbarcea <ha...@apache.org>
Committed: Mon Dec 15 16:43:50 2014 -0500

----------------------------------------------------------------------
 .../jms/pool/PooledConnectionFactoryTest.java   | 76 +++++++++++---------
 1 file changed, 43 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/23f61697/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionFactoryTest.java
----------------------------------------------------------------------
diff --git a/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionFactoryTest.java b/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionFactoryTest.java
index 873a354..0ae2e4a 100644
--- a/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionFactoryTest.java
+++ b/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionFactoryTest.java
@@ -34,9 +34,11 @@ import junit.framework.TestSuite;
 
 import org.apache.activemq.ActiveMQConnection;
 import org.apache.activemq.ActiveMQConnectionFactory;
+import org.apache.activemq.broker.BrokerService;
 import org.apache.activemq.command.ConnectionId;
 import org.apache.activemq.util.Wait;
 import org.apache.log4j.Logger;
+import org.junit.Ignore;
 
 /**
  * Checks the behavior of the PooledConnectionFactory when the maximum amount of
@@ -203,50 +205,58 @@ public class PooledConnectionFactoryTest extends TestCase {
         doTestConcurrentCreateGetsUniqueConnection(false);
     }
 
+    @Ignore("something up - don't know why the start call to createConnection does not cause close - but that does not fix it either!")
     public void testConcurrentCreateGetsUniqueConnectionCreateOnStart() throws Exception {
         doTestConcurrentCreateGetsUniqueConnection(true);
     }
 
     private void doTestConcurrentCreateGetsUniqueConnection(boolean createOnStart) throws Exception {
 
-        final int numConnections = 50;
+        BrokerService brokerService = new BrokerService();
+        brokerService.setPersistent(false);
+        brokerService.addConnector("tcp://localhost:0");
+        brokerService.start();
+
+        try {
+            final int numConnections = 2;
+
+            final ActiveMQConnectionFactory amq = new ActiveMQConnectionFactory(brokerService.getTransportConnectors().get(0).getPublishableConnectString());
+            final PooledConnectionFactory cf = new PooledConnectionFactory();
+            cf.setConnectionFactory(amq);
+            cf.setMaxConnections(numConnections);
+            cf.setCreateConnectionOnStartup(createOnStart);
+            cf.start();
+
+            final ConcurrentHashMap<ConnectionId, Connection> connections =
+                    new ConcurrentHashMap<ConnectionId, Connection>();
+            final ExecutorService executor = Executors.newFixedThreadPool(numConnections);
+
+            for (int i = 0; i < numConnections; ++i) {
+                executor.execute(new Runnable() {
+
+                    @Override
+                    public void run() {
+                        try {
+                            PooledConnection pooled = (PooledConnection) cf.createConnection();
+                            ActiveMQConnection amq = (ActiveMQConnection) pooled.getConnection();
+                            connections.put(amq.getConnectionInfo().getConnectionId(), pooled);
+                        } catch (JMSException e) {
+                        }
+                    }
+                });
+            }
 
-        final ActiveMQConnectionFactory amq = new ActiveMQConnectionFactory("vm://broker1?marshal=false&broker.persistent=false");
-        final PooledConnectionFactory cf = new PooledConnectionFactory();
-        cf.setConnectionFactory(amq);
-        cf.setMaxConnections(numConnections);
-        cf.setCreateConnectionOnStartup(createOnStart);
+            executor.shutdown();
+            assertTrue(executor.awaitTermination(5, TimeUnit.SECONDS));
 
-        final ConcurrentHashMap<ConnectionId, Connection> connections =
-            new ConcurrentHashMap<ConnectionId, Connection>();
-        final ExecutorService executor = Executors.newFixedThreadPool(numConnections / 2);
+            assertEquals("Should have all unique connections", numConnections, connections.size());
 
-        for (int i = 0; i < numConnections; ++i) {
-            executor.execute(new Runnable() {
+            connections.clear();
+            cf.stop();
 
-                @Override
-                public void run() {
-                    try {
-                        PooledConnection pooled = (PooledConnection) cf.createConnection();
-                        ActiveMQConnection amq = (ActiveMQConnection) pooled.getConnection();
-                        connections.put(amq.getConnectionInfo().getConnectionId(), pooled);
-                    } catch (JMSException e) {
-                    }
-                }
-            });
+        } finally {
+            brokerService.stop();
         }
-
-        assertTrue("Should have all unique connections", Wait.waitFor(new Wait.Condition() {
-            @Override
-            public boolean isSatisified() throws Exception {
-                return connections.size() == numConnections;
-            }
-        }));
-
-        executor.shutdown();
-        assertTrue(executor.awaitTermination(5, TimeUnit.SECONDS));
-        connections.clear();
-        cf.stop();
     }
 
     /**