diff options
| author | Gordon Sim <gsim@apache.org> | 2011-02-21 17:30:17 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2011-02-21 17:30:17 +0000 |
| commit | 44d8c4e9eac85fa612b54b5515667c0806f1accb (patch) | |
| tree | a119d355ca1d863079a5dc1783023de11fdd9cfa /cpp/src/tests/MessagingSessionTests.cpp | |
| parent | 20a5c70c4b369d0c288305d8424dbd74fc7f4934 (diff) | |
| download | qpid-python-44d8c4e9eac85fa612b54b5515667c0806f1accb.tar.gz | |
QPID-3051: Ensure credit window is moved correctly even if it contains rejected messages.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1073085 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/tests/MessagingSessionTests.cpp')
| -rw-r--r-- | cpp/src/tests/MessagingSessionTests.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/cpp/src/tests/MessagingSessionTests.cpp b/cpp/src/tests/MessagingSessionTests.cpp index f9a8b0e4c1..20ed16dece 100644 --- a/cpp/src/tests/MessagingSessionTests.cpp +++ b/cpp/src/tests/MessagingSessionTests.cpp @@ -937,6 +937,47 @@ QPID_AUTO_TEST_CASE(testQmfCreateAndDelete) } } +QPID_AUTO_TEST_CASE(testRejectAndCredit) +{ + //Ensure credit is restored on completing rejected messages + QueueFixture fix; + Sender sender = fix.session.createSender(fix.queue); + Receiver receiver = fix.session.createReceiver(fix.queue); + + const uint count(10); + receiver.setCapacity(count); + for (uint i = 0; i < count; i++) { + sender.send(Message((boost::format("Message_%1%") % (i+1)).str())); + } + + Message in; + for (uint i = 0; i < count; ++i) { + if (receiver.fetch(in, Duration::SECOND)) { + BOOST_CHECK_EQUAL(in.getContent(), (boost::format("Message_%1%") % (i+1)).str()); + fix.session.reject(in); + } else { + BOOST_FAIL((boost::format("Message_%1% not received as expected") % (i+1)).str()); + break; + } + } + //send another batch of messages + for (uint i = 0; i < count; i++) { + sender.send(Message((boost::format("Message_%1%") % (i+count)).str())); + } + + for (uint i = 0; i < count; ++i) { + if (receiver.fetch(in, Duration::SECOND)) { + BOOST_CHECK_EQUAL(in.getContent(), (boost::format("Message_%1%") % (i+count)).str()); + } else { + BOOST_FAIL((boost::format("Message_%1% not received as expected") % (i+count)).str()); + break; + } + } + fix.session.acknowledge(); + receiver.close(); + sender.close(); +} + QPID_AUTO_TEST_SUITE_END() }} // namespace qpid::tests |
