From cbc1284b92c4598409cb671a668ce9a6deae8fc3 Mon Sep 17 00:00:00 2001 From: "Carl C. Trieloff" Date: Tue, 7 Jul 2009 01:53:13 +0000 Subject: 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/qpid@791672 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/tests/QueueTest.cpp | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) (limited to 'cpp/src/tests/QueueTest.cpp') diff --git a/cpp/src/tests/QueueTest.cpp b/cpp/src/tests/QueueTest.cpp index 5a93533755..7ba3598ea7 100644 --- a/cpp/src/tests/QueueTest.cpp +++ b/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& /*msg*/, const PersistableQueue& /*queue*/) { + deqCnt++; } virtual void enqueue(TransactionContext*, const boost::intrusive_ptr& /*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 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() -- cgit v1.2.1