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