You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ta...@apache.org on 2016/12/12 21:57:04 UTC

qpid-jms git commit: QPIDJMS-237 Close down connection resource more reliably on failure

Repository: qpid-jms
Updated Branches:
  refs/heads/master 21f88e648 -> 4cee1c194


QPIDJMS-237 Close down connection resource more reliably on failure

On connection failure ensure that connection resources are shutdown more
quickly and reliably.  Remove the idle task if activated on connection
loss instead of waiting on close and close down the connection executor
after failure handling is complete.  Also cleans up some tests that
weren't closing their connections in order to free up resources quicker
after the test is run. 

Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/4cee1c19
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/4cee1c19
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/4cee1c19

Branch: refs/heads/master
Commit: 4cee1c194b8c25a45edde29c4a7e0648b662b2bb
Parents: 21f88e6
Author: Timothy Bish <ta...@gmail.com>
Authored: Mon Dec 12 16:56:46 2016 -0500
Committer: Timothy Bish <ta...@gmail.com>
Committed: Mon Dec 12 16:56:59 2016 -0500

----------------------------------------------------------------------
 .../java/org/apache/qpid/jms/JmsConnection.java |  5 +
 .../qpid/jms/provider/amqp/AmqpProvider.java    |  9 +-
 .../integration/ConnectionIntegrationTest.java  |  9 ++
 .../FailedConnectionsIntegrationTest.java       |  7 +-
 .../ForeignMessageIntegrationTest.java          |  9 ++
 .../integration/IdleTimeoutIntegrationTest.java |  2 +
 .../integration/JMSConsumerIntegrationTest.java |  5 +
 .../MessageExpirationIntegrationTest.java       | 12 +++
 .../jms/integration/MessageIntegrationTest.java | 97 ++++++++++++++++++++
 .../QueueBrowserIntegrationTest.java            | 26 ++++++
 10 files changed, 179 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/4cee1c19/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnection.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnection.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnection.java
index 10031a6..357cda7 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnection.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnection.java
@@ -1282,6 +1282,11 @@ public class JmsConnection implements AutoCloseable, Connection, TopicConnection
                     for (JmsConnectionListener listener : connectionListeners) {
                         listener.onConnectionFailure(ex);
                     }
+
+                    // Don't accept any more connection work but allow all pending work
+                    // to complete in order to ensure notifications are sent to any blocked
+                    // resources.
+                    executor.shutdown();
                 }
             });
         }

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/4cee1c19/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java
index fdc0489..027cc1b 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java
@@ -56,6 +56,7 @@ import org.apache.qpid.jms.provider.amqp.builders.AmqpConnectionBuilder;
 import org.apache.qpid.jms.transports.TransportFactory;
 import org.apache.qpid.jms.transports.TransportListener;
 import org.apache.qpid.jms.util.IOExceptionSupport;
+import org.apache.qpid.jms.util.ThreadPoolUtils;
 import org.apache.qpid.proton.engine.Collector;
 import org.apache.qpid.proton.engine.Connection;
 import org.apache.qpid.proton.engine.Delivery;
@@ -289,7 +290,8 @@ public class AmqpProvider implements Provider, TransportListener , AmqpResourceP
                         }
                     }
                 } finally {
-                    serializer.shutdown();
+                    ThreadPoolUtils.shutdown(serializer);
+                    //serializer.shutdown();
                 }
             }
         }
@@ -986,6 +988,11 @@ public class AmqpProvider implements Provider, TransportListener , AmqpResourceP
             connectionRequest = null;
         }
 
+        if (nextIdleTimeoutCheck != null) {
+            nextIdleTimeoutCheck.cancel(true);
+            nextIdleTimeoutCheck = null;
+        }
+
         ProviderListener listener = this.listener;
         if (listener != null) {
             listener.onConnectionFailure(IOExceptionSupport.create(ex));

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/4cee1c19/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ConnectionIntegrationTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ConnectionIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ConnectionIntegrationTest.java
index 92f0752..74fb5a3 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ConnectionIntegrationTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ConnectionIntegrationTest.java
@@ -261,6 +261,8 @@ public class ConnectionIntegrationTest extends QpidJmsTestCase {
             }
 
             testPeer.waitForAllHandlersToComplete(3000);
+
+            connection.close();
         }
     }
 
@@ -281,6 +283,8 @@ public class ConnectionIntegrationTest extends QpidJmsTestCase {
             }
 
             testPeer.waitForAllHandlersToComplete(3000);
+
+            connection.close();
         }
     }
 
