You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2017/02/15 12:33:27 UTC

qpid-jms git commit: QPIDJMS-265: add test verifying the client attempts reconnection when receiving remote closure with connection-forced error

Repository: qpid-jms
Updated Branches:
  refs/heads/master e034731fc -> e343dd054


QPIDJMS-265: add test verifying the client attempts reconnection when receiving remote closure with connection-forced error


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

Branch: refs/heads/master
Commit: e343dd05482e784ceec573c47fe4d4b30e5c2f9a
Parents: e034731
Author: Robert Gemmell <ro...@apache.org>
Authored: Wed Feb 15 12:23:34 2017 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Wed Feb 15 12:23:34 2017 +0000

----------------------------------------------------------------------
 .../failover/FailoverIntegrationTest.java       | 53 ++++++++++++++++++++
 1 file changed, 53 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/e343dd05/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/failover/FailoverIntegrationTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/failover/FailoverIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/failover/FailoverIntegrationTest.java
index 008670c..8174eea 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/failover/FailoverIntegrationTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/failover/FailoverIntegrationTest.java
@@ -57,6 +57,7 @@ import org.apache.qpid.jms.policy.JmsDefaultPrefetchPolicy;
 import org.apache.qpid.jms.test.QpidJmsTestCase;
 import org.apache.qpid.jms.test.testpeer.TestAmqpPeer;
 import org.apache.qpid.jms.test.testpeer.basictypes.AmqpError;
+import org.apache.qpid.jms.test.testpeer.basictypes.ConnectionError;
 import org.apache.qpid.jms.test.testpeer.basictypes.TerminusDurability;
 import org.apache.qpid.jms.test.testpeer.describedtypes.Accepted;
 import org.apache.qpid.jms.test.testpeer.describedtypes.Rejected;
@@ -221,6 +222,58 @@ public class FailoverIntegrationTest extends QpidJmsTestCase {
     }
 
     @Test(timeout = 20000)
+    public void testFailoverHandlesRemotelyEndConnectionForced() throws Exception {
+        try (TestAmqpPeer forcingPeer = new TestAmqpPeer();
+             TestAmqpPeer backupPeer = new TestAmqpPeer();) {
+
+            final String forcingPeerURI = createPeerURI(forcingPeer);
+            final String backupPeerURI = createPeerURI(backupPeer);
+            LOG.info("Primary is at {}: Backup peer is at: {}", forcingPeerURI, backupPeerURI);
+
+            final CountDownLatch connectedToPrimary = new CountDownLatch(1);
+            final CountDownLatch connectedToBackup = new CountDownLatch(1);
+
+            forcingPeer.expectSaslAnonymous();
+            forcingPeer.expectOpen();
+            forcingPeer.expectBegin();
+            forcingPeer.remotelyCloseConnection(true, ConnectionError.CONNECTION_FORCED, "Server is going away", 10);
+
+            backupPeer.expectSaslAnonymous();
+            backupPeer.expectOpen();
+            backupPeer.expectBegin();
+
+            final JmsConnection connection = establishAnonymousConnecton(forcingPeer, backupPeer);
+            connection.addConnectionListener(new JmsDefaultConnectionListener() {
+                @Override
+                public void onConnectionEstablished(URI remoteURI) {
+                    LOG.info("Connection Established: {}", remoteURI);
+                    if (remoteURI.toString().equals(forcingPeerURI)) {
+                        connectedToPrimary.countDown();
+                    }
+                }
+
+                @Override
+                public void onConnectionRestored(URI remoteURI) {
+                    LOG.info("Connection Reestablished: {}", remoteURI);
+                    if (remoteURI.toString().equals(backupPeerURI)) {
+                        connectedToBackup.countDown();
+                    }
+                }
+            });
+            connection.start();
+
+            forcingPeer.waitForAllHandlersToComplete(3000);
+
+            assertTrue("Should connect to primary peer", connectedToPrimary.await(5, TimeUnit.SECONDS));
+            assertTrue("Should connect to backup peer", connectedToBackup.await(5, TimeUnit.SECONDS));
+
+            backupPeer.expectClose();
+            connection.close();
+            backupPeer.waitForAllHandlersToComplete(1000);
+        }
+    }
+
+    @Test(timeout = 20000)
     public void testFailoverHandlesTransportDropBeforeDispositionRecieived() throws Exception {
         try (TestAmqpPeer originalPeer = new TestAmqpPeer();
              TestAmqpPeer finalPeer = new TestAmqpPeer();) {


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