This is an automated email from the ASF dual-hosted git repository.
tabish pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/qpid-protonj2.git
The following commit(s) were added to refs/heads/main by this push:
new de30aa0 Add sender recovery test when reconnection fails before
attach response
de30aa0 is described below
commit de30aa09105cd22e6732b91340efc643389ce294
Author: Timothy Bish <[email protected]>
AuthorDate: Tue Apr 27 18:34:42 2021 -0400
Add sender recovery test when reconnection fails before attach response
Tests that senders are recovered after reconnection with a reconnection
failure during recovery
---
.../protonj2/client/impl/ReconnectSenderTest.java | 60 ++++++++++++++++++++++
1 file changed, 60 insertions(+)
diff --git
a/protonj2-client/src/test/java/org/apache/qpid/protonj2/client/impl/ReconnectSenderTest.java
b/protonj2-client/src/test/java/org/apache/qpid/protonj2/client/impl/ReconnectSenderTest.java
index 18afaaa..6c37c3b 100644
---
a/protonj2-client/src/test/java/org/apache/qpid/protonj2/client/impl/ReconnectSenderTest.java
+++
b/protonj2-client/src/test/java/org/apache/qpid/protonj2/client/impl/ReconnectSenderTest.java
@@ -293,4 +293,64 @@ class ReconnectSenderTest extends ImperativeClientTestCase
{
finalPeer.waitForScriptToComplete();
}
}
+
+ @Test
+ public void
testMultipleSenderCreationRecoversAfterDropWithNoAttachResponse() throws
Exception {
+ try (ProtonTestServer firstPeer = new ProtonTestServer();
+ ProtonTestServer intermediatePeer = new ProtonTestServer();
+ ProtonTestServer finalPeer = new ProtonTestServer()) {
+
+ firstPeer.expectSASLAnonymousConnect();
+ firstPeer.expectOpen().respond();
+ firstPeer.expectBegin().respond();
+ firstPeer.expectAttach().ofSender().respond();
+ firstPeer.expectAttach().ofSender();
+ firstPeer.dropAfterLastHandler(20);
+ firstPeer.start();
+
+ intermediatePeer.expectSASLAnonymousConnect();
+ intermediatePeer.expectOpen().respond();
+ intermediatePeer.expectBegin().respond();
+ intermediatePeer.expectAttach().ofSender();
+ intermediatePeer.dropAfterLastHandler();
+ intermediatePeer.start();
+
+ finalPeer.expectSASLAnonymousConnect();
+ finalPeer.expectOpen().respond();
+ finalPeer.expectBegin().respond();
+ finalPeer.expectAttach().ofSender().respond();
+ finalPeer.expectAttach().ofSender().respond();
+ finalPeer.expectClose().respond();
+ finalPeer.start();
+
+ final URI primaryURI = firstPeer.getServerURI();
+ final URI intermediateURI = intermediatePeer.getServerURI();
+ final URI backupURI = finalPeer.getServerURI();
+
+ ConnectionOptions options = new ConnectionOptions();
+ options.reconnectOptions().reconnectEnabled(true);
+
options.reconnectOptions().addReconnectLocation(intermediateURI.getHost(),
intermediateURI.getPort());
+
options.reconnectOptions().addReconnectLocation(backupURI.getHost(),
backupURI.getPort());
+
+ Client container = Client.create();
+ Connection connection = container.connect(primaryURI.getHost(),
primaryURI.getPort(), options);
+ Session session = connection.openSession();
+
+ Sender sender1 = session.openSender("queue-1");
+ Sender sender2 = session.openSender("queue-2");
+
+ firstPeer.waitForScriptToComplete();
+
+ // Await both being open before doing work to make the outcome
predictable
+ sender1.openFuture().get();
+ sender2.openFuture().get();
+
+ assertNull(sender1.trySend(Message.create("test")));
+ assertNull(sender2.trySend(Message.create("test")));
+
+ connection.close();
+
+ finalPeer.waitForScriptToComplete(1000);
+ }
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]