Repository: qpid-jms
Updated Branches:
  refs/heads/master bea9502b3 -> fc9dd8dc3


Wait for provider to go offline

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

Branch: refs/heads/master
Commit: fc9dd8dc3312902d86025733b3be7b05146f2d2c
Parents: bea9502
Author: Timothy Bish <[email protected]>
Authored: Thu Feb 12 12:21:00 2015 -0500
Committer: Timothy Bish <[email protected]>
Committed: Thu Feb 12 12:21:00 2015 -0500

----------------------------------------------------------------------
 .../FailoverProviderOfflineBehaviorTest.java    | 54 +++++++++++++++++++-
 1 file changed, 53 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/fc9dd8dc/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/failover/FailoverProviderOfflineBehaviorTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/failover/FailoverProviderOfflineBehaviorTest.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/failover/FailoverProviderOfflineBehaviorTest.java
index 8b89c5a..64ab24b 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/failover/FailoverProviderOfflineBehaviorTest.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/failover/FailoverProviderOfflineBehaviorTest.java
@@ -16,6 +16,10 @@
  */
 package org.apache.qpid.jms.provider.failover;
 
+import java.net.URI;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
 import javax.jms.MessageConsumer;
 import javax.jms.MessageProducer;
 import javax.jms.Queue;
@@ -23,8 +27,11 @@ import javax.jms.Session;
 
 import org.apache.qpid.jms.JmsConnection;
 import org.apache.qpid.jms.JmsConnectionFactory;
+import org.apache.qpid.jms.JmsConnectionListener;
+import org.apache.qpid.jms.message.JmsInboundMessageDispatch;
 import org.apache.qpid.jms.provider.mock.MockProviderContext;
 import org.junit.After;
+import org.junit.Before;
 import org.junit.Test;
 
 /**
@@ -36,8 +43,14 @@ public class FailoverProviderOfflineBehaviorTest extends 
FailoverProviderTestSup
     private final JmsConnectionFactory factory = new 
JmsConnectionFactory("failover:(mock://localhost)");
 
     private JmsConnection connection;
+    private CountDownLatch connectionInterrupted;
 
-    // TODO - Should add a wait for true connection interruption.
+    @Override
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+        connectionInterrupted = new CountDownLatch(1);
+    }
 
     @Override
     @After
@@ -49,17 +62,21 @@ public class FailoverProviderOfflineBehaviorTest extends 
FailoverProviderTestSup
     @Test(timeout=10000)
     public void testConnectionCloseDoesNotBlock() throws Exception {
         connection = (JmsConnection) factory.createConnection();
+        connection.addConnectionListener(new ConnectionInterruptionListener());
         connection.start();
         MockProviderContext.INSTANCE.shutdown();
+        connectionInterrupted.await(9, TimeUnit.SECONDS);
         connection.close();
     }
 
     @Test(timeout=10000)
     public void testSessionCloseDoesNotBlock() throws Exception {
         connection = (JmsConnection) factory.createConnection();
+        connection.addConnectionListener(new ConnectionInterruptionListener());
         connection.start();
         Session session = connection.createSession(false, 
Session.CLIENT_ACKNOWLEDGE);
         MockProviderContext.INSTANCE.shutdown();
+        connectionInterrupted.await(9, TimeUnit.SECONDS);
         session.close();
         connection.close();
     }
@@ -67,6 +84,7 @@ public class FailoverProviderOfflineBehaviorTest extends 
FailoverProviderTestSup
     @Test(timeout=10000)
     public void testProducerCloseDoesNotBlock() throws Exception {
         connection = (JmsConnection) factory.createConnection();
+        connection.addConnectionListener(new ConnectionInterruptionListener());
         connection.start();
 
         Session session = connection.createSession(false, 
Session.CLIENT_ACKNOWLEDGE);
@@ -74,6 +92,8 @@ public class FailoverProviderOfflineBehaviorTest extends 
FailoverProviderTestSup
         MessageProducer producer = session.createProducer(queue);
 
         MockProviderContext.INSTANCE.shutdown();
+        connectionInterrupted.await(9, TimeUnit.SECONDS);
+
         producer.close();
         connection.close();
     }
@@ -81,6 +101,7 @@ public class FailoverProviderOfflineBehaviorTest extends 
FailoverProviderTestSup
     @Test(timeout=10000)
     public void testConsumerCloseDoesNotBlock() throws Exception {
         connection = (JmsConnection) factory.createConnection();
+        connection.addConnectionListener(new ConnectionInterruptionListener());
         connection.start();
 
         Session session = connection.createSession(false, 
Session.CLIENT_ACKNOWLEDGE);
@@ -88,6 +109,8 @@ public class FailoverProviderOfflineBehaviorTest extends 
FailoverProviderTestSup
         MessageConsumer consumer = session.createConsumer(queue);
 
         MockProviderContext.INSTANCE.shutdown();
+        connectionInterrupted.await(9, TimeUnit.SECONDS);
+
         consumer.close();
         connection.close();
     }
@@ -95,6 +118,7 @@ public class FailoverProviderOfflineBehaviorTest extends 
FailoverProviderTestSup
     @Test(timeout=10000)
     public void testSessionCloseWithOpenResourcesDoesNotBlock() throws 
Exception {
         connection = (JmsConnection) factory.createConnection();
+        connection.addConnectionListener(new ConnectionInterruptionListener());
         connection.start();
 
         Session session = connection.createSession(false, 
Session.CLIENT_ACKNOWLEDGE);
@@ -103,6 +127,8 @@ public class FailoverProviderOfflineBehaviorTest extends 
FailoverProviderTestSup
         session.createProducer(queue);
 
         MockProviderContext.INSTANCE.shutdown();
+        connectionInterrupted.await(9, TimeUnit.SECONDS);
+
         session.close();
         connection.close();
     }
@@ -110,11 +136,37 @@ public class FailoverProviderOfflineBehaviorTest extends 
FailoverProviderTestSup
     @Test(timeout=10000)
     public void testSessionRecoverDoesNotBlock() throws Exception {
         connection = (JmsConnection) factory.createConnection();
+        connection.addConnectionListener(new ConnectionInterruptionListener());
         connection.start();
 
         Session session = connection.createSession(false, 
Session.CLIENT_ACKNOWLEDGE);
         MockProviderContext.INSTANCE.shutdown();
+        connectionInterrupted.await(9, TimeUnit.SECONDS);
+
         session.recover();
         connection.close();
     }
+
+    private class ConnectionInterruptionListener implements 
JmsConnectionListener {
+        @Override
+        public void onConnectionInterrupted(URI remoteURI) {
+            connectionInterrupted.countDown();
+        }
+
+        @Override
+        public void onConnectionEstablished(URI remoteURI) {
+        }
+
+        @Override
+        public void onConnectionFailure(Throwable error) {
+        }
+
+        @Override
+        public void onConnectionRestored(URI remoteURI) {
+        }
+
+        @Override
+        public void onInboundMessage(JmsInboundMessageDispatch envelope) {
+        }
+    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to