diff options
author | Gordon Sim <gsim@apache.org> | 2011-03-07 12:51:55 +0000 |
---|---|---|
committer | Gordon Sim <gsim@apache.org> | 2011-03-07 12:51:55 +0000 |
commit | 0b56133104ed919ede25589d5c0a9f5b9730af86 (patch) | |
tree | 179542505fe269d7ede7536af1f7e5c3d7e46c72 /tests | |
parent | 5ae1e84756176fe8c7ef95141aa23b3effb86d3e (diff) | |
download | qpid-python-0b56133104ed919ede25589d5c0a9f5b9730af86.tar.gz |
QPID-3120: Consult alternate exchange on reroute if needed
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1078763 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'tests')
-rw-r--r-- | tests/src/py/qpid_tests/broker_0_10/management.py | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/tests/src/py/qpid_tests/broker_0_10/management.py b/tests/src/py/qpid_tests/broker_0_10/management.py index b0d7ca5f52..952878e0b7 100644 --- a/tests/src/py/qpid_tests/broker_0_10/management.py +++ b/tests/src/py/qpid_tests/broker_0_10/management.py @@ -341,7 +341,40 @@ class ManagementTest (TestBase010): self.assertEqual(result.status, 0) pq.update() self.assertEqual(pq.msgDepth,20) - + + def test_reroute_alternate_exchange(self): + """ + Test that when rerouting, the alternate-exchange is considered if relevant + """ + self.startQmf() + session = self.session + # 1. Create 2 exchanges A and B (fanout) where B is the + # alternate exchange for A + session.exchange_declare(exchange="B", type="fanout") + session.exchange_declare(exchange="A", type="fanout", alternate_exchange="B") + + # 2. Bind queue X to B + session.queue_declare(queue="X", exclusive=True, auto_delete=True) + session.exchange_bind(queue="X", exchange="B") + + # 3. Send 1 message to queue Y + session.queue_declare(queue="Y", exclusive=True, auto_delete=True) + props = session.delivery_properties(routing_key="Y") + session.message_transfer(message=Message(props, "reroute me!")) + + # 4. Call reroute on queue Y and specify that messages should + # be sent to exchange A + y = self.qmf.getObjects(_class="queue", name="Y")[0] + result = y.reroute(1, False, "A") + self.assertEqual(result.status, 0) + + # 5. verify that the message is rerouted through B (as A has + # no matching bindings) to X + self.subscribe(destination="x", queue="X") + self.assertEqual("reroute me!", session.incoming("x").get(timeout=1).body) + + # Cleanup + for e in ["A", "B"]: session.exchange_delete(exchange=e) def test_methods_async (self): """ |