You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gm...@apache.org on 2018/09/10 17:46:17 UTC

qpid-dispatch git commit: DISPATCH-1090 - Augmented drain test to reopen receiver and making sure the drained sender was re-issued credit this being able to send to the receiver

Repository: qpid-dispatch
Updated Branches:
  refs/heads/master 0716719b9 -> 03ba19e65


DISPATCH-1090 - Augmented drain test to reopen receiver and making sure the drained sender was re-issued credit this being  able to send to the receiver


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

Branch: refs/heads/master
Commit: 03ba19e6534a7779970c59c4c9fb2f9ee6e3a2c8
Parents: 0716719
Author: Ganesh Murthy <gm...@redhat.com>
Authored: Mon Sep 10 13:46:03 2018 -0400
Committer: Ganesh Murthy <gm...@redhat.com>
Committed: Mon Sep 10 13:46:03 2018 -0400

----------------------------------------------------------------------
 tests/system_tests_drain.py | 47 +++++++++++++++++++++++++++++++++++-----
 1 file changed, 42 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/03ba19e6/tests/system_tests_drain.py
----------------------------------------------------------------------
diff --git a/tests/system_tests_drain.py b/tests/system_tests_drain.py
index bdc56ed..da4f8e9 100644
--- a/tests/system_tests_drain.py
+++ b/tests/system_tests_drain.py
@@ -147,6 +147,10 @@ class ReceiverDropsOffSenderDrain(MessagingHandler):
         self.receiver_closed = False
         self.drained = 0
         self.expected_drained = 249
+        self.sender_drained = False
+
+        # Second receiver link opened.
+        self.sec_recv_link_opened = False
 
     def timeout(self):
         if not self.error:
@@ -175,8 +179,31 @@ class ReceiverDropsOffSenderDrain(MessagingHandler):
     def on_message(self, event):
         # As soon as the receiver receives the message, close the receiver
         if event.receiver == self.receiver:
-            self.receiver.close()
-            self.receiver_closed = True
+            if self.sec_recv_link_opened and self.sender_drained:
+
+                # Make sure this is the same message body that was
+                # sent by the newly created receiver
+                if event.message.body[u'number'] == 3:
+                    self.receiver.close()
+                    self.error = None
+                    self.sender_conn.close()
+                    self.receiver_conn.close()
+            else:
+                self.receiver.close()
+                self.receiver_closed = True
+
+    def on_link_opened(self, event):
+        if self.sender_drained:
+            if event.receiver == self.receiver:
+                self.sec_recv_link_opened = True
+
+                if self.num_msgs < 3:
+                    # Send a message after the sender has been drained
+                    # and a new receiver has been created
+                    # and make sure that the message has reached the receiver
+                    self.num_msgs += 1
+                    msg = Message(body={'number': 3})
+                    self.sender.send(msg)
 
     def on_link_closed(self, event):
         if event.receiver == self.receiver:
@@ -185,6 +212,7 @@ class ReceiverDropsOffSenderDrain(MessagingHandler):
             # this point. The router will receive this message and see that
             # there are no receivers and it will send a drain to the sender
             # This test will not work without the fix for DISPATCH-1090
+            self.num_msgs += 1
             msg = Message(body={'number': 2})
             self.sender.send(msg)
 
@@ -193,9 +221,18 @@ class ReceiverDropsOffSenderDrain(MessagingHandler):
             if event.sender:
                 self.drained = event.sender.drained()
                 if self.drained == self.expected_drained:
-                    self.error = None
-                    self.sender_conn.close()
-                    self.receiver_conn.close()
+                    # The sender has been drained. Now create another receiver
+                    # to the same address as the sender
+                    # and use the sender to send a message to see
+                    # if flow is re-issued by the router to the sender and if
+                    # the message reaches this newly created receiver
+                    self.sender_drained = True
+
+                    # Create a new receiver
+                    self.receiver = event.container.create_receiver(
+                        self.receiver_conn,
+                        self.dest,
+                        name="A")
 
     def run(self):
         Container(self).run()


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