diff options
Diffstat (limited to 'qpid/cpp/src/tests')
| -rw-r--r-- | qpid/cpp/src/tests/ExchangeTest.cpp | 20 | ||||
| -rw-r--r-- | qpid/cpp/src/tests/legacystore/SimpleTest.cpp | 6 | ||||
| -rw-r--r-- | qpid/cpp/src/tests/misc.py | 67 |
3 files changed, 80 insertions, 13 deletions
diff --git a/qpid/cpp/src/tests/ExchangeTest.cpp b/qpid/cpp/src/tests/ExchangeTest.cpp index 8c2dbb21c8..df0684e832 100644 --- a/qpid/cpp/src/tests/ExchangeTest.cpp +++ b/qpid/cpp/src/tests/ExchangeTest.cpp @@ -158,12 +158,12 @@ QPID_AUTO_TEST_CASE(testIsBound) QPID_AUTO_TEST_CASE(testDeleteGetAndRedeclare) { ExchangeRegistry exchanges; - exchanges.declare("my-exchange", "direct", false, FieldTable()); + exchanges.declare("my-exchange", "direct", false, false, FieldTable()); exchanges.destroy("my-exchange"); try { exchanges.get("my-exchange"); } catch (const NotFoundException&) {} - std::pair<Exchange::shared_ptr, bool> response = exchanges.declare("my-exchange", "direct", false, FieldTable()); + std::pair<Exchange::shared_ptr, bool> response = exchanges.declare("my-exchange", "direct", false, false, FieldTable()); BOOST_CHECK_EQUAL(string("direct"), response.first->getType()); } @@ -174,7 +174,7 @@ QPID_AUTO_TEST_CASE(testSequenceOptions) char* buff = new char[10000]; framing::Buffer buffer(buff,10000); { - DirectExchange direct("direct1", false, args); + DirectExchange direct("direct1", false, false, args); DeliverableMessage msg1(MessageUtils::createMessage("e", "abc"), 0); DeliverableMessage msg2(MessageUtils::createMessage("e", "abc"), 0); @@ -188,9 +188,9 @@ QPID_AUTO_TEST_CASE(testSequenceOptions) BOOST_CHECK_EQUAL(2, msg2.getMessage().getAnnotation("qpid.msg_sequence").asInt64()); BOOST_CHECK_EQUAL(3, msg3.getMessage().getAnnotation("qpid.msg_sequence").asInt64()); - FanOutExchange fanout("fanout1", false, args); - HeadersExchange header("headers1", false, args); - TopicExchange topic ("topic1", false, args); + FanOutExchange fanout("fanout1", false, false, args); + HeadersExchange header("headers1", false, false, args); + TopicExchange topic ("topic1", false, false, args); // check other exchanges, that they preroute DeliverableMessage msg4(MessageUtils::createMessage("e", "abc"), 0); @@ -226,10 +226,10 @@ QPID_AUTO_TEST_CASE(testIVEOption) { FieldTable args; args.setInt("qpid.ive",1); - DirectExchange direct("direct1", false, args); - FanOutExchange fanout("fanout1", false, args); - HeadersExchange header("headers1", false, args); - TopicExchange topic ("topic1", false, args); + DirectExchange direct("direct1", false, false, args); + FanOutExchange fanout("fanout1", false, false, args); + HeadersExchange header("headers1", false, false, args); + TopicExchange topic ("topic1", false, false, args); qpid::types::Variant::Map properties; properties["routing-key"] = "abc"; diff --git a/qpid/cpp/src/tests/legacystore/SimpleTest.cpp b/qpid/cpp/src/tests/legacystore/SimpleTest.cpp index c769bdeb75..d3f040817f 100644 --- a/qpid/cpp/src/tests/legacystore/SimpleTest.cpp +++ b/qpid/cpp/src/tests/legacystore/SimpleTest.cpp @@ -102,7 +102,7 @@ void bindAndUnbind(const string& exchangeName, const string& queueName, { MessageStoreImpl store(&br); store.init(test_dir, 4, 1, true); // truncate store - Exchange::shared_ptr exchange(new DirectExchange(exchangeName, true, args)); + Exchange::shared_ptr exchange(new DirectExchange(exchangeName, true, false, args)); Queue::shared_ptr queue(new Queue(queueName, 0, &store, 0)); store.create(*exchange, qpid::framing::FieldTable()); store.create(*queue, qpid::framing::FieldTable()); @@ -376,7 +376,7 @@ QPID_AUTO_TEST_CASE(ExchangeCreateAndDestroy) MessageStoreImpl store(&br); store.init(test_dir, 4, 1, true); // truncate store ExchangeRegistry registry; - Exchange::shared_ptr exchange = registry.declare(name, type, true, args).first; + Exchange::shared_ptr exchange = registry.declare(name, type, true, false, args).first; store.create(*exchange, qpid::framing::FieldTable()); id = exchange->getPersistenceId(); BOOST_REQUIRE(id); @@ -446,7 +446,7 @@ QPID_AUTO_TEST_CASE(ExchangeImplicitUnbind) { MessageStoreImpl store(&br); store.init(test_dir, 4, 1, true); // truncate store - Exchange::shared_ptr exchange(new DirectExchange(exchangeName, true, args)); + Exchange::shared_ptr exchange(new DirectExchange(exchangeName, true, false, args)); Queue::shared_ptr queue1(new Queue(queueName1, 0, &store, 0)); Queue::shared_ptr queue2(new Queue(queueName2, 0, &store, 0)); store.create(*exchange, qpid::framing::FieldTable()); diff --git a/qpid/cpp/src/tests/misc.py b/qpid/cpp/src/tests/misc.py index 108120f321..257fb9e754 100644 --- a/qpid/cpp/src/tests/misc.py +++ b/qpid/cpp/src/tests/misc.py @@ -50,3 +50,70 @@ class MiscellaneousTests (VersionTest): con.close() other.close() +class AutoDeleteExchangeTests(VersionTest): + def init_test(self, exchange_type="topic"): + rcv = self.ssn.receiver("my-topic; {create:always, node:{type:topic, properties:{'exchange-type':%s, 'auto-delete':True}}}" % exchange_type) + snd = self.ssn.sender("my-topic") + #send some messages + msgs = [Message(content=c) for c in ['a','b','c','d']] + for m in msgs: snd.send(m) + + #verify receipt + for expected in msgs: + msg = rcv.fetch(0) + assert msg.content == expected.content + self.ssn.acknowledge(msg) + return (rcv, snd) + + def on_rcv_detach_test(self, exchange_type="topic"): + rcv, snd = self.init_test(exchange_type) + rcv.close() + #verify exchange is still there + snd.send(Message(content="will be dropped")) + snd.close() + #now verify it is no longer there + try: + self.ssn.sender("my-topic") + assert False, "Attempt to send to deleted exchange should fail" + except MessagingError: None + + def on_snd_detach_test(self, exchange_type="topic"): + rcv, snd = self.init_test(exchange_type) + snd.close() + #verify exchange is still there + snd = self.ssn.sender("my-topic") + snd.send(Message(content="will be dropped")) + snd.close() + rcv.close() + #now verify it is no longer there + try: + self.ssn.sender("my-topic") + assert False, "Attempt to send to deleted exchange should fail" + except MessagingError: None + + def test_autodelete_fanout_exchange_on_rcv_detach(self): + self.on_rcv_detach_test("fanout") + + def test_autodelete_fanout_exchange_on_snd_detach(self): + self.on_snd_detach_test("fanout") + + def test_autodelete_direct_exchange_on_rcv_detach(self): + self.on_rcv_detach_test("direct") + + def test_autodelete_direct_exchange_on_snd_detach(self): + self.on_snd_detach_test("direct") + + def test_autodelete_topic_exchange_on_rcv_detach(self): + self.on_rcv_detach_test("topic") + + def test_autodelete_topic_exchange_on_snd_detach(self): + self.on_snd_detach_test("topic") + + def test_autodelete_headers_exchange_on_rcv_detach(self): + self.on_rcv_detach_test("headers") + + def test_autodelete_headers_exchange_on_snd_detach(self): + self.on_snd_detach_test("headers") + + + |