@@ -404,6 +408,8 @@ public class ConnectionIntegrationTest extends QpidJmsTestCase {
             assertTrue("Connection should report failure", done.await(5, TimeUnit.SECONDS));
 
             testPeer.waitForAllHandlersToComplete(1000);
+
+            connection.close();
         }
     }
 
@@ -452,6 +458,8 @@ public class ConnectionIntegrationTest extends QpidJmsTestCase {
             assertEquals(redirectPort, redirect.getPort());
 
             testPeer.waitForAllHandlersToComplete(1000);
+
+            connection.close();
         }
     }
 
@@ -514,6 +522,7 @@ public class ConnectionIntegrationTest extends QpidJmsTestCase {
             // The test peer will throw during close if it sends anything.
             consumer.close();
             session.close();
+            connection.close();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/4cee1c19/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/FailedConnectionsIntegrationTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/FailedConnectionsIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/FailedConnectionsIntegrationTest.java
index d6fa8d3..1292352 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/FailedConnectionsIntegrationTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/FailedConnectionsIntegrationTest.java
@@ -120,14 +120,19 @@ public class FailedConnectionsIntegrationTest extends QpidJmsTestCase {
 
             testPeer.rejectConnect(AmqpError.INVALID_FIELD, "Client ID already in use", errorInfo);
 
+            Connection connection = null;
             try {
                 ConnectionFactory factory = new JmsConnectionFactory(remoteURI);
-                Connection connection = factory.createConnection();
+                connection = factory.createConnection();
                 connection.setClientID("in-use-client-id");
 
                 fail("Should have thrown InvalidClientIDException");
             } catch (InvalidClientIDException e) {
                 // Expected
+            } finally {
+                if (connection != null) {
+                    connection.close();
+                }
             }
 
             testPeer.waitForAllHandlersToComplete(1000);

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/4cee1c19/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ForeignMessageIntegrationTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ForeignMessageIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ForeignMessageIntegrationTest.java
index 41e069a..c775cba 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ForeignMessageIntegrationTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ForeignMessageIntegrationTest.java
@@ -78,6 +78,9 @@ public class ForeignMessageIntegrationTest extends QpidJmsTestCase {
             foreign.writeBytes(content);
 
             producer.send(foreign);
+
+            testPeer.expectClose();
+            connection.close();
         }
     }
 
@@ -109,6 +112,9 @@ public class ForeignMessageIntegrationTest extends QpidJmsTestCase {
 
             assertNotNull("JMSMessageID should not be null", foreign.getJMSMessageID());
 
+            testPeer.expectClose();
+            connection.close();
+
             testPeer.waitForAllHandlersToComplete(2000);
         }
     }
@@ -160,6 +166,9 @@ public class ForeignMessageIntegrationTest extends QpidJmsTestCase {
 
             assertNull("JMSMessageID should now be null", foreign.getJMSMessageID());
 
+            testPeer.expectClose();
+            connection.close();
+
             testPeer.waitForAllHandlersToComplete(2000);
         }
     }

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/4cee1c19/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/IdleTimeoutIntegrationTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/IdleTimeoutIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/IdleTimeoutIntegrationTest.java
index f5ace89..53942f2 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/IdleTimeoutIntegrationTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/IdleTimeoutIntegrationTest.java
@@ -200,6 +200,8 @@ public class IdleTimeoutIntegrationTest extends QpidJmsTestCase {
 
             assertTrue("connection didnt fail in expected timeframe", failed);
             testPeer.waitForAllHandlersToComplete(1000);
+
+            connection.close();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/4cee1c19/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/JMSConsumerIntegrationTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/JMSConsumerIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/JMSConsumerIntegrationTest.java
index adc546d..78374e0 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/JMSConsumerIntegrationTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/JMSConsumerIntegrationTest.java
@@ -174,6 +174,11 @@ public class JMSConsumerIntegrationTest extends QpidJmsTestCase {
             } catch (JMSRuntimeException jmsre) {
                 // Expected
             }
+
+            try {
+                context.close();
+            } catch (Throwable ignored) {
+            }
         }
     }
 

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/4cee1c19/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/MessageExpirationIntegrationTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/MessageExpirationIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/MessageExpirationIntegrationTest.java
index 1c3820b..16a8af9 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/MessageExpirationIntegrationTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/MessageExpirationIntegrationTest.java
@@ -101,6 +101,9 @@ public class MessageExpirationIntegrationTest extends QpidJmsTestCase {
             m = consumer.receive(10);
             assertNull("Message should not have been received", m);
 
+            testPeer.expectClose();
+            connection.close();
+
             testPeer.waitForAllHandlersToComplete(3000);
         }
     }
