summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2009-10-23 22:06:37 +0000
committerRobert Godfrey <rgodfrey@apache.org>2009-10-23 22:06:37 +0000
commit38b18d3075169584b27c32e2a49a3a1895497ea4 (patch)
treeade1e92adb9b42bfa993a9dad067a0e67215434d
parentef35372b89ad1306d38eebe35bad496c248c5e38 (diff)
downloadqpid-python-38b18d3075169584b27c32e2a49a3a1895497ea4.tar.gz
Merged from trunk up to 825115
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/java-broker-0-10@829254 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/management/ConfigurationManagementMBean.java2
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java1
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PropertiesPrincipalDatabaseManager.java1
-rw-r--r--qpid/java/broker/src/test/java/org/apache/qpid/server/queue/MockAMQQueue.java1
-rw-r--r--qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_0_10.java1
-rw-r--r--qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_8_0.java1
-rw-r--r--qpid/java/common.xml3
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/ConsoleOutput.java1
-rw-r--r--qpid/java/module.xml6
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/server/failover/MessageDisappearWithIOExceptionTest.java23
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/server/security/acl/SimpleACLTest.java174
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/unit/ack/AcknowledgeAfterFailoverOnMessageTest.java6
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/unit/ack/AcknowledgeAfterFailoverTest.java2
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/unit/ack/AcknowledgeOnMessageTest.java33
-rwxr-xr-xqpid/java/test-profiles/010Excludes3
-rw-r--r--qpid/java/test-profiles/08StandaloneExcludes1
-rw-r--r--qpid/java/test-profiles/Excludes3
17 files changed, 224 insertions, 38 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/management/ConfigurationManagementMBean.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/management/ConfigurationManagementMBean.java
index 1541d3d892..9954719866 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/management/ConfigurationManagementMBean.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/management/ConfigurationManagementMBean.java
@@ -35,13 +35,11 @@ public class ConfigurationManagementMBean extends AMQManagedObject implements Co
super(ConfigurationManagement.class, ConfigurationManagement.TYPE, ConfigurationManagement.VERSION);
}
- @Override
public String getObjectInstanceName()
{
return ConfigurationManagement.TYPE;
}
- @Override
public void reloadSecurityConfiguration() throws Exception
{
ApplicationRegistry.getInstance().getConfiguration().reparseConfigFile();
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java
index d5c6a6d130..8712a1eaa5 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java
@@ -1673,7 +1673,6 @@ public class SimpleAMQQueue implements AMQQueue, Subscription.StateListener
}
}
-
public void checkMessageStatus() throws AMQException
{
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PropertiesPrincipalDatabaseManager.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PropertiesPrincipalDatabaseManager.java
index 4efe381a8b..8658101cd8 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PropertiesPrincipalDatabaseManager.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PropertiesPrincipalDatabaseManager.java
@@ -42,7 +42,6 @@ public class PropertiesPrincipalDatabaseManager implements PrincipalDatabaseMana
return _databases;
}
- @Override
public void initialiseManagement(ServerConfiguration _configuration) throws ConfigurationException
{
//todo
diff --git a/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/MockAMQQueue.java b/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/MockAMQQueue.java
index 7824988e27..7c1f728664 100644
--- a/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/MockAMQQueue.java
+++ b/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/MockAMQQueue.java
@@ -306,6 +306,7 @@ public class MockAMQQueue implements AMQQueue
return 0; //To change body of implemented methods use File | Settings | File Templates.
}
+
public void checkMessageStatus() throws AMQException
{
//To change body of implemented methods use File | Settings | File Templates.
diff --git a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_0_10.java b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_0_10.java
index 211f72e9ba..4d10180667 100644
--- a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_0_10.java
+++ b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_0_10.java
@@ -297,7 +297,6 @@ public class AMQConnectionDelegate_0_10 implements AMQConnectionDelegate, Connec
_qpidConnection.setIdleTimeout(l);
}
- @Override
public int getMaxChannelID()
{
return Integer.MAX_VALUE;
diff --git a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_8_0.java b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_8_0.java
index 45a134a0e6..97d0d0516e 100644
--- a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_8_0.java
+++ b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_8_0.java
@@ -302,7 +302,6 @@ public class AMQConnectionDelegate_8_0 implements AMQConnectionDelegate
public void setIdleTimeout(long l){}
- @Override
public int getMaxChannelID()
{
return (int) (Math.pow(2, 16)-1);
diff --git a/qpid/java/common.xml b/qpid/java/common.xml
index 3393be7070..6b9c961b35 100644
--- a/qpid/java/common.xml
+++ b/qpid/java/common.xml
@@ -51,6 +51,9 @@
<property name="tasks.classes" location="${tasks}/classes"/>
<property name="tasks.src" location="${tasks}/src"/>
+ <property name="qpid.home" location="${project.root}/build"/>
+ <property name="qpid.work" location="${qpid.home}/work"/>
+
<property name="javac.compiler.args" value=""/>
<property name="cobertura.dir" value="${project.root}/lib/cobertura" />
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/ConsoleOutput.java b/qpid/java/common/src/main/java/org/apache/qpid/ConsoleOutput.java
index 3c1ea22595..7d8a5b7b36 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/ConsoleOutput.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/ConsoleOutput.java
@@ -51,7 +51,6 @@ public class ConsoleOutput implements Sender<ByteBuffer>
System.out.println("CLOSED");
}
- @Override
public void setIdleTimeout(long l)
{
// TODO Auto-generated method stub
diff --git a/qpid/java/module.xml b/qpid/java/module.xml
index 5796af928a..9fcc8ded4d 100644
--- a/qpid/java/module.xml
+++ b/qpid/java/module.xml
@@ -287,9 +287,9 @@
</syspropertyset>
<sysproperty key="max_prefetch" value ="${max_prefetch}"/>
<sysproperty key="example.plugin.target" value="${project.root}/build/lib/plugins"/>
- <sysproperty key="QPID_EXAMPLE_HOME" value="${project.root}/build"/>
- <sysproperty key="QPID_HOME" value="${project.root}/build"/>
- <sysproperty key="QPID_WORK" value="${project.root}/build/work"/>
+ <sysproperty key="QPID_EXAMPLE_HOME" value="${qpid.home}"/>
+ <sysproperty key="QPID_HOME" value="${qpid.home}"/>
+ <sysproperty key="QPID_WORK" value="${qpid.work}"/>
<formatter type="plain"/>
<formatter type="xml"/>
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/server/failover/MessageDisappearWithIOExceptionTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/server/failover/MessageDisappearWithIOExceptionTest.java
index f1a1c1a9a8..e507ebc534 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/server/failover/MessageDisappearWithIOExceptionTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/server/failover/MessageDisappearWithIOExceptionTest.java
@@ -179,9 +179,16 @@ public class MessageDisappearWithIOExceptionTest extends FailoverBaseCase implem
messages.remove(0).getIntProperty("count"),
received.getIntProperty("count"));
- // Allow ack to be sent to broker, by performing a synchronous command
- // along the session.
-// _session.createConsumer(_session.createTemporaryQueue()).close();
+ // When the Exception is received by the underlying IO layer it will
+ // initiate failover. The first step of which is to ensure that the
+ // existing conection is closed. So in this situation the connection
+ // will be flushed casuing the above ACK to be sent to the broker.
+ //
+ // That said:
+ // when the socket close is detected on the server it will rise up the
+ // Mina filter chain and interrupt processing.
+ // this has been raised as QPID-2138
+ _session.createConsumer(_session.createTemporaryQueue()).close();
//Retain IO Layer
AMQProtocolSession protocolSession = _connection.getProtocolHandler().getProtocolSession();
@@ -260,8 +267,14 @@ public class MessageDisappearWithIOExceptionTest extends FailoverBaseCase implem
private void initialiseConnection()
throws Exception
{
- //Create Connection
- _connection = (AMQConnection) getConnection();
+ //Create Connection using the default connection URL. i.e. not the Failover URL that would be used by default
+ _connection = (AMQConnection) getConnection(getConnectionFactory("default").getConnectionURL());
+ // The default connection does not have any retries configured so
+ // Allow this connection to retry so that we can block on the failover.
+ // The alternative would be to use the getConnection() default. However,
+ // this would add additional complexity in the logging as a second
+ // broker is defined in that url. We do not need it for this test.
+ _connection.getFailoverPolicy().getCurrentMethod().setRetries(1);
_connection.setConnectionListener(this);
_session = _connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/server/security/acl/SimpleACLTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/server/security/acl/SimpleACLTest.java
index c198b33bee..6e1d68efa1 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/server/security/acl/SimpleACLTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/server/security/acl/SimpleACLTest.java
@@ -32,6 +32,7 @@ import org.apache.qpid.client.*;
import org.apache.qpid.framing.AMQShortString;
import javax.jms.*;
+import javax.jms.ExceptionListener;
import javax.jms.IllegalStateException;
import javax.naming.NamingException;
@@ -136,10 +137,23 @@ public class SimpleACLTest extends QpidTestCase implements ConnectionListener, E
setUpACLTest();
+ //QPID-2081: use a latch to sync on exception causing connection close, to work
+ //around the connection close race during tearDown() causing sporadic failures
+ final CountDownLatch exceptionReceived = new CountDownLatch(1);
+
try
{
Connection conn = getConnection("guest", "guest");
+ conn.setExceptionListener(new ExceptionListener()
+ {
+ public void onException(JMSException e)
+ {
+ exceptionReceived.countDown();
+ }
+ });
+
+
Session sesh = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
conn.start();
@@ -155,6 +169,11 @@ public class SimpleACLTest extends QpidTestCase implements ConnectionListener, E
assertNotNull("There was no liked exception", cause);
assertEquals("Wrong linked exception type", AMQAuthenticationException.class, cause.getClass());
assertEquals("Incorrect error code received", 403, ((AMQAuthenticationException) cause).getErrorCode().getCode());
+
+ //use the latch to ensure the control thread waits long enough for the exception thread
+ //to have done enough to mark the connection closed before teardown commences
+ assertTrue("Timed out waiting for conneciton to report close",
+ exceptionReceived.await(2, TimeUnit.SECONDS));
}
}
@@ -184,6 +203,10 @@ public class SimpleACLTest extends QpidTestCase implements ConnectionListener, E
{
setUpACLTest();
+ //QPID-2081: use a latch to sync on exception causing connection close, to work
+ //around the connection close race during tearDown() causing sporadic failures
+ final CountDownLatch exceptionReceived = new CountDownLatch(1);
+
try
{
Connection conn = getConnection("client", "guest");
@@ -191,6 +214,14 @@ public class SimpleACLTest extends QpidTestCase implements ConnectionListener, E
//Prevent Failover
((AMQConnection) conn).setConnectionListener(this);
+ conn.setExceptionListener(new ExceptionListener()
+ {
+ public void onException(JMSException e)
+ {
+ exceptionReceived.countDown();
+ }
+ });
+
Session sesh = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
conn.start();
@@ -206,6 +237,11 @@ public class SimpleACLTest extends QpidTestCase implements ConnectionListener, E
assertNotNull("There was no liked exception", cause);
assertEquals("Wrong linked exception type", AMQAuthenticationException.class, cause.getClass());
assertEquals("Incorrect error code received", 403, ((AMQAuthenticationException) cause).getErrorCode().getCode());
+
+ //use the latch to ensure the control thread waits long enough for the exception thread
+ //to have done enough to mark the connection closed before teardown commences
+ assertTrue("Timed out waiting for conneciton to report close",
+ exceptionReceived.await(2, TimeUnit.SECONDS));
}
}
@@ -237,6 +273,10 @@ public class SimpleACLTest extends QpidTestCase implements ConnectionListener, E
{
setUpACLTest();
+ //QPID-2081: use a latch to sync on exception causing connection close, to work
+ //around the connection close race during tearDown() causing sporadic failures
+ final CountDownLatch exceptionReceived = new CountDownLatch(1);
+
try
{
Connection conn = getConnection("client", "guest");
@@ -245,6 +285,14 @@ public class SimpleACLTest extends QpidTestCase implements ConnectionListener, E
conn.start();
+ conn.setExceptionListener(new ExceptionListener()
+ {
+ public void onException(JMSException e)
+ {
+ exceptionReceived.countDown();
+ }
+ });
+
//Create a Named Queue
((AMQSession) sesh).createQueue(new AMQShortString("IllegalQueue"), false, false, false);
@@ -255,6 +303,11 @@ public class SimpleACLTest extends QpidTestCase implements ConnectionListener, E
{
amqe.printStackTrace();
assertEquals("Incorrect error code thrown", 403, ((AMQAuthenticationException) amqe).getErrorCode().getCode());
+
+ //use the latch to ensure the control thread waits long enough for the exception thread
+ //to have done enough to mark the connection closed before teardown commences
+ assertTrue("Timed out waiting for conneciton to report close",
+ exceptionReceived.await(2, TimeUnit.SECONDS));
}
}
@@ -323,13 +376,25 @@ public class SimpleACLTest extends QpidTestCase implements ConnectionListener, E
{
setUpACLTest();
+ //QPID-2081: use a latch to sync on exception causing connection close, to work
+ //around the connection close race during tearDown() causing sporadic failures
+ final CountDownLatch exceptionReceived = new CountDownLatch(1);
+
try
{
Connection conn = getConnection("client", "guest");
((AMQConnection) conn).setConnectionListener(this);
+
+ conn.setExceptionListener(new ExceptionListener()
+ {
+ public void onException(JMSException e)
+ {
+ exceptionReceived.countDown();
+ }
+ });
- Session session = conn.createSession(true, Session.AUTO_ACKNOWLEDGE);
+ Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
conn.start();
conn.setExceptionListener(this);
@@ -358,6 +423,11 @@ public class SimpleACLTest extends QpidTestCase implements ConnectionListener, E
{
foundCorrectException = true;
}
+
+ //use the latch to ensure the control thread waits long enough for the exception thread
+ //to have done enough to mark the connection closed before teardown commences
+ assertTrue("Timed out waiting for conneciton to report close",
+ exceptionReceived.await(2, TimeUnit.SECONDS));
}
}
assertTrue("Did not get AMQAuthenticationException thrown", foundCorrectException);
@@ -389,10 +459,22 @@ public class SimpleACLTest extends QpidTestCase implements ConnectionListener, E
{
setUpACLTest();
+ //QPID-2081: use a latch to sync on exception causing connection close, to work
+ //around the connection close race during tearDown() causing sporadic failures
+ final CountDownLatch exceptionReceived = new CountDownLatch(1);
+
try
{
Connection conn = getConnection("client", "guest");
+ conn.setExceptionListener(new ExceptionListener()
+ {
+ public void onException(JMSException e)
+ {
+ exceptionReceived.countDown();
+ }
+ });
+
Session sesh = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
conn.start();
@@ -409,6 +491,11 @@ public class SimpleACLTest extends QpidTestCase implements ConnectionListener, E
assertNotNull("There was no liked exception", cause);
assertEquals("Wrong linked exception type", AMQAuthenticationException.class, cause.getClass());
assertEquals("Incorrect error code received", 403, ((AMQAuthenticationException) cause).getErrorCode().getCode());
+
+ //use the latch to ensure the control thread waits long enough for the exception thread
+ //to have done enough to mark the connection closed before teardown commences
+ assertTrue("Timed out waiting for conneciton to report close",
+ exceptionReceived.await(2, TimeUnit.SECONDS));
}
}
@@ -416,10 +503,22 @@ public class SimpleACLTest extends QpidTestCase implements ConnectionListener, E
{
setUpACLTest();
+ //QPID-2081: use a latch to sync on exception causing connection close, to work
+ //around the connection close race during tearDown() causing sporadic failures
+ final CountDownLatch exceptionReceived = new CountDownLatch(1);
+
try
{
Connection conn = getConnection("server", "guest");
+ conn.setExceptionListener(new ExceptionListener()
+ {
+ public void onException(JMSException e)
+ {
+ exceptionReceived.countDown();
+ }
+ });
+
Session sesh = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
conn.start();
@@ -435,6 +534,11 @@ public class SimpleACLTest extends QpidTestCase implements ConnectionListener, E
assertNotNull("There was no liked exception", cause);
assertEquals("Wrong linked exception type", AMQAuthenticationException.class, cause.getClass());
assertEquals("Incorrect error code received", 403, ((AMQAuthenticationException) cause).getErrorCode().getCode());
+
+ //use the latch to ensure the control thread waits long enough for the exception thread
+ //to have done enough to mark the connection closed before teardown commences
+ assertTrue("Timed out waiting for conneciton to report close",
+ exceptionReceived.await(2, TimeUnit.SECONDS));
}
}
@@ -476,10 +580,22 @@ public class SimpleACLTest extends QpidTestCase implements ConnectionListener, E
{
setUpACLTest();
+ //QPID-2081: use a latch to sync on exception causing connection close, to work
+ //around the connection close race during tearDown() causing sporadic failures
+ final CountDownLatch exceptionReceived = new CountDownLatch(1);
+
try
{
Connection conn = getConnection("server", "guest");
+ conn.setExceptionListener(new ExceptionListener()
+ {
+ public void onException(JMSException e)
+ {
+ exceptionReceived.countDown();
+ }
+ });
+
Session sesh = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
conn.start();
@@ -493,6 +609,11 @@ public class SimpleACLTest extends QpidTestCase implements ConnectionListener, E
catch (AMQAuthenticationException amqe)
{
assertEquals("Incorrect error code thrown", 403, amqe.getErrorCode().getCode());
+
+ //use the latch to ensure the control thread waits long enough for the exception thread
+ //to have done enough to mark the connection closed before teardown commences
+ assertTrue("Timed out waiting for conneciton to report close",
+ exceptionReceived.await(2, TimeUnit.SECONDS));
}
}
@@ -500,10 +621,22 @@ public class SimpleACLTest extends QpidTestCase implements ConnectionListener, E
{
setUpACLTest();
+ //QPID-2081: use a latch to sync on exception causing connection close, to work
+ //around the connection close race during tearDown() causing sporadic failures
+ final CountDownLatch exceptionReceived = new CountDownLatch(1);
+
try
{
Connection conn = getConnection("server", "guest");
+ conn.setExceptionListener(new ExceptionListener()
+ {
+ public void onException(JMSException e)
+ {
+ exceptionReceived.countDown();
+ }
+ });
+
Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
conn.start();
@@ -520,6 +653,11 @@ public class SimpleACLTest extends QpidTestCase implements ConnectionListener, E
assertNotNull("There was no liked exception", cause);
assertEquals("Wrong linked exception type", AMQAuthenticationException.class, cause.getClass());
assertEquals("Incorrect error code received", 403, ((AMQAuthenticationException) cause).getErrorCode().getCode());
+
+ //use the latch to ensure the control thread waits long enough for the exception thread
+ //to have done enough to mark the connection closed before teardown commences
+ assertTrue("Timed out waiting for conneciton to report close",
+ exceptionReceived.await(2, TimeUnit.SECONDS));
}
}
@@ -527,11 +665,23 @@ public class SimpleACLTest extends QpidTestCase implements ConnectionListener, E
{
setUpACLTest();
+ //QPID-2081: use a latch to sync on exception causing connection close, to work
+ //around the connection close race during tearDown() causing sporadic failures
+ final CountDownLatch exceptionReceived = new CountDownLatch(1);
+
Connection connection = null;
try
{
connection = getConnection("server", "guest");
+ connection.setExceptionListener(new ExceptionListener()
+ {
+ public void onException(JMSException e)
+ {
+ exceptionReceived.countDown();
+ }
+ });
+
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
connection.start();
@@ -545,6 +695,11 @@ public class SimpleACLTest extends QpidTestCase implements ConnectionListener, E
catch (AMQAuthenticationException amqe)
{
assertEquals("Incorrect error code thrown", 403, amqe.getErrorCode().getCode());
+
+ //use the latch to ensure the control thread waits long enough for the exception thread
+ //to have done enough to mark the connection closed before teardown commences
+ assertTrue("Timed out waiting for conneciton to report close",
+ exceptionReceived.await(2, TimeUnit.SECONDS));
}
}
@@ -642,9 +797,21 @@ public class SimpleACLTest extends QpidTestCase implements ConnectionListener, E
{
setUpACLTest();
+ //QPID-2081: use a latch to sync on exception causing connection close, to work
+ //around the connection close race during tearDown() causing sporadic failures
+ final CountDownLatch exceptionReceived = new CountDownLatch(1);
+
try
{
Connection conn = getConnection("server", "guest");
+
+ conn.setExceptionListener(new ExceptionListener()
+ {
+ public void onException(JMSException e)
+ {
+ exceptionReceived.countDown();
+ }
+ });
((AMQConnection) conn).setConnectionListener(this);
@@ -688,6 +855,11 @@ public class SimpleACLTest extends QpidTestCase implements ConnectionListener, E
assertEquals("Incorrect exception", AMQAuthenticationException.class, cause.getClass());
assertEquals("Incorrect error code thrown", 403, ((AMQAuthenticationException) cause).getErrorCode().getCode());
}
+
+ //use the latch to ensure the control thread waits long enough for the exception thread
+ //to have done enough to mark the connection closed before teardown commences
+ assertTrue("Timed out waiting for conneciton to report close",
+ exceptionReceived.await(2, TimeUnit.SECONDS));
}
}
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/ack/AcknowledgeAfterFailoverOnMessageTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/ack/AcknowledgeAfterFailoverOnMessageTest.java
index f22a405fc3..7c5db290c4 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/ack/AcknowledgeAfterFailoverOnMessageTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/ack/AcknowledgeAfterFailoverOnMessageTest.java
@@ -155,7 +155,7 @@ public class AcknowledgeAfterFailoverOnMessageTest extends AcknowledgeOnMessageT
public void onMessage(Message message)
{
// Stop processing if we have an error and had to stop running.
- if (_receviedAll.getCount() == 0)
+ if (_receivedAll.getCount() == 0)
{
_logger.debug("Dumping msgs due to error(" + _causeOfFailure.get().getMessage() + "):" + message);
return;
@@ -191,7 +191,7 @@ public class AcknowledgeAfterFailoverOnMessageTest extends AcknowledgeOnMessageT
// Acknowledge the first message if we are now on the cleaned pass
if (cleaned)
{
- _receviedAll.countDown();
+ _receivedAll.countDown();
}
return;
@@ -234,7 +234,7 @@ public class AcknowledgeAfterFailoverOnMessageTest extends AcknowledgeOnMessageT
// this will then trigger test teardown.
if (cleaned)
{
- _receviedAll.countDown();
+ _receivedAll.countDown();
}
//Reset message count so we can try again.
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/ack/AcknowledgeAfterFailoverTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/ack/AcknowledgeAfterFailoverTest.java
index eb36522fac..ae7e30c231 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/ack/AcknowledgeAfterFailoverTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/ack/AcknowledgeAfterFailoverTest.java
@@ -299,7 +299,7 @@ public class AcknowledgeAfterFailoverTest extends AcknowledgeTest implements Con
}
catch (InterruptedException e)
{
- fail("Failover was interuppted");
+ fail("Failover was interrupted");
}
}
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/ack/AcknowledgeOnMessageTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/ack/AcknowledgeOnMessageTest.java
index 4254727d36..a2703be298 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/ack/AcknowledgeOnMessageTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/ack/AcknowledgeOnMessageTest.java
@@ -34,7 +34,7 @@ import java.util.concurrent.atomic.AtomicReference;
public class AcknowledgeOnMessageTest extends AcknowledgeTest implements MessageListener
{
- protected CountDownLatch _receviedAll;
+ protected CountDownLatch _receivedAll;
protected AtomicReference<Exception> _causeOfFailure = new AtomicReference<Exception>(null);
@Override
@@ -46,7 +46,7 @@ public class AcknowledgeOnMessageTest extends AcknowledgeTest implements Message
@Override
public void init(boolean transacted, int mode) throws Exception
{
- _receviedAll = new CountDownLatch(NUM_MESSAGES);
+ _receivedAll = new CountDownLatch(NUM_MESSAGES);
super.init(transacted, mode);
_consumer.setMessageListener(this);
@@ -64,26 +64,36 @@ public class AcknowledgeOnMessageTest extends AcknowledgeTest implements Message
_connection.start();
- int lastCount = (int) _receviedAll.getCount();
+ // Set the lastCount to NUM_MESSAGES, this ensures that the compare
+ // against the receviedAll count is accurate.
+ int lastCount = NUM_MESSAGES;
- boolean complete = _receviedAll.await(5000L, TimeUnit.MILLISECONDS);
+ // Wait for messages to arrive
+ boolean complete = _receivedAll.await(5000L, TimeUnit.MILLISECONDS);
+ // If the messasges haven't arrived
while (!complete)
{
- int currentCount = (int) _receviedAll.getCount();
+ // Check how many we have received
+ int currentCount = (int) _receivedAll.getCount();
// make sure we have received a message in the last cycle.
if (lastCount == currentCount)
{
+ // If we didn't receive any messages then stop.
+ // Something must have gone wrong.
+ System.err.println("Giving up waiting as we didn't receive anything.");
break;
}
// Remember the currentCount as the lastCount for the next cycle.
// so we can exit if things get locked up.
lastCount = currentCount;
- complete = _receviedAll.await(5000L, TimeUnit.MILLISECONDS);
+ // Wait again for messages to arrive.
+ complete = _receivedAll.await(5000L, TimeUnit.MILLISECONDS);
}
+ // If we failed to receive all the messages then fail the test.
if (!complete)
{
// Check to see if we ended due to an exception in the onMessage handler
@@ -95,10 +105,11 @@ public class AcknowledgeOnMessageTest extends AcknowledgeTest implements Message
}
else
{
- fail("All messages not received missing:" + _receviedAll.getCount() + "/" + NUM_MESSAGES);
+ fail("All messages not received missing:" + _receivedAll.getCount() + "/" + NUM_MESSAGES);
}
}
+ // Even if we received all the messages.
// Check to see if we ended due to an exception in the onMessage handler
Exception cause = _causeOfFailure.get();
if (cause != null)
@@ -131,7 +142,7 @@ public class AcknowledgeOnMessageTest extends AcknowledgeTest implements Message
{
try
{
- int count = NUM_MESSAGES - (int) _receviedAll.getCount();
+ int count = NUM_MESSAGES - (int) _receivedAll.getCount();
assertEquals("Incorrect message received", count, message.getIntProperty(INDEX));
@@ -144,7 +155,7 @@ public class AcknowledgeOnMessageTest extends AcknowledgeTest implements Message
doAcknowlegement(message);
- _receviedAll.countDown();
+ _receivedAll.countDown();
}
catch (Exception e)
{
@@ -162,9 +173,9 @@ public class AcknowledgeOnMessageTest extends AcknowledgeTest implements Message
{
_causeOfFailure.set(e);
// End the test.
- while (_receviedAll.getCount() != 0)
+ while (_receivedAll.getCount() != 0)
{
- _receviedAll.countDown();
+ _receivedAll.countDown();
}
}
}
diff --git a/qpid/java/test-profiles/010Excludes b/qpid/java/test-profiles/010Excludes
index 757a1e425c..454aede07e 100755
--- a/qpid/java/test-profiles/010Excludes
+++ b/qpid/java/test-profiles/010Excludes
@@ -75,9 +75,6 @@ org.apache.qpid.server.AlertingTest#*
// The C++ server has a totally different persistence mechanism
org.apache.qpid.server.store.PersistentStoreTest#*
-// QPID-1225 : Temporary remove this test until the problem has been addressed
-org.apache.qpid.server.security.acl.SimpleACLTest#testClientPublishInvalidQueueSuccess
-
// CPP Broker does not follow the same Logging convention as the Java broker
org.apache.qpid.server.logging.*
diff --git a/qpid/java/test-profiles/08StandaloneExcludes b/qpid/java/test-profiles/08StandaloneExcludes
index ee781fb80f..ed12973498 100644
--- a/qpid/java/test-profiles/08StandaloneExcludes
+++ b/qpid/java/test-profiles/08StandaloneExcludes
@@ -23,7 +23,6 @@ org.apache.qpid.test.client.failover.FailoverTest#*
// InVM Broker tests awaiting resolution of QPID-1103
org.apache.qpid.test.client.timeouts.SyncWaitDelayTest#*
org.apache.qpid.test.client.timeouts.SyncWaitTimeoutDelayTest#*
-org.apache.qpid.server.security.acl.SimpleACLTest#*
// Those tests are written against the 0.10 path
org.apache.qpid.test.unit.message.UTF8Test#*
diff --git a/qpid/java/test-profiles/Excludes b/qpid/java/test-profiles/Excludes
index aa60554c04..c9c9e91836 100644
--- a/qpid/java/test-profiles/Excludes
+++ b/qpid/java/test-profiles/Excludes
@@ -17,9 +17,6 @@ org.apache.qpid.server.logging.MemoryMessageStoreLoggingTest#testMessageStoreClo
// QPID-XXX : Test fails to start external broker due to Derby Exception.
org.apache.qpid.server.logging.DerbyMessageStoreLoggingTest#*
-// QPID-2081 :The configuration changes are now highlighting the close race condition
-org.apache.qpid.server.security.acl.SimpleACLTest#*
-
// QPID-1816 : Client Ack has not been addressed
org.apache.qpid.test.unit.ack.AcknowledgeAfterFailoverOnMessageTest#testDirtyClientAck
org.apache.qpid.test.unit.ack.AcknowledgeAfterFailoverOnMessageTest#testClientAck