From 2ed6c3f489f3bf740d1641400037b644c132b75a Mon Sep 17 00:00:00 2001 From: Gordon Sim Date: Tue, 2 Oct 2007 09:54:59 +0000 Subject: Fixed recovery; unacked message records are now updated to hold the new command id when messages are resent. Added unit and python test as previous bug was not being picked up by the existing tests. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@581175 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/tests/DeliveryRecordTest.cpp | 68 ++++++++++++++++++++++++++++++++++++ cpp/src/tests/Makefile.am | 1 + cpp/src/tests/TxAckTest.cpp | 2 +- 3 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 cpp/src/tests/DeliveryRecordTest.cpp (limited to 'cpp/src/tests') diff --git a/cpp/src/tests/DeliveryRecordTest.cpp b/cpp/src/tests/DeliveryRecordTest.cpp new file mode 100644 index 0000000000..011d8bf694 --- /dev/null +++ b/cpp/src/tests/DeliveryRecordTest.cpp @@ -0,0 +1,68 @@ + +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +#include "qpid/broker/DeliveryRecord.h" +#include "qpid_test_plugin.h" +#include +#include +#include + +using namespace qpid::broker; +using namespace qpid::sys; +using namespace qpid::framing; +using boost::dynamic_pointer_cast; +using std::list; + +class DeliveryRecordTest : public CppUnit::TestCase +{ + CPPUNIT_TEST_SUITE(DeliveryRecordTest); + CPPUNIT_TEST(testSort); + CPPUNIT_TEST_SUITE_END(); + +public: + + void testSort() + { + list ids; + ids.push_back(SequenceNumber(6)); + ids.push_back(SequenceNumber(2)); + ids.push_back(SequenceNumber(4)); + ids.push_back(SequenceNumber(5)); + ids.push_back(SequenceNumber(1)); + ids.push_back(SequenceNumber(3)); + + list records; + for (list::iterator i = ids.begin(); i != ids.end(); i++) { + records.push_back(DeliveryRecord(QueuedMessage(), Queue::shared_ptr(), "tag", DeliveryToken::shared_ptr(), *i, false, false)); + } + records.sort(); + + SequenceNumber expected(0); + for (list::iterator i = records.begin(); i != records.end(); i++) { + CPPUNIT_ASSERT(i->matches(++expected)); + } + } +}; + +// Make this test suite a plugin. +CPPUNIT_PLUGIN_IMPLEMENT(); +CPPUNIT_TEST_SUITE_REGISTRATION(DeliveryRecordTest); + diff --git a/cpp/src/tests/Makefile.am b/cpp/src/tests/Makefile.am index 9c4d5c0fd0..b8622fc925 100644 --- a/cpp/src/tests/Makefile.am +++ b/cpp/src/tests/Makefile.am @@ -86,6 +86,7 @@ perftest_LDADD=$(lib_client) broker_unit_tests = \ AccumulatedAckTest \ DtxWorkRecordTest \ + DeliveryRecordTest \ ExchangeTest \ HeadersExchangeTest \ MessageTest \ diff --git a/cpp/src/tests/TxAckTest.cpp b/cpp/src/tests/TxAckTest.cpp index 34d0bcd156..73628f25b5 100644 --- a/cpp/src/tests/TxAckTest.cpp +++ b/cpp/src/tests/TxAckTest.cpp @@ -78,7 +78,7 @@ public: messages.push_back(msg); QueuedMessage qm; qm.payload = msg; - deliveries.push_back(DeliveryRecord(qm, queue, "xyz", (i+1), true)); + deliveries.push_back(DeliveryRecord(qm, queue, "xyz", DeliveryToken::shared_ptr(), (i+1), true)); } //assume msgs 1-5, 7 and 9 are all acked (i.e. 6, 8 & 10 are not) -- cgit v1.2.1