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/03/28 18:21:01 UTC

qpid-dispatch git commit: DISPATCH-947 - Modified 3 tests to not use Messenger

Repository: qpid-dispatch
Updated Branches:
  refs/heads/master a813cd363 -> 1242610d6


DISPATCH-947 - Modified 3 tests to not use Messenger


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

Branch: refs/heads/master
Commit: 1242610d6e784fd9fb86b77f812993cbd6ede22c
Parents: a813cd3
Author: Ganesh Murthy <gm...@redhat.com>
Authored: Wed Mar 28 14:20:46 2018 -0400
Committer: Ganesh Murthy <gm...@redhat.com>
Committed: Wed Mar 28 14:20:46 2018 -0400

----------------------------------------------------------------------
 tests/system_tests_one_router.py | 207 ++++++++++++++++++++--------------
 1 file changed, 125 insertions(+), 82 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/1242610d/tests/system_tests_one_router.py
----------------------------------------------------------------------
diff --git a/tests/system_tests_one_router.py b/tests/system_tests_one_router.py
index c20ccba..fc81cff 100644
--- a/tests/system_tests_one_router.py
+++ b/tests/system_tests_one_router.py
@@ -414,55 +414,9 @@ class OneRouterTest(TestCase):
         self.assertEqual(None, test.error)
 
     def test_21_semantics_closest(self):
-        addr = self.address+"/closest.1"
-        M1 = self.messenger()
-        M2 = self.messenger()
-        M3 = self.messenger()
-        M4 = self.messenger()
-
-
-        M1.start()
-        M2.start()
-        M3.start()
-        M4.start()
-
-        M2.subscribe(addr)
-        M3.subscribe(addr)
-        M4.subscribe(addr)
-
-        tm = Message()
-        rm = Message()
-
-        tm.address = addr
-        for i in range(30):
-            tm.body = {'number': i}
-            M1.put(tm)
-        M1.send()
-
-        i = 0
-        rx_set = []
-        for i in range(10):
-            M2.recv(1)
-            M2.get(rm)
-            rx_set.append(rm.body['number'])
-
-            M3.recv(1)
-            M3.get(rm)
-            rx_set.append(rm.body['number'])
-
-            M4.recv(1)
-            M4.get(rm)
-            rx_set.append(rm.body['number'])
-
-        self.assertEqual(30, len(rx_set))
-        rx_set.sort()
-        for i in range(30):
-            self.assertEqual(i, rx_set[i])
-
-        M1.stop()
-        M2.stop()
-        M3.stop()
-        M4.stop()
+        test = SemanticsClosest(self.address)
+        test.run()
+        self.assertEqual(None, test.error)
 
     def test_22_semantics_balanced(self):
         test = SemanticsBalanced(self.address)
@@ -470,39 +424,8 @@ class OneRouterTest(TestCase):
         self.assertEqual(None, test.error)
 
     def test_23_to_override(self):
