summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2011-03-07 12:51:55 +0000
committerGordon Sim <gsim@apache.org>2011-03-07 12:51:55 +0000
commit0b56133104ed919ede25589d5c0a9f5b9730af86 (patch)
tree179542505fe269d7ede7536af1f7e5c3d7e46c72 /tests
parent5ae1e84756176fe8c7ef95141aa23b3effb86d3e (diff)
downloadqpid-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.py35
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):
"""