Author: tross
Date: Thu Sep  5 21:46:14 2013
New Revision: 1520435

URL: http://svn.apache.org/r1520435
Log:
QPID-5068 - Beefed up the the annotation test and fixed an additional exposed 
bug.

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

Modified: qpid/trunk/qpid/extras/dispatch/src/router_node.c
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/extras/dispatch/src/router_node.c?rev=1520435&r1=1520434&r2=1520435&view=diff
==============================================================================
--- qpid/trunk/qpid/extras/dispatch/src/router_node.c (original)
+++ qpid/trunk/qpid/extras/dispatch/src/router_node.c Thu Sep  5 21:46:14 2013
@@ -286,12 +286,15 @@ static void router_annotate_message(dx_r
     }
 
     //
-    // If there is no ingress field, annotate the ingress as this router
+    // If there is no ingress field, annotate the ingress as this router else
+    // keep the original field.
     //
-    if (!ingress) {
-        dx_compose_insert_string(out_da, "qdx.ingress");
+    dx_compose_insert_string(out_da, "qdx.ingress");
+    if (ingress && dx_parse_is_scalar(ingress)) {
+        dx_field_iterator_t *iter = dx_parse_raw(ingress);
+        dx_compose_insert_string_iterator(out_da, iter);
+    } else
         dx_compose_insert_string(out_da, router->router_id);
-    }
 
     dx_compose_end_map(out_da);
 

Modified: qpid/trunk/qpid/extras/dispatch/tests/system_tests_one_router.py
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/extras/dispatch/tests/system_tests_one_router.py?rev=1520435&r1=1520434&r2=1520435&view=diff
==============================================================================
--- qpid/trunk/qpid/extras/dispatch/tests/system_tests_one_router.py (original)
+++ qpid/trunk/qpid/extras/dispatch/tests/system_tests_one_router.py Thu Sep  5 
21:46:14 2013
@@ -275,8 +275,65 @@ class RouterTest(unittest.TestCase):
     rm = Message()
 
     tm.address = addr
-    tm.instructions = {'qdx.trace' : []}
 
+
+    ##
+    ## No inbound delivery annotations
+    ##
+    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'])
+      da = rm.instructions
+      self.assertEqual(da.__class__, dict)
+      self.assertEqual(da['qdx.ingress'], 'Qpid.Dispatch.Router.A')
+      self.assertFalse('qdx.trace' in da)
+
+    ##
+    ## Pre-existing ingress
+    ##
+    tm.instructions = {'qdx.ingress': 'ingress-router'}
+    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'])
+      da = rm.instructions
+      self.assertEqual(da.__class__, dict)
+      self.assertEqual(da['qdx.ingress'], 'ingress-router')
+      self.assertFalse('qdx.trace' in da)
+
+    ##
+    ## Invalid trace type
+    ##
+    tm.instructions = {'qdx.trace' : 45}
+    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'])
+      da = rm.instructions
+      self.assertEqual(da.__class__, dict)
+      self.assertEqual(da['qdx.ingress'], 'Qpid.Dispatch.Router.A')
+      self.assertFalse('qdx.trace' in da)
+
+    ##
+    ## Empty trace
+    ##
+    tm.instructions = {'qdx.trace' : []}
     for i in range(10):
       tm.body = {'number': i}
       M1.put(tm)
@@ -291,8 +348,10 @@ class RouterTest(unittest.TestCase):
       self.assertEqual(da['qdx.ingress'], 'Qpid.Dispatch.Router.A')
       self.assertEqual(da['qdx.trace'], ['Qpid.Dispatch.Router.A'])
 
+    ##
+    ## Non-empty trace
+    ##
     tm.instructions = {'qdx.trace' : ['first.hop']}
-
     for i in range(10):
       tm.body = {'number': i}
       M1.put(tm)



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to