You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by tr...@apache.org on 2017/10/18 14:43:35 UTC

[13/15] qpid-dispatch git commit: DISPATCH-829 - Added a multicast-truncated test

DISPATCH-829 - Added a multicast-truncated test


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

Branch: refs/heads/master
Commit: fea60bc83210ab5ae714f346b4209f27fc807139
Parents: 83a0b70
Author: Ted Ross <tr...@redhat.com>
Authored: Wed Oct 18 09:07:19 2017 -0400
Committer: Ted Ross <tr...@redhat.com>
Committed: Wed Oct 18 09:07:19 2017 -0400

----------------------------------------------------------------------
 tests/system_tests_delivery_abort.py | 128 +++++++++++++++++++++++++++++-
 1 file changed, 126 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/fea60bc8/tests/system_tests_delivery_abort.py
----------------------------------------------------------------------
diff --git a/tests/system_tests_delivery_abort.py b/tests/system_tests_delivery_abort.py
index 55b5079..dcf763a 100644
--- a/tests/system_tests_delivery_abort.py
+++ b/tests/system_tests_delivery_abort.py
@@ -43,7 +43,7 @@ class RouterTest(TestCase):
         def router(name, connection):
 
             config = [
-                ('router', {'mode': 'interior', 'id': name}),
+                ('router', {'mode': 'interior', 'id': name, 'allowUnsettledMulticast': 'yes'}),
                 ('listener', {'port': cls.tester.get_port(), 'stripAnnotations': 'no'}),
                 ('listener', {'port': cls.tester.get_port(), 'stripAnnotations': 'no', 'role': 'route-container'}),
                 ('linkRoute', {'prefix': 'link', 'dir': 'in', 'containerId': 'LRC'}),
@@ -111,7 +111,7 @@ class RouterTest(TestCase):
         self.assertEqual(None, test.error)
 
 
-    def test_06_message_route_abort_one_router(self):
+    def test_06_message_route_abort_two_routers(self):
         test = MessageRouteAbortTest(self.routers[0].addresses[0],
                                      self.routers[1].addresses[0],
                                      "addr_06")
@@ -119,6 +119,15 @@ class RouterTest(TestCase):
         self.assertEqual(None, test.error)
 
 
+    def test_07_multicast_truncate_one_router(self):
+        test = MulticastTruncateTest(self.routers[0].addresses[0],
+                                     self.routers[0].addresses[0],
+                                     self.routers[0].addresses[0],
+                                     "multicast.addr_07")
+        test.run()
+        self.assertEqual(None, test.error)
+
+
 class Entity(object):
     def __init__(self, status_code, status_description, attrs):
         self.status_code        = status_code
@@ -461,7 +470,122 @@ class MessageRouteAbortTest(MessagingHandler):
             self.result.append(len(m.body))
             self.send()
 
+    def run(self):
+        Container(self).run()
+
+
+class MulticastTruncateTest(MessagingHandler):
+    def __init__(self, sender_host, receiver_host1, receiver_host2, address):
+        super(MulticastTruncateTest, self).__init__()
+        self.sender_host      = sender_host
+        self.receiver_host1   = receiver_host1
+        self.receiver_host2   = receiver_host2
+        self.address          = address
+
+        self.sender_conn    = None
+        self.receiver1_conn = None
+        self.receiver2_conn = None
+        self.error          = None
+        self.sender1        = None
+        self.sender2        = None
+        self.sender3        = None
+        self.receiver1      = None
+        self.receiver2      = None
+        self.streaming      = False
+        self.delivery       = None
+        self.data           = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"
+        self.long_data      = ""
+
+        self.completions     = 0
+        self.sent_stream     = 0
+        self.program         = ['Send_Short_1', 'Send_Long_Truncated', 'Send_Short_2', 'Send_Short_3']
+        self.result1         = []
+        self.result2         = []
+        self.expected_result = ['Send_Short_1', 'Aborted_Delivery', '2', '2', '2', '2', '2',
+                                '2', '2', '2', '2', '2', 'Send_Short_2', '3', '3', '3', '3',
+                                '3', '3', '3', '3', '3', '3', 'Send_Short_3']
+
+    def timeout(self):
+        self.error = "Timeout Expired - Unprocessed Ops: %r, Result1: %r, Result2: %r" % (self.program, self.result1, self.result2)
+        self.sender_conn.close()
+        self.receiver1_conn.close()
+        self.receiver2_conn.close()
+
+    def on_start(self, event):
+        self.timer          = event.reactor.schedule(10.0, Timeout(self))
+        self.sender_conn    = event.container.connect(self.sender_host)
+        self.receiver1_conn = event.container.connect(self.receiver_host1)
+        self.receiver2_conn = event.container.connect(self.receiver_host2)
+        self.sender1        = event.container.create_sender(self.sender_conn, self.address, name="S1")
+        self.sender2        = event.container.create_sender(self.sender_conn, self.address, name="S2")
+        self.sender3        = event.container.create_sender(self.sender_conn, self.address, name="S3")
+        self.receiver1      = event.container.create_receiver(self.receiver1_conn, self.address)
+        self.receiver2      = event.container.create_receiver(self.receiver2_conn, self.address)
+
+    def stream(self):
+        self.sender1.stream(self.long_data)
+        self.sent_stream += len(self.long_data)
+        if self.sent_stream >= 100000:
+            self.streaming = False
+            self.sender1.close()
+            self.send()
+
+    def send(self):
+        if self.streaming:
+            self.stream()
+            return
+        next_op = self.program.pop(0) if len(self.program) > 0 else None
+        if next_op == 'Send_Short_1':
+            m = Message(body="%s" % next_op)
+            self.sender1.send(m)
+        elif next_op == 'Send_Long_Truncated':
+            for i in range(100):
+                self.long_data += self.data
+            self.delivery  = self.sender1.delivery(self.sender1.delivery_tag())
+            self.streaming = True
+            self.stream()
+        elif next_op == 'Send_Short_2':
+            m = Message(body="2")
+            for i in range(10):
+                self.sender2.send(m)
+            m = Message(body="Send_Short_2")
+            self.sender2.send(m)
+            self.sender2.close()
+        elif next_op == 'Send_Short_3':
+            m = Message(body="3")
+            for i in range(10):
+                self.sender3.send(m)
+            m = Message(body="%s" % next_op)
+            self.sender3.send(m)
+            self.sender_conn.close()
+
+    def on_sendable(self, event):
+        self.send()
+
+    def on_message(self, event):
+        m = event.message
+        if event.receiver == self.receiver1:
+            self.result1.append(m.body)
+        elif event.receiver == self.receiver2:
+            self.result2.append(m.body)
+        if m.body == 'Send_Short_1':
+            self.send()
+        elif m.body == 'Send_Short_2':
+            self.send()
+        elif m.body == 'Send_Short_3':
+            self.completions += 1
+            if self.completions == 2:
+                if self.result1 != self.expected_result or self.result2 != self.expected_result:
+                    self.error = "Expected: %r, Actuals: %r, %r" % (self.expected_result, self.result1, self.result2)
+                self.receiver1_conn.close()
+                self.receiver2_conn.close()
+                self.timer.cancel()
+
     def on_aborted(self, event):
+        if event.receiver == self.receiver1:
+            self.result1.append('Aborted_Delivery')
+        elif event.receiver == self.receiver2:
+            self.result2.append('Aborted_Delivery')
         self.send()
 
     def run(self):


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