diff options
author | Keith Wall <kwall@apache.org> | 2012-03-21 11:05:26 +0000 |
---|---|---|
committer | Keith Wall <kwall@apache.org> | 2012-03-21 11:05:26 +0000 |
commit | 849d717c0357e28099e763aa98af19807e927ba8 (patch) | |
tree | 8b3706f98588b99d19dd7f2fd18bffb2453b8a23 | |
parent | 7db517fa65539aeb1b841ac78cea02d5f7bd0f5d (diff) | |
download | qpid-python-849d717c0357e28099e763aa98af19807e927ba8.tar.gz |
QPID-3904: Java client should set AMQConnection#_closed flag on receipt of 0-10 connection.close
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1303360 13f79535-47bb-0310-9956-ffa450edef68
2 files changed, 19 insertions, 0 deletions
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 56ee56d178..a1a06c5547 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 @@ -327,6 +327,8 @@ public class AMQConnectionDelegate_0_10 implements AMQConnectionDelegate, Connec } } + _conn.setClosed(); + ExceptionListener listener = _conn.getExceptionListenerNoCheck(); if (listener == null) { diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/BrokerClosesClientConnectionTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/BrokerClosesClientConnectionTest.java index 6b83929258..5b3bca7033 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/BrokerClosesClientConnectionTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/BrokerClosesClientConnectionTest.java @@ -25,6 +25,7 @@ import java.util.concurrent.TimeUnit; import org.apache.qpid.AMQConnectionClosedException; import org.apache.qpid.AMQDisconnectedException; +import org.apache.qpid.client.AMQConnection; import org.apache.qpid.management.jmx.ManagedConnectionMBeanTest; import org.apache.qpid.test.utils.QpidBrokerTestCase; import org.apache.qpid.transport.ConnectionException; @@ -62,10 +63,13 @@ public class BrokerClosesClientConnectionTest extends QpidBrokerTestCase { final Class<? extends Exception> expectedLinkedException = isBroker010() ? ConnectionException.class : AMQConnectionClosedException.class; + assertConnectionOpen(); + stopBroker(); JMSException exception = _recordingExceptionListener.awaitException(10000); assertConnectionCloseWasReported(exception, expectedLinkedException); + assertConnectionClosed(); ensureCanCloseWithoutException(); } @@ -79,10 +83,13 @@ public class BrokerClosesClientConnectionTest extends QpidBrokerTestCase return; } + assertConnectionOpen(); + killBroker(); JMSException exception = _recordingExceptionListener.awaitException(10000); assertConnectionCloseWasReported(exception, expectedLinkedException); + assertConnectionClosed(); ensureCanCloseWithoutException(); } @@ -107,6 +114,16 @@ public class BrokerClosesClientConnectionTest extends QpidBrokerTestCase assertEquals("Unexpected linked exception", linkedExceptionClass, exception.getLinkedException().getClass()); } + private void assertConnectionClosed() + { + assertTrue("Connection should be marked as closed", ((AMQConnection)_connection).isClosed()); + } + + private void assertConnectionOpen() + { + assertFalse("Connection should not be marked as closed", ((AMQConnection)_connection).isClosed()); + } + private final class RecordingExceptionListener implements ExceptionListener { private final CountDownLatch _exceptionReceivedLatch = new CountDownLatch(1); |