diff options
| author | Ted Ross <tross@apache.org> | 2013-09-05 21:46:14 +0000 |
|---|---|---|
| committer | Ted Ross <tross@apache.org> | 2013-09-05 21:46:14 +0000 |
| commit | 3b6c1b687d371e036f41419cbb51a5127c1ffded (patch) | |
| tree | 3119c3578a102e9e8da759c0c09ed49419126ee1 | |
| parent | f57e0169b389ce053e23c3ae75606b1220411926 (diff) | |
| download | qpid-python-3b6c1b687d371e036f41419cbb51a5127c1ffded.tar.gz | |
QPID-5068 - Beefed up the the annotation test and fixed an additional exposed bug.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1520435 13f79535-47bb-0310-9956-ffa450edef68
| -rw-r--r-- | qpid/extras/dispatch/src/router_node.c | 11 | ||||
| -rw-r--r-- | qpid/extras/dispatch/tests/system_tests_one_router.py | 63 |
2 files changed, 68 insertions, 6 deletions
diff --git a/qpid/extras/dispatch/src/router_node.c b/qpid/extras/dispatch/src/router_node.c index 27b5c515a1..d2704c4bd5 100644 --- a/qpid/extras/dispatch/src/router_node.c +++ b/qpid/extras/dispatch/src/router_node.c @@ -286,12 +286,15 @@ static void router_annotate_message(dx_router_t *router, dx_message_t *msg) } // - // 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); diff --git a/qpid/extras/dispatch/tests/system_tests_one_router.py b/qpid/extras/dispatch/tests/system_tests_one_router.py index ee9b8a2472..a952195785 100644 --- a/qpid/extras/dispatch/tests/system_tests_one_router.py +++ b/qpid/extras/dispatch/tests/system_tests_one_router.py @@ -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) |
