summaryrefslogtreecommitdiff
path: root/qpid/cpp/src/tests
diff options
context:
space:
mode:
authorCarl C. Trieloff <cctrieloff@apache.org>2009-07-07 01:53:13 +0000
committerCarl C. Trieloff <cctrieloff@apache.org>2009-07-07 01:53:13 +0000
commit244a51dce390c0f2a7314ac09b7c01053aa2a5fd (patch)
tree0699fe7b53cb672477dc68c9177987e6462b69ec /qpid/cpp/src/tests
parentf728327bd381ef3f4942502bcb9d264edc6a38da (diff)
downloadqpid-python-244a51dce390c0f2a7314ac09b7c01053aa2a5fd.tar.gz
Corrected the case where message on more than one queue does not persist when last node standing is enabled
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@791672 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src/tests')
-rw-r--r--qpid/cpp/src/tests/QueueTest.cpp33
1 files changed, 32 insertions, 1 deletions
diff --git a/qpid/cpp/src/tests/QueueTest.cpp b/qpid/cpp/src/tests/QueueTest.cpp
index 5a93533755..7ba3598ea7 100644
--- a/qpid/cpp/src/tests/QueueTest.cpp
+++ b/qpid/cpp/src/tests/QueueTest.cpp
@@ -272,20 +272,25 @@ QPID_AUTO_TEST_CASE(testPersistLastNodeStanding){
class TestMessageStoreOC : public NullMessageStore
{
public:
+
+ uint enqCnt;
+ uint deqCnt;
virtual void dequeue(TransactionContext*,
const boost::intrusive_ptr<PersistableMessage>& /*msg*/,
const PersistableQueue& /*queue*/)
{
+ deqCnt++;
}
virtual void enqueue(TransactionContext*,
const boost::intrusive_ptr<PersistableMessage>& /*msg*/,
const PersistableQueue& /* queue */)
{
+ enqCnt++;
}
- TestMessageStoreOC() : NullMessageStore() {}
+ TestMessageStoreOC() : NullMessageStore(),enqCnt(0),deqCnt(0) {}
~TestMessageStoreOC(){}
};
@@ -521,6 +526,32 @@ QPID_AUTO_TEST_CASE(testQueueCleaner) {
BOOST_CHECK_EQUAL(queue->getMessageCount(), 0u);
}
+QPID_AUTO_TEST_CASE(testMultiQueueLastNode){
+
+ TestMessageStoreOC testStore;
+ client::QueueOptions args;
+ args.setPersistLastNode();
+
+ Queue::shared_ptr queue1(new Queue("queue1", true, &testStore ));
+ queue1->configure(args);
+ Queue::shared_ptr queue2(new Queue("queue2", true, &testStore ));
+ queue2->configure(args);
+
+ intrusive_ptr<Message> msg1 = create_message("e", "A");
+
+ queue1->deliver(msg1);
+ queue2->deliver(msg1);
+
+ //change mode
+ queue1->setLastNodeFailure();
+ BOOST_CHECK_EQUAL(testStore.enqCnt, 1u);
+ queue2->setLastNodeFailure();
+ BOOST_CHECK_EQUAL(testStore.enqCnt, 2u);
+
+}
+
+
+
QPID_AUTO_TEST_SUITE_END()