while (connectionIterator.hasNext()) { RemotingConnection remotingConnection = connectionIterator.next(); remotingConnection.addCloseListener(new CloseListener() { @Override public void connectionClosed() {
@Test public void testCloseSeveralConnectionOnGC() throws Exception { Connection conn1 = cf.createConnection(); Connection conn2 = cf.createConnection(); Connection conn3 = cf.createConnection(); WeakReference<Connection> wr1 = new WeakReference<>(conn1); WeakReference<Connection> wr2 = new WeakReference<>(conn2); WeakReference<Connection> wr3 = new WeakReference<>(conn3); Assert.assertEquals(3, server.getRemotingService().getConnections().size()); final CountDownLatch latch = new CountDownLatch(3); Iterator<RemotingConnection> connectionIterator = server.getRemotingService().getConnections().iterator(); while (connectionIterator.hasNext()) { RemotingConnection remotingConnection = connectionIterator.next(); remotingConnection.addCloseListener(new CloseListener() { @Override public void connectionClosed() { latch.countDown(); } }); } conn1 = null; conn2 = null; conn3 = null; ActiveMQTestBase.checkWeakReferences(wr1, wr2, wr3); latch.await(5000, TimeUnit.MILLISECONDS); Assert.assertEquals(0, server.getRemotingService().getConnections().size()); }
@Test public void testCloseOneConnectionOnGC() throws Exception { // Debug - don't remove this until intermittent failure with this test is fixed int initialConns = server.getRemotingService().getConnections().size(); Assert.assertEquals(0, initialConns); Connection conn = cf.createConnection(); WeakReference<Connection> wr = new WeakReference<>(conn); Assert.assertEquals(1, server.getRemotingService().getConnections().size()); final CountDownLatch latch = new CountDownLatch(1); Iterator<RemotingConnection> connectionIterator = server.getRemotingService().getConnections().iterator(); connectionIterator.next().addCloseListener(new CloseListener() { @Override public void connectionClosed() { latch.countDown(); } }); conn = null; ActiveMQTestBase.checkWeakReferences(wr); latch.await(5000, TimeUnit.MILLISECONDS); Assert.assertEquals(0, server.getRemotingService().getConnections().size()); }
@Test(timeout = 60000) public void testTemporarySubscriptionDeleted() throws Exception { Connection connection = createConnection(); try { TopicSession session = (TopicSession) connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Topic topic = session.createTopic(getTopicName()); TopicSubscriber myNonDurSub = session.createSubscriber(topic); assertNotNull(myNonDurSub); Bindings bindingsForAddress = server.getPostOffice().getBindingsForAddress(new SimpleString(getTopicName())); Assert.assertEquals(2, bindingsForAddress.getBindings().size()); session.close(); final CountDownLatch latch = new CountDownLatch(1); server.getRemotingService().getConnections().iterator().next().addCloseListener(new CloseListener() { @Override public void connectionClosed() { latch.countDown(); } }); connection.close(); latch.await(5, TimeUnit.SECONDS); bindingsForAddress = server.getPostOffice().getBindingsForAddress(new SimpleString(getTopicName())); Assert.assertEquals(1, bindingsForAddress.getBindings().size()); } finally { connection.close(); } }
remotingConnection.addCloseListener(() -> closed.set(true)); remotingConnection.addFailureListener(new FailureListener() { @Override
remotingConnection.addCloseListener(new CloseListener() { @Override public void connectionClosed() {
remotingConnection.addCloseListener(cleaner); remotingConnection.addFailureListener(cleaner);