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 2018/03/22 11:41:41 UTC
[2/2] qpid-jms git commit: QPIDJMS-365: add the new test back again
QPIDJMS-365: add the new test back again
Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/b37200f4
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/b37200f4
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/b37200f4
Branch: refs/heads/master
Commit: b37200f45cdbfdf541ddd7221696f1ffe28a73cd
Parents: 610ffe2
Author: Robbie Gemmell <ro...@apache.org>
Authored: Thu Mar 22 11:37:09 2018 +0000
Committer: Robbie Gemmell <ro...@apache.org>
Committed: Thu Mar 22 11:37:09 2018 +0000
----------------------------------------------------------------------
.../failover/FailoverIntegrationTest.java | 80 ++++++++++++++++++++
1 file changed, 80 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/b37200f4/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 69e472c..2f8776b 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
@@ -16,7 +16,11 @@
*/
package org.apache.qpid.jms.provider.failover;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.both;
import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.greaterThanOrEqualTo;
+import static org.hamcrest.Matchers.lessThanOrEqualTo;
import static org.hamcrest.Matchers.notNullValue;
import static org.hamcrest.Matchers.nullValue;
import static org.junit.Assert.assertEquals;
@@ -156,6 +160,82 @@ public class FailoverIntegrationTest extends QpidJmsTestCase {
}
@Test(timeout = 20000)
+ public void testFailoverHandlesDropThenRejectionCloseAfterConnect() throws Exception {
+ try (TestAmqpPeer originalPeer = new TestAmqpPeer();
+ TestAmqpPeer rejectingPeer = new TestAmqpPeer();
+ TestAmqpPeer finalPeer = new TestAmqpPeer();) {
+
+ final CountDownLatch originalConnected = new CountDownLatch(1);
+ final CountDownLatch finalConnected = new CountDownLatch(1);
+
+ // Create a peer to connect to, one to fail to reconnect to, and a final one to reconnect to
+ final String originalURI = createPeerURI(originalPeer);
+ final String rejectingURI = createPeerURI(rejectingPeer);
+ final String finalURI = createPeerURI(finalPeer);
+
+ LOG.info("Original peer is at: {}", originalURI);
+ LOG.info("Rejecting peer is at: {}", rejectingURI);
+ LOG.info("Final peer is at: {}", finalURI);
+
+ // Connect to the first
+ originalPeer.expectSaslAnonymous();
+ originalPeer.expectOpen();
+ originalPeer.expectBegin();
+
+ long ird = 0;
+ long rd = 2000;
+ long start = System.currentTimeMillis();
+
+ final JmsConnection connection = establishAnonymousConnecton("failover.initialReconnectDelay=" + ird + "&failover.reconnectDelay=" + rd + "&failover.maxReconnectAttempts=10", originalPeer, rejectingPeer, finalPeer);
+ connection.addConnectionListener(new JmsDefaultConnectionListener() {
+ @Override
+ public void onConnectionEstablished(URI remoteURI) {
+ LOG.info("Connection Established: {}", remoteURI);
+ if (originalURI.equals(remoteURI.toString())) {
+ originalConnected.countDown();
+ }
+ }
+
+ @Override
+ public void onConnectionRestored(URI remoteURI) {
+ LOG.info("Connection Restored: {}", remoteURI);
+ if (finalURI.equals(remoteURI.toString())) {
+ finalConnected.countDown();
+ }
+ }
+ });
+ connection.start();
+
+ assertTrue("Should connect to original peer", originalConnected.await(5, TimeUnit.SECONDS));
+ assertEquals("should not yet have connected to final peer", 1L, finalConnected.getCount());
+
+ // Set expectations on rejecting and final peer
+ rejectingPeer.rejectConnect(AmqpError.NOT_FOUND, "Resource could not be located", null);
+
+ finalPeer.expectSaslAnonymous();
+ finalPeer.expectOpen();
+ finalPeer.expectBegin();
+
+ // Close the original peer and wait for things to shake out.
+ originalPeer.close();
+
+ rejectingPeer.waitForAllHandlersToComplete(2000);
+
+ assertTrue("Should connect to final peer", finalConnected.await(5, TimeUnit.SECONDS));
+ long end = System.currentTimeMillis();
+
+ long margin = 2000;
+ assertThat("Elapsed time outwith expected range for reconnect", end - start,
+ both(greaterThanOrEqualTo(ird + rd)).and(lessThanOrEqualTo(ird + rd + margin)));
+
+ // Shut it down
+ finalPeer.expectClose();
+ connection.close();
+ finalPeer.waitForAllHandlersToComplete(1000);
+ }
+ }
+
+ @Test(timeout = 20000)
public void testFailoverHandlesImmediateTransportDropAfterConnect() throws Exception {
try (TestAmqpPeer originalPeer = new TestAmqpPeer();
TestAmqpPeer rejectingPeer = new TestAmqpPeer();
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org