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]

Reply via email to