@@ -146,6 +149,9 @@ public class MessageExpirationIntegrationTest extends QpidJmsTestCase {
             assertTrue(m instanceof TextMessage);
             assertEquals("Unexpected message content", liveMsgContent, ((TextMessage)m).getText());
 
+            testPeer.expectClose();
+            connection.close();
+
             testPeer.waitForAllHandlersToComplete(3000);
         }
     }
@@ -208,6 +214,9 @@ public class MessageExpirationIntegrationTest extends QpidJmsTestCase {
             assertTrue("didn't get expected message", success.await(5, TimeUnit.SECONDS));
             assertFalse("There was a failure in the listener, see logs", listenerFailure.get());
 
+            testPeer.expectClose();
+            connection.close();
+
             testPeer.waitForAllHandlersToComplete(3000);
         }
     }
@@ -265,6 +274,9 @@ public class MessageExpirationIntegrationTest extends QpidJmsTestCase {
             assertTrue("didn't get expected messages", success.await(5, TimeUnit.SECONDS));
             assertFalse("There was a failure in the listener, see logs", listenerFailure.get());
 
+            testPeer.expectClose();
+            connection.close();
+
             testPeer.waitForAllHandlersToComplete(3000);
         }
     }

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/4cee1c19/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/MessageIntegrationTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/MessageIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/MessageIntegrationTest.java
index 477f21b..fa19b31 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/MessageIntegrationTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/MessageIntegrationTest.java
@@ -195,6 +195,9 @@ public class MessageIntegrationTest extends QpidJmsTestCase
 
             producer.send(message);
 
+            testPeer.expectClose();
+            connection.close();
+
             testPeer.waitForAllHandlersToComplete(1000);
         }
     }
@@ -232,6 +235,10 @@ public class MessageIntegrationTest extends QpidJmsTestCase
 
             MessageConsumer messageConsumer = session.createConsumer(queue);
             Message receivedMessage = messageConsumer.receive(3000);
+
+            testPeer.expectClose();
+            connection.close();
+
             testPeer.waitForAllHandlersToComplete(3000);
 
             assertTrue(receivedMessage.propertyExists(STRING_PROP));
@@ -305,6 +312,10 @@ public class MessageIntegrationTest extends QpidJmsTestCase
                 assertEquals(value, receivedMessage.getStringProperty(invalidPropName));
             }
 
+            testPeer.expectClose();
+            connection.close();
+
+            testPeer.waitForAllHandlersToComplete(3000);
         }
     }
 
@@ -362,6 +373,9 @@ public class MessageIntegrationTest extends QpidJmsTestCase
                 producer.send(message);
             }
 
+            testPeer.expectClose();
+            connection.close();
+
             testPeer.waitForAllHandlersToComplete(2000);
         }
     }
@@ -424,6 +438,10 @@ public class MessageIntegrationTest extends QpidJmsTestCase
 
             MessageConsumer messageConsumer = session.createConsumer(destination);
             Message receivedMessage = messageConsumer.receive(3000);
+
+            testPeer.expectClose();
+            connection.close();
+
             testPeer.waitForAllHandlersToComplete(3000);
 
             assertNotNull(receivedMessage);
@@ -469,6 +487,10 @@ public class MessageIntegrationTest extends QpidJmsTestCase
 
             MessageConsumer messageConsumer = session.createConsumer(queue);
             Message receivedMessage = messageConsumer.receive(3000);
+
+            testPeer.expectClose();
+            connection.close();
+
             testPeer.waitForAllHandlersToComplete(3000);
 
             assertNotNull(receivedMessage);
@@ -726,6 +748,11 @@ public class MessageIntegrationTest extends QpidJmsTestCase
                 assertEquals("Temporary destination name and address should be equal", destName, destAddress);
                 assertEquals("Temporary replyto name and address should be equal", replyName, replyAddress);
             }
+
+            testPeer.expectClose();
+            connection.close();
+
+            testPeer.waitForAllHandlersToComplete(1000);
         }
     }
 
@@ -869,6 +896,9 @@ public class MessageIntegrationTest extends QpidJmsTestCase
 
             producer.send(message);
 
+            testPeer.expectClose();
+            connection.close();
+
             testPeer.waitForAllHandlersToComplete(2000);
         }
     }
@@ -1003,6 +1033,11 @@ public class MessageIntegrationTest extends QpidJmsTestCase
 
             assertEquals("Unexpected name for JMSDestination", destName, recievedName);
             assertEquals("Unexpected name for JMSReplyTo", replyName, recievedReplyName);
