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/23 20:09:53 UTC

qpid-dispatch git commit: DISPATCH-947 - Modified an additional test - test_04_management - to use proton reactor instead of Messenger

Repository: qpid-dispatch
Updated Branches:
  refs/heads/master f790e9975 -> ce04365d5


DISPATCH-947 - Modified an additional test - test_04_management - to use proton reactor instead of 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/ce04365d
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/ce04365d
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/ce04365d

Branch: refs/heads/master
Commit: ce04365d531ded52b56c66e2c658e6d84f18ccb3
Parents: f790e99
Author: Ganesh Murthy <gm...@redhat.com>
Authored: Fri Mar 23 16:09:27 2018 -0400
Committer: Ganesh Murthy <gm...@redhat.com>
Committed: Fri Mar 23 16:09:27 2018 -0400

----------------------------------------------------------------------
 tests/system_tests_two_routers.py | 107 ++++++++++++++++++++++-----------
 1 file changed, 73 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/ce04365d/tests/system_tests_two_routers.py
----------------------------------------------------------------------
diff --git a/tests/system_tests_two_routers.py b/tests/system_tests_two_routers.py
index c317f9b..436dd76 100644
--- a/tests/system_tests_two_routers.py
+++ b/tests/system_tests_two_routers.py
@@ -147,40 +147,9 @@ class TwoRouterTest(TestCase):
         self.assertEqual(None, test.error)
 
     def test_04_management(self):
-        M = self.messenger()
-        M.start()
-        M.route("amqp:/*", self.routers[0].addresses[0]+"/$1")
-        sub = M.subscribe("amqp:/#")
-        reply = sub.address
-
-        request  = Message()
-        response = Message()
-
-        request.address    = "amqp:/_local/$management"
-        request.reply_to   = reply
-        request.properties = {u'type':u'org.amqp.management', u'name':u'self', u'operation':u'GET-MGMT-NODES'}
-
-        M.put(request)
-        M.send()
-        M.recv()
-        M.get(response)
-
-        assert response.properties['statusCode'] == 200, response.properties['statusDescription']
-        self.assertIn('amqp:/_topo/0/QDR.B/$management', response.body)
-
-        request.address    = "amqp:/_topo/0/QDR.B/$management"
-        request.reply_to   = reply
-        request.properties = {u'type':u'org.amqp.management', u'name':u'self', u'operation':u'GET-MGMT-NODES'}
-
-        M.put(request)
-        M.send()
-        M.recv()
-        M.get(response)
-
-        self.assertEqual(response.properties['statusCode'], 200)
-        self.assertTrue('amqp:/_topo/0/QDR.A/$management' in response.body)
-
-        M.stop()
+        test = ManagementTest(self.routers[0].addresses[0])
+        test.run()
+        self.assertEqual(None, test.error)
 
     def test_05_semantics_multicast(self):
         addr = "amqp:/multicast.1"
@@ -984,6 +953,76 @@ class MessageAnnotationsStripTest(MessagingHandler):
         Container(self).run()
 
 
+class ManagementTest(MessagingHandler):
+    def __init__(self, address):
+        super(ManagementTest, self).__init__()
+        self.address = address
+        self.dest = "strip_message_annotations_in/1"
+        self.timer = None
+        self.conn = None
+        self.sender = None
+        self.receiver = None
+        self.sent_count = 0
+        self.msg_not_sent = True
+        self.error = None
+        self.num_messages = 0
+        self.response1 = False
+        self.response2 = False
+
+    def timeout(self):
+        if not self.response1:
+            self.error = "Incorrect response received for message with correlation id C1"
+        if not self.response1:
+            self.error = self.error + "Incorrect response received for message with correlation id C2"
+
+    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.receiver = event.container.create_receiver(self.conn, None, dynamic=True)
+
+    def on_sendable(self, event):
+        if self.num_messages < 2:
+            request = Message()
+            request.correlation_id = "C1"
+            request.address = "amqp:/_local/$management"
+            request.properties = {u'type': u'org.amqp.management', u'name': u'self', u'operation': u'GET-MGMT-NODES'}
+            request.reply_to = self.receiver.remote_source.address
+            event.sender.send(request)
+            self.num_messages += 1
+
+            request = Message()
+            request.address = "amqp:/_topo/0/QDR.B/$management"
+            request.correlation_id = "C2"
+            request.reply_to = self.receiver.remote_source.address
+            request.properties = {u'type': u'org.amqp.management', u'name': u'self', u'operation': u'GET-MGMT-NODES'}
+            event.sender.send(request)
+            self.num_messages += 1
+
+    def on_message(self, event):
+        if event.receiver == self.receiver:
+            if event.message.correlation_id == "C1":
+                if event.message.properties['statusCode'] == 200 and \
+                        event.message.properties['statusDescription'] is not None \
+                        and 'amqp:/_topo/0/QDR.B/$management' in event.message.body:
+                    self.response1 = True
+            elif event.message.correlation_id == "C2":
+                if event.message.properties['statusCode'] == 200 and \
+                        event.message.properties['statusDescription'] is not None \
+                        and 'amqp:/_topo/0/QDR.A/$management' in event.message.body:
+                    self.response2 = True
+
+        if self.response1 and self.response2:
+            self.error = None
+
+        if self.error is None:
+            self.timer.cancel()
+            self.conn.close()
+
+    def run(self):
+        Container(self).run()
+
+
 class MessageAnnotationSstripMessageAnnotationsInn(MessagingHandler):
     def __init__(self, address1, address2):
         super(MessageAnnotationSstripMessageAnnotationsInn, self).__init__()


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