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 2014/05/19 17:04:31 UTC

svn commit: r1595927 - in /qpid/dispatch/trunk: src/router_node.c tests/system_tests_one_router.py tests/system_tests_two_routers.py

Author: tross
Date: Mon May 19 15:04:31 2014
New Revision: 1595927

URL: http://svn.apache.org/r1595927
Log:
DISPATCH-1 - Fixed bug with propagation of the to field in the message-annotations.

Modified:
    qpid/dispatch/trunk/src/router_node.c
    qpid/dispatch/trunk/tests/system_tests_one_router.py
    qpid/dispatch/trunk/tests/system_tests_two_routers.py

Modified: qpid/dispatch/trunk/src/router_node.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/router_node.c?rev=1595927&r1=1595926&r2=1595927&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/router_node.c (original)
+++ qpid/dispatch/trunk/src/router_node.c Mon May 19 15:04:31 2014
@@ -447,10 +447,12 @@ static qd_field_iterator_t *router_annot
 
     qd_parsed_field_t *trace   = 0;
     qd_parsed_field_t *ingress = 0;
+    qd_parsed_field_t *to      = 0;
 
     if (in_ma) {
         trace   = qd_parse_value_by_key(in_ma, QD_MA_TRACE);
         ingress = qd_parse_value_by_key(in_ma, QD_MA_INGRESS);
+        to      = qd_parse_value_by_key(in_ma, QD_MA_TO);
     }
 
     qd_compose_start_map(out_ma);
@@ -461,6 +463,9 @@ static qd_field_iterator_t *router_annot
     if (to_override) {
         qd_compose_insert_string(out_ma, QD_MA_TO);
         qd_compose_insert_string(out_ma, to_override);
+    } else if (to) {
+        qd_compose_insert_string(out_ma, QD_MA_TO);
+        qd_compose_insert_string_iterator(out_ma, qd_parse_raw(to));
     }
 
     //

Modified: qpid/dispatch/trunk/tests/system_tests_one_router.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/system_tests_one_router.py?rev=1595927&r1=1595926&r2=1595927&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/system_tests_one_router.py (original)
+++ qpid/dispatch/trunk/tests/system_tests_one_router.py Mon May 19 15:04:31 2014
@@ -974,5 +974,40 @@ class RouterTest(unittest.TestCase):
         M4.stop()
 
 
+    def test_13_to_override(self):
+        addr = "amqp://0.0.0.0:20000/toov/1"
+        M1 = Messenger()
+        M2 = Messenger()
+
+        M1.timeout = 1.0
+        M2.timeout = 1.0
+
+        M1.start()
+        M2.start()
+        self.subscribe(M2, addr)
+
+        tm = Message()
+        rm = Message()
+
+        tm.address = addr
+
+        ##
+        ## Pre-existing ingress
+        ##
+        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')
+
+
 if __name__ == '__main__':
     unittest.main()

Modified: qpid/dispatch/trunk/tests/system_tests_two_routers.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/system_tests_two_routers.py?rev=1595927&r1=1595926&r2=1595927&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/system_tests_two_routers.py (original)
+++ qpid/dispatch/trunk/tests/system_tests_two_routers.py Mon May 19 15:04:31 2014
@@ -832,6 +832,48 @@ class RouterTest(unittest.TestCase):
         M3.stop()
         M4.stop()
 
+    def test_13_to_override(self):
+        addr = "amqp:/toov/1"
+        M1 = Messenger()
+        M2 = Messenger()
+
+        M1.route("amqp:/*", "amqp://0.0.0.0:20100/$1")
+        M2.route("amqp:/*", "amqp://0.0.0.0:20101/$1")
+
+        M1.timeout = 1.0
+        M2.timeout = 1.0
+
+        M1.start()
+        M2.start()
+        self.subscribe(M2, addr)
+        wait_for_addr(M1, "toov/1", 0, 1)
+
+        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()
+
+
 if __name__ == '__main__':
     if len(sys.argv) > 1:
         if '--ssl' in sys.argv:



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