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]