diff options
| author | Gordon Sim <gsim@apache.org> | 2008-02-19 16:02:25 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2008-02-19 16:02:25 +0000 |
| commit | 321153d64eccde228d4dd8d9c9833e2b259d8c05 (patch) | |
| tree | b389cffb773fa032be18c68772acc6b78cbabde9 /python | |
| parent | 4351730550bc48c4237de4e616f8e420e084c081 (diff) | |
| download | qpid-python-321153d64eccde228d4dd8d9c9833e2b259d8c05.tar.gz | |
Moved c++ to 0-9, based on a spec file with all the WIP stuff removed manually to avoid having to tinker with generator to exclude it.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/branches/M2.1@629137 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'python')
| -rw-r--r-- | python/tests/unbind.py | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/python/tests/unbind.py b/python/tests/unbind.py new file mode 100644 index 0000000000..712ed55c5f --- /dev/null +++ b/python/tests/unbind.py @@ -0,0 +1,76 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +from qpid.client import Client, Closed +from qpid.queue import Empty +from qpid.content import Content +from qpid.testlib import testrunner, TestBase + +class UnbindTests(TestBase): + """Tests for the unbind method introduced in 0-9""" + def test_unbind_direct(self): + self.unbind_test(exchange="amq.direct", routing_key="key") + + def test_unbind_topic(self): + self.unbind_test(exchange="amq.topic", routing_key="key") + + def test_unbind_fanout(self): + self.unbind_test(exchange="amq.fanout") + + def test_unbind_headers(self): + self.unbind_test(exchange="amq.match", args={ "x-match":"all", "a":"b"}, headers={"a":"b"}) + + def unbind_test(self, exchange, routing_key="", args={}, headers={}): + #bind two queues and consume from them + channel = self.channel + + self.queue_declare(queue="queue-1") + self.queue_declare(queue="queue-2") + + channel.basic_consume(queue="queue-1", consumer_tag="queue-1", no_ack=True) + channel.basic_consume(queue="queue-2", consumer_tag="queue-2", no_ack=True) + + queue1 = self.client.queue("queue-1") + queue2 = self.client.queue("queue-2") + + channel.queue_bind(exchange=exchange, queue="queue-1", routing_key=routing_key, arguments=args) + channel.queue_bind(exchange=exchange, queue="queue-2", routing_key=routing_key, arguments=args) + + #send a message that will match both bindings + channel.basic_publish(exchange=exchange, routing_key=routing_key, content=Content("one", properties={'headers':headers})) + + #unbind first queue + channel.queue_unbind(exchange=exchange, queue="queue-1", routing_key=routing_key, arguments=args) + + #send another message + channel.basic_publish(exchange=exchange, routing_key=routing_key, content=Content("two", properties={'headers':headers})) + + #check one queue has both messages and the other has only one + self.assertEquals("one", queue1.get(timeout=1).content.body) + try: + msg = queue1.get(timeout=1) + self.fail("Got extra message: %s" % msg.content.body) + except Empty: pass + + self.assertEquals("one", queue2.get(timeout=1).content.body) + self.assertEquals("two", queue2.get(timeout=1).content.body) + try: + msg = queue2.get(timeout=1) + self.fail("Got extra message: " + msg) + except Empty: pass + |