+
+            testPeer.expectClose();
+            connection.close();
+
+            testPeer.waitForAllHandlersToComplete(1000);
         }
     }
 
@@ -1098,6 +1133,9 @@ public class MessageIntegrationTest extends QpidJmsTestCase
 
             producer.send(message);
 
+            testPeer.expectClose();
+            connection.close();
+
             testPeer.waitForAllHandlersToComplete(2000);
         }
     }
@@ -1145,6 +1183,11 @@ public class MessageIntegrationTest extends QpidJmsTestCase
             assertNotNull("JMSReplyTo should not be null", dest);
             assertTrue("Destination not of expected type: " + dest.getClass(), dest instanceof Topic);
             assertEquals(myReplyTopicAddress, ((Topic)dest).getTopicName());
+
+            testPeer.expectClose();
+            connection.close();
+
+            testPeer.waitForAllHandlersToComplete(1000);
         }
     }
 
@@ -1185,6 +1228,9 @@ public class MessageIntegrationTest extends QpidJmsTestCase
             MessageProducer producer = session.createProducer(topic);
             producer.send(message);
 
+            testPeer.expectClose();
+            connection.close();
+
             testPeer.waitForAllHandlersToComplete(2000);
         }
     }
@@ -1229,6 +1275,9 @@ public class MessageIntegrationTest extends QpidJmsTestCase
             MessageProducer producer = session.createProducer(queue);
             producer.send(message);
 
+            testPeer.expectClose();
+            connection.close();
+
             testPeer.waitForAllHandlersToComplete(2000);
         }
     }
@@ -1276,6 +1325,11 @@ public class MessageIntegrationTest extends QpidJmsTestCase
             assertNotNull("Expected Topic destination but got null", dest);
             assertTrue("Expected Topic instance but did not get one. Actual type was: " + dest.getClass().getName(), dest instanceof Topic);
             assertEquals(myTopicAddress, ((Topic)dest).getTopicName());
+
+            testPeer.expectClose();
+            connection.close();
+
+            testPeer.waitForAllHandlersToComplete(1000);
         }
     }
 
@@ -1319,6 +1373,11 @@ public class MessageIntegrationTest extends QpidJmsTestCase
             Destination dest = receivedMessage.getJMSReplyTo();
             assertTrue(dest instanceof Topic);
             assertEquals(myTopicAddress, ((Topic)dest).getTopicName());
+
+            testPeer.expectClose();
+            connection.close();
+
+            testPeer.waitForAllHandlersToComplete(1000);
         }
     }
 
@@ -1357,6 +1416,11 @@ public class MessageIntegrationTest extends QpidJmsTestCase
 
             assertNotNull(receivedMessage);
             assertEquals(0L, receivedMessage.getJMSExpiration());
+
+            testPeer.expectClose();
+            connection.close();
+
+            testPeer.waitForAllHandlersToComplete(1000);
         }
     }
 
@@ -1396,6 +1460,11 @@ public class MessageIntegrationTest extends QpidJmsTestCase
 
             assertNotNull(receivedMessage);
             assertEquals(timestamp, receivedMessage.getJMSExpiration());
+
+            testPeer.expectClose();
+            connection.close();
+
+            testPeer.waitForAllHandlersToComplete(1000);
         }
     }
 
@@ -1424,6 +1493,11 @@ public class MessageIntegrationTest extends QpidJmsTestCase
             testPeer.waitForAllHandlersToComplete(2000);
 
             assertNull(receivedMessage.getJMSMessageID());
+
+            testPeer.expectClose();
+            connection.close();
+
+            testPeer.waitForAllHandlersToComplete(1000);
         }
     }
 
@@ -1517,6 +1591,11 @@ public class MessageIntegrationTest extends QpidJmsTestCase
 
             assertEquals(expected, receivedMessage.getJMSMessageID());
             assertTrue(receivedMessage.getJMSMessageID().startsWith("ID:"));
+
+            testPeer.expectClose();
+            connection.close();
+
+            testPeer.waitForAllHandlersToComplete(1000);
         }
     }
 
@@ -1596,6 +1675,10 @@ public class MessageIntegrationTest extends QpidJmsTestCase
 
             MessageConsumer messageConsumer = session.createConsumer(queue);
             Message receivedMessage = messageConsumer.receive(3000);
+
+            testPeer.expectClose();
+            connection.close();
+
             testPeer.waitForAllHandlersToComplete(3000);
 
             assertNotNull(receivedMessage);
@@ -1718,6 +1801,9 @@ public class MessageIntegrationTest extends QpidJmsTestCase
 
             producer.send(message);
 
