diff options
author | Kim van der Riet <kpvdr@apache.org> | 2013-02-28 16:14:30 +0000 |
---|---|---|
committer | Kim van der Riet <kpvdr@apache.org> | 2013-02-28 16:14:30 +0000 |
commit | 9c73ef7a5ac10acd6a50d5d52bd721fc2faa5919 (patch) | |
tree | 2a890e1df09e5b896a9b4168a7b22648f559a1f2 /cpp/src/tests/MessagingSessionTests.cpp | |
parent | 172d9b2a16cfb817bbe632d050acba7e31401cd2 (diff) | |
download | qpid-python-asyncstore.tar.gz |
Update from trunk r1375509 through r1450773asyncstore
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/asyncstore@1451244 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/tests/MessagingSessionTests.cpp')
-rw-r--r-- | cpp/src/tests/MessagingSessionTests.cpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/cpp/src/tests/MessagingSessionTests.cpp b/cpp/src/tests/MessagingSessionTests.cpp index c8ee3aa401..55cff046e2 100644 --- a/cpp/src/tests/MessagingSessionTests.cpp +++ b/cpp/src/tests/MessagingSessionTests.cpp @@ -1164,6 +1164,59 @@ QPID_AUTO_TEST_CASE(testAlternateExchangeInLinkDeclare) } } +QPID_AUTO_TEST_CASE(testBrowseOnly) +{ + /* Set up a queue browse-only, and try to receive + the same messages twice with two different receivers. + This works because the browse-only queue does not + allow message acquisition. */ + + QueueFixture fix; + std::string addr = "q; {create:always, node:{type:queue, durable:false, x-declare:{arguments:{qpid.browse-only:1}}}}"; + Sender sender = fix.session.createSender(addr); + Message out("test-message"); + + int count = 10; + for ( int i = 0; i < count; ++ i ) { + sender.send(out); + } + + Message m; + + Receiver receiver_1 = fix.session.createReceiver(addr); + for ( int i = 0; i < count; ++ i ) { + BOOST_CHECK(receiver_1.fetch(m, Duration::SECOND)); + } + + Receiver receiver_2 = fix.session.createReceiver(addr); + for ( int i = 0; i < count; ++ i ) { + BOOST_CHECK(receiver_2.fetch(m, Duration::SECOND)); + } + + fix.session.acknowledge(); +} + +QPID_AUTO_TEST_CASE(testLinkBindingCleanup) +{ + MessagingFixture fix; + + Sender sender = fix.session.createSender("test.ex;{create:always,node:{type:topic}}"); + + Connection connection = fix.newConnection(); + connection.open(); + + Session session(connection.createSession()); + Receiver receiver1 = session.createReceiver("test.q;{create:always, node:{type:queue, x-bindings:[{exchange:test.ex,queue:test.q,key:#,arguments:{x-scope:session}}]}}"); + Receiver receiver2 = fix.session.createReceiver("test.q;{create:never, delete:always}"); + connection.close(); + + sender.send(Message("test-message"), true); + + // The session-scoped binding should be removed when receiver1's network connection is lost + Message in; + BOOST_CHECK(!receiver2.fetch(in, Duration::IMMEDIATE)); +} + QPID_AUTO_TEST_SUITE_END() }} // namespace qpid::tests |