Repository: activemq Updated Branches: refs/heads/master 1c4108545 -> e3a68717f
Fix race in test due to async processing of the SecurityException, start might throw but the connection doesn't fire the exception listener until afterwards which is what triggers the pool to close the connection. Project: http://git-wip-us.apache.org/repos/asf/activemq/repo Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/e3a68717 Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/e3a68717 Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/e3a68717 Branch: refs/heads/master Commit: e3a68717f152f90c1cbd4616ff06589c4cf03b4a Parents: 1c41085 Author: Timothy Bish <[email protected]> Authored: Wed May 4 17:14:44 2016 -0400 Committer: Timothy Bish <[email protected]> Committed: Wed May 4 17:15:13 2016 -0400 ---------------------------------------------------------------------- .../PooledConnectionSecurityExceptionTest.java | 23 +++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/activemq/blob/e3a68717/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionSecurityExceptionTest.java ---------------------------------------------------------------------- diff --git a/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionSecurityExceptionTest.java b/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionSecurityExceptionTest.java index a9a8bf3..377c210 100644 --- a/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionSecurityExceptionTest.java +++ b/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionSecurityExceptionTest.java @@ -17,6 +17,7 @@ package org.apache.activemq.jms.pool; import static org.junit.Assert.assertNotSame; +import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.util.ArrayList; @@ -40,6 +41,7 @@ import org.apache.activemq.security.AuthorizationPlugin; import org.apache.activemq.security.DefaultAuthorizationMap; import org.apache.activemq.security.SimpleAuthenticationPlugin; import org.apache.activemq.security.TempDestinationAuthorizationEntry; +import org.apache.activemq.util.Wait; import org.junit.After; import org.junit.Before; import org.junit.Rule; @@ -175,7 +177,7 @@ public class PooledConnectionSecurityExceptionTest { } @Test - public void testFailoverWithInvalidCredentials() throws JMSException { + public void testFailoverWithInvalidCredentials() throws Exception { ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory( "failover:(" + connectionURI + ")"); @@ -184,24 +186,35 @@ public class PooledConnectionSecurityExceptionTest { pooledConnFact.setConnectionFactory(cf); pooledConnFact.setMaxConnections(1); - Connection connection1 = pooledConnFact.createConnection("invalid", "credentials"); + final Connection connection1 = pooledConnFact.createConnection("invalid", "credentials"); try { connection1.start(); fail("Should fail to connect"); } catch (JMSSecurityException ex) { LOG.info("Caught expected security error"); + // Intentionally don't close here to see that async pool reconnect takes place. } - Connection connection2 = pooledConnFact.createConnection("invalid", "credentials"); + // The pool should process the async error + assertTrue("Should get new connection", Wait.waitFor(new Wait.Condition() { + + @Override + public boolean isSatisified() throws Exception { + return connection1 != pooledConnFact.createConnection("invalid", "credentials"); + } + })); + + final Connection connection2 = pooledConnFact.createConnection("invalid", "credentials"); + assertNotSame(connection1, connection2); + try { connection2.start(); fail("Should fail to connect"); } catch (JMSSecurityException ex) { LOG.info("Caught expected security error"); + connection2.close(); } - - assertNotSame(connection1, connection2); } @Test
