diff options
| author | Alan Conway <aconway@apache.org> | 2010-05-14 20:55:51 +0000 |
|---|---|---|
| committer | Alan Conway <aconway@apache.org> | 2010-05-14 20:55:51 +0000 |
| commit | fda9e2f33797c73da94f50d432f076f9e235c585 (patch) | |
| tree | 09d531966eff5fb9a0dc6c825a6a41472ce2f833 /qpid/cpp/src/tests/MessagingThreadTests.cpp | |
| parent | 18c85ed3c09962d644eb293f5f24998384b4226f (diff) | |
| download | qpid-python-fda9e2f33797c73da94f50d432f076f9e235c585.tar.gz | |
Fix errors when new API Receiver is closed while in use.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@944461 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src/tests/MessagingThreadTests.cpp')
| -rw-r--r-- | qpid/cpp/src/tests/MessagingThreadTests.cpp | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/qpid/cpp/src/tests/MessagingThreadTests.cpp b/qpid/cpp/src/tests/MessagingThreadTests.cpp index 9cf139ddf5..a355ba7800 100644 --- a/qpid/cpp/src/tests/MessagingThreadTests.cpp +++ b/qpid/cpp/src/tests/MessagingThreadTests.cpp @@ -54,13 +54,14 @@ struct ReceiveThread : public sys::Runnable { } }; + QPID_AUTO_TEST_CASE(testConcurrentSendReceive) { - QueueFixture fix; - Sender s = fix.session.createSender(fix.queue); - Receiver r = fix.session.createReceiver(fix.queue+";{link:{reliability:unreliable}}"); + MessagingFixture fix; + Sender s = fix.session.createSender("concurrent;{create:always}"); + Receiver r = fix.session.createReceiver("concurrent;{create:always,link:{reliability:unreliable}}"); ReceiveThread rt(r); sys::Thread thread(rt); - const size_t COUNT=1000; + const size_t COUNT=100; for (size_t i = 0; i < COUNT; ++i) { s.send(Message()); } @@ -71,28 +72,35 @@ QPID_AUTO_TEST_CASE(testConcurrentSendReceive) { } QPID_AUTO_TEST_CASE(testCloseBusyReceiver) { - QueueFixture fix; - Receiver r = fix.session.createReceiver(fix.queue); + MessagingFixture fix; + Receiver r = fix.session.createReceiver("closeReceiver;{create:always}"); ReceiveThread rt(r); sys::Thread thread(rt); + sys::usleep(1000); // Give the receive thread time to block. r.close(); thread.join(); BOOST_CHECK_EQUAL(rt.error, string()); - // Check that using a closed receiver gives the right result. + // Fetching on closed receiver should fail. Message m; BOOST_CHECK(!r.fetch(m, Duration(0))); BOOST_CHECK_THROW(r.fetch(Duration(0)), NoMessageAvailable); } QPID_AUTO_TEST_CASE(testCloseSessionBusyReceiver) { - QueueFixture fix; - Receiver r = fix.session.createReceiver(fix.queue); + MessagingFixture fix; + Receiver r = fix.session.createReceiver("closeSession;{create:always}"); ReceiveThread rt(r); sys::Thread thread(rt); + sys::usleep(1000); // Give the receive thread time to block. fix.session.close(); thread.join(); BOOST_CHECK_EQUAL(rt.error, string()); + + // Fetching on closed receiver should fail. + Message m; + BOOST_CHECK(!r.fetch(m, Duration(0))); + BOOST_CHECK_THROW(r.fetch(Duration(0)), NoMessageAvailable); } QPID_AUTO_TEST_SUITE_END() |