+            testPeer.expectClose();
+            connection.close();
+
             testPeer.waitForAllHandlersToComplete(3000);
         }
     }
@@ -1843,6 +1929,9 @@ public class MessageIntegrationTest extends QpidJmsTestCase
 
             producer.send(message);
 
+            testPeer.expectClose();
+            connection.close();
+
             testPeer.waitForAllHandlersToComplete(3000);
         }
     }
@@ -1924,6 +2013,11 @@ public class MessageIntegrationTest extends QpidJmsTestCase
             assertEquals("did not get the expected JMSXGroupID", expectedGroupId, receivedMessage.getStringProperty(JmsClientProperties.JMSXGROUPID));
             assertEquals("did not get the expected JMSXGroupSeq", expectedGroupSeq, receivedMessage.getIntProperty(JmsClientProperties.JMSXGROUPSEQ));
             assertEquals("did not get the expected JMS_AMQP_REPLY_TO_GROUP_ID", expectedReplyToGroupId, receivedMessage.getStringProperty(AmqpMessageSupport.JMS_AMQP_REPLY_TO_GROUP_ID));
+
+            testPeer.expectClose();
+            connection.close();
+
+            testPeer.waitForAllHandlersToComplete(1000);
         }
     }
 
@@ -1972,6 +2066,9 @@ public class MessageIntegrationTest extends QpidJmsTestCase
 
             producer.send(message);
 
+            testPeer.expectClose();
+            connection.close();
+
             testPeer.waitForAllHandlersToComplete(1000);
         }
     }

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/4cee1c19/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/QueueBrowserIntegrationTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/QueueBrowserIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/QueueBrowserIntegrationTest.java
index f0726f9..3809454 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/QueueBrowserIntegrationTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/QueueBrowserIntegrationTest.java
@@ -61,6 +61,7 @@ public class QueueBrowserIntegrationTest extends QpidJmsTestCase {
 
             testPeer.expectBegin();
             testPeer.expectEnd();
+            testPeer.expectClose();
 
             Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
             Queue queue = session.createQueue("myQueue");
@@ -70,6 +71,7 @@ public class QueueBrowserIntegrationTest extends QpidJmsTestCase {
             browser.close();
 
             session.close();
+            connection.close();
 
             testPeer.waitForAllHandlersToComplete(3000);
         }
@@ -97,6 +99,9 @@ public class QueueBrowserIntegrationTest extends QpidJmsTestCase {
 
             browser.close();
 
+            testPeer.expectClose();
+            connection.close();
+
             testPeer.waitForAllHandlersToComplete(3000);
         }
     }
@@ -136,6 +141,9 @@ public class QueueBrowserIntegrationTest extends QpidJmsTestCase {
 
             browser.close();
 
+            testPeer.expectClose();
+            connection.close();
+
             testPeer.waitForAllHandlersToComplete(3000);
         }
     }
@@ -171,6 +179,9 @@ public class QueueBrowserIntegrationTest extends QpidJmsTestCase {
 
             browser.close();
 
+            testPeer.expectClose();
+            connection.close();
+
             testPeer.waitForAllHandlersToComplete(3000);
         }
     }
@@ -208,6 +219,9 @@ public class QueueBrowserIntegrationTest extends QpidJmsTestCase {
 
             browser.close();
 
+            testPeer.expectClose();
+            connection.close();
+
             testPeer.waitForAllHandlersToComplete(3000);
         }
     }
@@ -246,6 +260,9 @@ public class QueueBrowserIntegrationTest extends QpidJmsTestCase {
             testPeer.expectEnd();
             session.close();
 
+            testPeer.expectClose();
+            connection.close();
+
             testPeer.waitForAllHandlersToComplete(3000);
         }
     }
@@ -319,6 +336,9 @@ public class QueueBrowserIntegrationTest extends QpidJmsTestCase {
 
             browser.close();
 
+            testPeer.expectClose();
+            connection.close();
+
             testPeer.waitForAllHandlersToComplete(3000);
         }
     }
@@ -346,6 +366,9 @@ public class QueueBrowserIntegrationTest extends QpidJmsTestCase {
 
             browser.close();
 
+            testPeer.expectClose();
+            connection.close();
+
             testPeer.waitForAllHandlersToComplete(3000);
         }
     }
@@ -388,6 +411,9 @@ public class QueueBrowserIntegrationTest extends QpidJmsTestCase {
 
             browser.close();
 
+            testPeer.expectClose();
+            connection.close();
+
             testPeer.waitForAllHandlersToComplete(3000);
         }
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org