-        addr = self.address+"/toov/1"
-        M1 = self.messenger()
-        M2 = self.messenger()
-
-        M1.start()
-        M2.start()
-        M2.subscribe(addr)
-
-        tm = Message()
-        rm = Message()
-
-        tm.address = addr
-
-        ##
-        ## Pre-existing TO
-        ##
-        tm.annotations = {'x-opt-qd.to': 'toov/1'}
-        for i in range(10):
-            tm.body = {'number': i}
-            M1.put(tm)
-        M1.send()
-
-        for i in range(10):
-            M2.recv(1)
-            M2.get(rm)
-            self.assertEqual(i, rm.body['number'])
-            ma = rm.annotations
-            self.assertEqual(ma.__class__, dict)
-            self.assertEqual(ma['x-opt-qd.to'], 'toov/1')
-
-        M1.stop()
-        M2.stop()
-
+        test = MessageAnnotaionsPreExistingOverride(self.address)
+        test.run()
 
     def test_24_send_settle_mode_settled(self):
         """
@@ -697,6 +620,126 @@ class OneRouterTest(TestCase):
         client.connection.close()
 
 
+class SemanticsClosest(MessagingHandler):
+    def __init__(self, address):
+        super(SemanticsClosest, self).__init__()
+        self.address = address
+        self.dest = "closest.1"
+        self.timer = None
+        self.conn = None
+        self.sender = None
+        self.receiver_a = None
+        self.receiver_b = None
+        self.receiver_c = None
+        self.num_messages = 100
+        self.n_received_a = 0
+        self.n_received_b = 0
+        self.n_received_c = 0
+        self.error = None
+        self.n_sent = 0
+        self.rx_set = []
+
+    def on_start(self, event):
+        self.timer = event.reactor.schedule(TIMEOUT, Timeout(self))
+        self.conn = event.container.connect(self.address)
+        self.sender = event.container.create_sender(self.conn, self.dest)
+        # Receiver on same router as the sender must receive all the messages. The other two
+        # receivers are on the other router
+        self.receiver_a = event.container.create_receiver(self.conn, self.dest, name="A")
+        self.receiver_b = event.container.create_receiver(self.conn, self.dest, name="B")
+        self.receiver_c = event.container.create_receiver(self.conn, self.dest, name="C")
+
+    def timeout(self):
+        self.error = "Timeout Expired: sent=%d rcvd=%d/%d/%d" % \
+                     (self.n_sent, self.n_received_a, self.n_received_b, self.n_received_c)
+        self.conn.close()
+
+    def check_if_done(self):
+        if self.n_received_a + self.n_received_b + self.n_received_c == self.num_messages\
+                and self.n_received_b != 0 and self.n_received_c != 0:
+            self.rx_set.sort()
+            #print self.rx_set
+            all_messages_received = True
+            for i in range(self.num_messages):
+                if not i == self.rx_set[i]:
+                    all_messages_received = False
+
+            if all_messages_received:
+                self.timer.cancel()
+                self.conn.close()
+
+    def on_sendable(self, event):
+        if self.n_sent < self.num_messages:
+            msg = Message(body={'number': self.n_sent})
+            self.sender.send(msg)
+            self.n_sent += 1
+
+    def on_message(self, event):
+        if event.receiver == self.receiver_a:
+            self.n_received_a += 1
+            self.rx_set.append(event.message.body['number'])
+        if event.receiver == self.receiver_b:
+            self.n_received_b += 1
+            self.rx_set.append(event.message.body['number'])
+        if event.receiver == self.receiver_c:
+            self.n_received_c += 1
+            self.rx_set.append(event.message.body['number'])
+
+    def on_accepted(self, event):
+        self.check_if_done()
+
+    def run(self):
+        Container(self).run()
+
+
+class MessageAnnotaionsPreExistingOverride(MessagingHandler):
+    def __init__(self, address):
+        super(MessageAnnotaionsPreExistingOverride, self).__init__()
+        self.address = address
+        self.dest = "toov/1"
+        self.error = "Pre-existing x-opt-qd.to has been stripped"
+        self.timer = None
+        self.conn = None
+        self.sender = None
+        self.receiver = None
+        self.msg_not_sent = True
+
+    def on_start(self, event):
+        self.timer = event.reactor.schedule(TIMEOUT, Timeout(self))
+        self.conn = event.container.connect(self.address)
+        self.sender = event.container.create_sender(self.conn, self.dest)
+        self.receiver = event.container.create_receiver(self.conn, self.dest)
+
+    def timeout(self):
+        self.error = "Timeout Expired: Sent message not received"
+        self.conn.close()
+
+    def bail(self, message):
+        self.error = message
+        self.conn.close()
+        self.timer.cancel()
+
+    def on_sendable(self, event):
+        if self.msg_not_sent:
+            msg = Message(body={'number': 0})
+            msg.annotations = {'x-opt-qd.to': 'toov/1'}
+            event.sender.send(msg)
+            self.msg_not_sent = False
+
+    def on_message(self, event):
+        if 0 == event.message.body['number']:
+            ma = event.message.annotations
+            if ma['x-opt-qd.to'] == 'toov/1':
+                self.bail(None)
+            else:
+                self.bail("Pre-existing x-opt-qd.to has been stripped")
+        else:
+            self.bail("body does not match with the sent message body")
+
+    def run(self):
+        Container(self).run()
+
+
 class SemanticsMulticast(MessagingHandler):
     def __init__(self, address):
         super(SemanticsMulticast, self).__init__()


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