summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/tests/AccumulatedAckTest.cpp372
-rw-r--r--cpp/src/tests/DeliveryRecordTest.cpp54
-rw-r--r--cpp/src/tests/DtxWorkRecordTest.cpp323
-rw-r--r--cpp/src/tests/ExchangeTest.cpp261
-rw-r--r--cpp/src/tests/FramingTest.cpp197
-rw-r--r--cpp/src/tests/HeaderTest.cpp172
-rw-r--r--cpp/src/tests/HeadersExchangeTest.cpp164
-rw-r--r--cpp/src/tests/Makefile.am113
-rw-r--r--cpp/src/tests/MessageBuilderTest.cpp337
-rw-r--r--cpp/src/tests/MessageTest.cpp100
-rw-r--r--cpp/src/tests/QueuePolicyTest.cpp110
-rw-r--r--cpp/src/tests/QueueRegistryTest.cpp121
-rw-r--r--cpp/src/tests/QueueTest.cpp351
-rw-r--r--cpp/src/tests/SequenceNumberTest.cpp329
-rw-r--r--cpp/src/tests/TimerTest.cpp154
-rw-r--r--cpp/src/tests/TopicExchangeTest.cpp269
-rw-r--r--cpp/src/tests/TxAckTest.cpp91
-rw-r--r--cpp/src/tests/TxBufferTest.cpp303
-rw-r--r--cpp/src/tests/TxMocks.h4
-rw-r--r--cpp/src/tests/TxPublishTest.cpp103
20 files changed, 1842 insertions, 2086 deletions
diff --git a/cpp/src/tests/AccumulatedAckTest.cpp b/cpp/src/tests/AccumulatedAckTest.cpp
index cbe44e6814..028ce71907 100644
--- a/cpp/src/tests/AccumulatedAckTest.cpp
+++ b/cpp/src/tests/AccumulatedAckTest.cpp
@@ -20,231 +20,213 @@
*
*/
#include "qpid/framing/AccumulatedAck.h"
-#include "qpid_test_plugin.h"
+#include "unit_test.h"
#include <iostream>
#include <list>
using std::list;
using namespace qpid::framing;
-class AccumulatedAckTest : public CppUnit::TestCase
+
+bool covers(const AccumulatedAck& ack, int i)
{
- CPPUNIT_TEST_SUITE(AccumulatedAckTest);
- CPPUNIT_TEST(testGeneral);
- CPPUNIT_TEST(testCovers);
- CPPUNIT_TEST(testUpdateFromCompletionData);
- CPPUNIT_TEST(testCase1);
- CPPUNIT_TEST(testCase2);
- CPPUNIT_TEST(testCase3);
- CPPUNIT_TEST(testCase4);
- CPPUNIT_TEST(testConsolidation1);
- CPPUNIT_TEST(testConsolidation2);
- CPPUNIT_TEST(testConsolidation3);
- CPPUNIT_TEST(testConsolidation4);
- CPPUNIT_TEST_SUITE_END();
-
-public:
- bool covers(const AccumulatedAck& ack, int i)
- {
- return ack.covers(SequenceNumber(i));
- }
+ return ack.covers(SequenceNumber(i));
+}
- void update(AccumulatedAck& ack, int start, int end)
- {
- ack.update(SequenceNumber(start), SequenceNumber(end));
- }
+void update(AccumulatedAck& ack, int start, int end)
+{
+ ack.update(SequenceNumber(start), SequenceNumber(end));
+}
- void testGeneral()
- {
- AccumulatedAck ack(0);
- ack.clear();
- update(ack, 3,3);
- update(ack, 7,7);
- update(ack, 9,9);
- update(ack, 1,2);
- update(ack, 4,5);
- update(ack, 6,6);
+QPID_AUTO_TEST_SUITE(AccumulatedAckTestSuite)
- for(int i = 1; i <= 7; i++) CPPUNIT_ASSERT(covers(ack, i));
- CPPUNIT_ASSERT(covers(ack, 9));
+QPID_AUTO_TEST_CASE(testGeneral)
+{
+ AccumulatedAck ack(0);
+ ack.clear();
+ update(ack, 3,3);
+ update(ack, 7,7);
+ update(ack, 9,9);
+ update(ack, 1,2);
+ update(ack, 4,5);
+ update(ack, 6,6);
- CPPUNIT_ASSERT(!covers(ack, 8));
- CPPUNIT_ASSERT(!covers(ack, 10));
+ for(int i = 1; i <= 7; i++) BOOST_CHECK(covers(ack, i));
+ BOOST_CHECK(covers(ack, 9));
- ack.consolidate();
+ BOOST_CHECK(!covers(ack, 8));
+ BOOST_CHECK(!covers(ack, 10));
- for(int i = 1; i <= 7; i++) CPPUNIT_ASSERT(covers(ack, i));
- CPPUNIT_ASSERT(covers(ack, 9));
+ ack.consolidate();
- CPPUNIT_ASSERT(!covers(ack, 8));
- CPPUNIT_ASSERT(!covers(ack, 10));
- }
+ for(int i = 1; i <= 7; i++) BOOST_CHECK(covers(ack, i));
+ BOOST_CHECK(covers(ack, 9));
- void testCovers()
- {
- AccumulatedAck ack(5);
- update(ack, 7, 7);
- update(ack, 9, 9);
-
- CPPUNIT_ASSERT(covers(ack, 1));
- CPPUNIT_ASSERT(covers(ack, 2));
- CPPUNIT_ASSERT(covers(ack, 3));
- CPPUNIT_ASSERT(covers(ack, 4));
- CPPUNIT_ASSERT(covers(ack, 5));
- CPPUNIT_ASSERT(covers(ack, 7));
- CPPUNIT_ASSERT(covers(ack, 9));
-
- CPPUNIT_ASSERT(!covers(ack, 6));
- CPPUNIT_ASSERT(!covers(ack, 8));
- CPPUNIT_ASSERT(!covers(ack, 10));
- }
+ BOOST_CHECK(!covers(ack, 8));
+ BOOST_CHECK(!covers(ack, 10));
+}
- void testUpdateFromCompletionData()
- {
- AccumulatedAck ack(0);
- SequenceNumber mark(2);
- SequenceNumberSet ranges;
- ranges.addRange(SequenceNumber(5), SequenceNumber(8));
- ranges.addRange(SequenceNumber(10), SequenceNumber(15));
- ranges.addRange(SequenceNumber(9), SequenceNumber(9));
- ranges.addRange(SequenceNumber(3), SequenceNumber(4));
-
- ack.update(mark, ranges);
-
- for(int i = 0; i <= 15; i++) {
- CPPUNIT_ASSERT(covers(ack, i));
- }
- CPPUNIT_ASSERT(!covers(ack, 16));
- CPPUNIT_ASSERT_EQUAL((uint32_t) 15, ack.mark.getValue());
+QPID_AUTO_TEST_CASE(testCovers)
+{
+ AccumulatedAck ack(5);
+ update(ack, 7, 7);
+ update(ack, 9, 9);
+
+ BOOST_CHECK(covers(ack, 1));
+ BOOST_CHECK(covers(ack, 2));
+ BOOST_CHECK(covers(ack, 3));
+ BOOST_CHECK(covers(ack, 4));
+ BOOST_CHECK(covers(ack, 5));
+ BOOST_CHECK(covers(ack, 7));
+ BOOST_CHECK(covers(ack, 9));
+
+ BOOST_CHECK(!covers(ack, 6));
+ BOOST_CHECK(!covers(ack, 8));
+ BOOST_CHECK(!covers(ack, 10));
+}
+
+QPID_AUTO_TEST_CASE(testUpdateFromCompletionData)
+{
+ AccumulatedAck ack(0);
+ SequenceNumber mark(2);
+ SequenceNumberSet ranges;
+ ranges.addRange(SequenceNumber(5), SequenceNumber(8));
+ ranges.addRange(SequenceNumber(10), SequenceNumber(15));
+ ranges.addRange(SequenceNumber(9), SequenceNumber(9));
+ ranges.addRange(SequenceNumber(3), SequenceNumber(4));
+
+ ack.update(mark, ranges);
+
+ for(int i = 0; i <= 15; i++) {
+ BOOST_CHECK(covers(ack, i));
}
+ BOOST_CHECK(!covers(ack, 16));
+ BOOST_CHECK_EQUAL((uint32_t) 15, ack.mark.getValue());
+}
- void testCase1()
- {
- AccumulatedAck ack(3);
- update(ack, 1,2);
- for(int i = 1; i <= 3; i++) CPPUNIT_ASSERT(covers(ack, i));
- CPPUNIT_ASSERT(!covers(ack, 4));
- }
+QPID_AUTO_TEST_CASE(testCase1)
+{
+ AccumulatedAck ack(3);
+ update(ack, 1,2);
+ for(int i = 1; i <= 3; i++) BOOST_CHECK(covers(ack, i));
+ BOOST_CHECK(!covers(ack, 4));
+}
- void testCase2()
- {
- AccumulatedAck ack(3);
- update(ack, 3,6);
- for(int i = 1; i <= 6; i++) CPPUNIT_ASSERT(covers(ack, i));
- CPPUNIT_ASSERT(!covers(ack, 7));
- }
+QPID_AUTO_TEST_CASE(testCase2)
+{
+ AccumulatedAck ack(3);
+ update(ack, 3,6);
+ for(int i = 1; i <= 6; i++) BOOST_CHECK(covers(ack, i));
+ BOOST_CHECK(!covers(ack, 7));
+}
- void testCase3()
- {
- AccumulatedAck ack(3);
- update(ack, 4,6);
- for(int i = 1; i <= 6; i++) {
- CPPUNIT_ASSERT(covers(ack, i));
- }
- CPPUNIT_ASSERT(!covers(ack, 7));
+QPID_AUTO_TEST_CASE(testCase3)
+{
+ AccumulatedAck ack(3);
+ update(ack, 4,6);
+ for(int i = 1; i <= 6; i++) {
+ BOOST_CHECK(covers(ack, i));
}
+ BOOST_CHECK(!covers(ack, 7));
+}
- void testCase4()
- {
- AccumulatedAck ack(3);
- update(ack, 5,6);
- for(int i = 1; i <= 6; i++) {
- if (i == 4) CPPUNIT_ASSERT(!covers(ack, i));
- else CPPUNIT_ASSERT(covers(ack, i));
- }
- CPPUNIT_ASSERT(!covers(ack, 7));
+QPID_AUTO_TEST_CASE(testCase4)
+{
+ AccumulatedAck ack(3);
+ update(ack, 5,6);
+ for(int i = 1; i <= 6; i++) {
+ if (i == 4) BOOST_CHECK(!covers(ack, i));
+ else BOOST_CHECK(covers(ack, i));
}
+ BOOST_CHECK(!covers(ack, 7));
+}
- void testConsolidation1()
- {
- AccumulatedAck ack(3);
- update(ack, 7,7);
- CPPUNIT_ASSERT_EQUAL((uint32_t) 3, ack.mark.getValue());
- CPPUNIT_ASSERT_EQUAL((size_t) 1, ack.ranges.size());
-
- update(ack, 8,9);
- CPPUNIT_ASSERT_EQUAL((uint32_t) 3, ack.mark.getValue());
- CPPUNIT_ASSERT_EQUAL((size_t) 1, ack.ranges.size());
-
- update(ack, 1,2);
- CPPUNIT_ASSERT_EQUAL((uint32_t) 3, ack.mark.getValue());
- CPPUNIT_ASSERT_EQUAL((size_t) 1, ack.ranges.size());
+QPID_AUTO_TEST_CASE(testConsolidation1)
+{
+ AccumulatedAck ack(3);
+ update(ack, 7,7);
+ BOOST_CHECK_EQUAL((uint32_t) 3, ack.mark.getValue());
+ BOOST_CHECK_EQUAL((size_t) 1, ack.ranges.size());
- update(ack, 4,5);
- CPPUNIT_ASSERT_EQUAL((uint32_t) 5, ack.mark.getValue());
- CPPUNIT_ASSERT_EQUAL((size_t) 1, ack.ranges.size());
+ update(ack, 8,9);
+ BOOST_CHECK_EQUAL((uint32_t) 3, ack.mark.getValue());
+ BOOST_CHECK_EQUAL((size_t) 1, ack.ranges.size());
- update(ack, 6,6);
- CPPUNIT_ASSERT_EQUAL((uint32_t) 9, ack.mark.getValue());
- CPPUNIT_ASSERT_EQUAL((size_t) 0, ack.ranges.size());
+ update(ack, 1,2);
+ BOOST_CHECK_EQUAL((uint32_t) 3, ack.mark.getValue());
+ BOOST_CHECK_EQUAL((size_t) 1, ack.ranges.size());
- for(int i = 1; i <= 9; i++) CPPUNIT_ASSERT(covers(ack, i));
- CPPUNIT_ASSERT(!covers(ack, 10));
- }
+ update(ack, 4,5);
+ BOOST_CHECK_EQUAL((uint32_t) 5, ack.mark.getValue());
+ BOOST_CHECK_EQUAL((size_t) 1, ack.ranges.size());
- void testConsolidation2()
- {
- AccumulatedAck ack(0);
- update(ack, 10,12);
- CPPUNIT_ASSERT_EQUAL((uint32_t) 0, ack.mark.getValue());
- CPPUNIT_ASSERT_EQUAL((size_t) 1, ack.ranges.size());
-
- update(ack, 7,9);
- CPPUNIT_ASSERT_EQUAL((uint32_t) 0, ack.mark.getValue());
- CPPUNIT_ASSERT_EQUAL((size_t) 1, ack.ranges.size());
- CPPUNIT_ASSERT_EQUAL((uint32_t) 7, ack.ranges.front().start.getValue());
- CPPUNIT_ASSERT_EQUAL((uint32_t) 12, ack.ranges.front().end.getValue());
-
- update(ack, 5,7);
- CPPUNIT_ASSERT_EQUAL((uint32_t) 0, ack.mark.getValue());
- CPPUNIT_ASSERT_EQUAL((size_t) 1, ack.ranges.size());
- CPPUNIT_ASSERT_EQUAL((uint32_t) 5, ack.ranges.front().start.getValue());
- CPPUNIT_ASSERT_EQUAL((uint32_t) 12, ack.ranges.front().end.getValue());
-
- update(ack, 3,4);
- CPPUNIT_ASSERT_EQUAL((uint32_t) 0, ack.mark.getValue());
- CPPUNIT_ASSERT_EQUAL((size_t) 1, ack.ranges.size());
- CPPUNIT_ASSERT_EQUAL((uint32_t) 3, ack.ranges.front().start.getValue());
- CPPUNIT_ASSERT_EQUAL((uint32_t) 12, ack.ranges.front().end.getValue());
-
- update(ack, 1,2);
- CPPUNIT_ASSERT_EQUAL((uint32_t) 12, ack.mark.getValue());
- CPPUNIT_ASSERT_EQUAL((size_t) 0, ack.ranges.size());
-
- for(int i = 1; i <= 12; i++) CPPUNIT_ASSERT(covers(ack, i));
- CPPUNIT_ASSERT(!covers(ack, 13));
- }
+ update(ack, 6,6);
+ BOOST_CHECK_EQUAL((uint32_t) 9, ack.mark.getValue());
+ BOOST_CHECK_EQUAL((size_t) 0, ack.ranges.size());
- void testConsolidation3()
- {
- AccumulatedAck ack(0);
- update(ack, 10,12);
- update(ack, 6,7);
- update(ack, 3,4);
- update(ack, 1,15);
- CPPUNIT_ASSERT_EQUAL((uint32_t) 15, ack.mark.getValue());
- CPPUNIT_ASSERT_EQUAL((size_t) 0, ack.ranges.size());
- }
+ for(int i = 1; i <= 9; i++) BOOST_CHECK(covers(ack, i));
+ BOOST_CHECK(!covers(ack, 10));
+}
- void testConsolidation4()
- {
- AccumulatedAck ack(0);
- ack.update(SequenceNumber(0), SequenceNumber(2));
- ack.update(SequenceNumber(5), SequenceNumber(8));
- ack.update(SequenceNumber(10), SequenceNumber(15));
- ack.update(SequenceNumber(9), SequenceNumber(9));
- ack.update(SequenceNumber(3), SequenceNumber(4));
-
- for(int i = 0; i <= 15; i++) {
- CPPUNIT_ASSERT(covers(ack, i));
- }
- CPPUNIT_ASSERT(!covers(ack, 16));
- CPPUNIT_ASSERT_EQUAL((uint32_t) 15, ack.mark.getValue());
+QPID_AUTO_TEST_CASE(testConsolidation2)
+{
+ AccumulatedAck ack(0);
+ update(ack, 10,12);
+ BOOST_CHECK_EQUAL((uint32_t) 0, ack.mark.getValue());
+ BOOST_CHECK_EQUAL((size_t) 1, ack.ranges.size());
+
+ update(ack, 7,9);
+ BOOST_CHECK_EQUAL((uint32_t) 0, ack.mark.getValue());
+ BOOST_CHECK_EQUAL((size_t) 1, ack.ranges.size());
+ BOOST_CHECK_EQUAL((uint32_t) 7, ack.ranges.front().start.getValue());
+ BOOST_CHECK_EQUAL((uint32_t) 12, ack.ranges.front().end.getValue());
+
+ update(ack, 5,7);
+ BOOST_CHECK_EQUAL((uint32_t) 0, ack.mark.getValue());
+ BOOST_CHECK_EQUAL((size_t) 1, ack.ranges.size());
+ BOOST_CHECK_EQUAL((uint32_t) 5, ack.ranges.front().start.getValue());
+ BOOST_CHECK_EQUAL((uint32_t) 12, ack.ranges.front().end.getValue());
+
+ update(ack, 3,4);
+ BOOST_CHECK_EQUAL((uint32_t) 0, ack.mark.getValue());
+ BOOST_CHECK_EQUAL((size_t) 1, ack.ranges.size());
+ BOOST_CHECK_EQUAL((uint32_t) 3, ack.ranges.front().start.getValue());
+ BOOST_CHECK_EQUAL((uint32_t) 12, ack.ranges.front().end.getValue());
+
+ update(ack, 1,2);
+ BOOST_CHECK_EQUAL((uint32_t) 12, ack.mark.getValue());
+ BOOST_CHECK_EQUAL((size_t) 0, ack.ranges.size());
+
+ for(int i = 1; i <= 12; i++) BOOST_CHECK(covers(ack, i));
+ BOOST_CHECK(!covers(ack, 13));
+}
+
+QPID_AUTO_TEST_CASE(testConsolidation3)
+{
+ AccumulatedAck ack(0);
+ update(ack, 10,12);
+ update(ack, 6,7);
+ update(ack, 3,4);
+ update(ack, 1,15);
+ BOOST_CHECK_EQUAL((uint32_t) 15, ack.mark.getValue());
+ BOOST_CHECK_EQUAL((size_t) 0, ack.ranges.size());
+}
+
+QPID_AUTO_TEST_CASE(testConsolidation4)
+{
+ AccumulatedAck ack(0);
+ ack.update(SequenceNumber(0), SequenceNumber(2));
+ ack.update(SequenceNumber(5), SequenceNumber(8));
+ ack.update(SequenceNumber(10), SequenceNumber(15));
+ ack.update(SequenceNumber(9), SequenceNumber(9));
+ ack.update(SequenceNumber(3), SequenceNumber(4));
+
+ for(int i = 0; i <= 15; i++) {
+ BOOST_CHECK(covers(ack, i));
}
+ BOOST_CHECK(!covers(ack, 16));
+ BOOST_CHECK_EQUAL((uint32_t) 15, ack.mark.getValue());
+}
-};
-
-// Make this test suite a plugin.
-CPPUNIT_PLUGIN_IMPLEMENT();
-CPPUNIT_TEST_SUITE_REGISTRATION(AccumulatedAckTest);
+QPID_AUTO_TEST_SUITE_END()
diff --git a/cpp/src/tests/DeliveryRecordTest.cpp b/cpp/src/tests/DeliveryRecordTest.cpp
index 9487f743d6..43161b4065 100644
--- a/cpp/src/tests/DeliveryRecordTest.cpp
+++ b/cpp/src/tests/DeliveryRecordTest.cpp
@@ -20,7 +20,7 @@
*
*/
#include "qpid/broker/DeliveryRecord.h"
-#include "qpid_test_plugin.h"
+#include "unit_test.h"
#include <iostream>
#include <memory>
#include <boost/format.hpp>
@@ -31,38 +31,30 @@ 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<SequenceNumber> 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));
+QPID_AUTO_TEST_SUITE(DeliveryRecordTestSuite)
- list<DeliveryRecord> records;
- for (list<SequenceNumber>::iterator i = ids.begin(); i != ids.end(); i++) {
- records.push_back(DeliveryRecord(QueuedMessage(0), Queue::shared_ptr(), "tag", DeliveryToken::shared_ptr(), *i, false, false));
- }
- records.sort();
+QPID_AUTO_TEST_CASE(testSort)
+{
+ list<SequenceNumber> 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<DeliveryRecord> records;
+ for (list<SequenceNumber>::iterator i = ids.begin(); i != ids.end(); i++) {
+ records.push_back(DeliveryRecord(QueuedMessage(0), Queue::shared_ptr(), "tag", DeliveryToken::shared_ptr(), *i, false, false));
+ }
+ records.sort();
- SequenceNumber expected(0);
- for (list<DeliveryRecord>::iterator i = records.begin(); i != records.end(); i++) {
- CPPUNIT_ASSERT(i->matches(++expected));
- }
+ SequenceNumber expected(0);
+ for (list<DeliveryRecord>::iterator i = records.begin(); i != records.end(); i++) {
+ BOOST_CHECK(i->matches(++expected));
}
-};
+}
+
-// Make this test suite a plugin.
-CPPUNIT_PLUGIN_IMPLEMENT();
-CPPUNIT_TEST_SUITE_REGISTRATION(DeliveryRecordTest);
+QPID_AUTO_TEST_SUITE_END()
diff --git a/cpp/src/tests/DtxWorkRecordTest.cpp b/cpp/src/tests/DtxWorkRecordTest.cpp
index d7d151f8d6..c7c1b460ff 100644
--- a/cpp/src/tests/DtxWorkRecordTest.cpp
+++ b/cpp/src/tests/DtxWorkRecordTest.cpp
@@ -19,7 +19,7 @@
*
*/
#include "qpid/broker/DtxWorkRecord.h"
-#include "qpid_test_plugin.h"
+#include "unit_test.h"
#include <iostream>
#include <vector>
#include "TxMocks.h"
@@ -27,176 +27,163 @@
using namespace qpid::broker;
using boost::static_pointer_cast;
-class DtxWorkRecordTest : public CppUnit::TestCase
-{
- CPPUNIT_TEST_SUITE(DtxWorkRecordTest);
- CPPUNIT_TEST(testOnePhaseCommit);
- CPPUNIT_TEST(testFailOnOnePhaseCommit);
- CPPUNIT_TEST(testTwoPhaseCommit);
- CPPUNIT_TEST(testFailOnTwoPhaseCommit);
- CPPUNIT_TEST(testRollback);
- CPPUNIT_TEST_SUITE_END();
-
- public:
-
- void testOnePhaseCommit(){
- MockTransactionalStore store;
- store.expectBegin().expectCommit();
-
- MockTxOp::shared_ptr opA(new MockTxOp());
- opA->expectPrepare().expectCommit();
- MockTxOp::shared_ptr opB(new MockTxOp());
- opB->expectPrepare().expectCommit();
-
- DtxBuffer::shared_ptr bufferA(new DtxBuffer());
- bufferA->enlist(static_pointer_cast<TxOp>(opA));
- bufferA->markEnded();
- DtxBuffer::shared_ptr bufferB(new DtxBuffer());
- bufferB->enlist(static_pointer_cast<TxOp>(opB));
- bufferB->markEnded();
+QPID_AUTO_TEST_SUITE(DtxWorkRecordTestSuite)
+
+QPID_AUTO_TEST_CASE(testOnePhaseCommit){
+ MockTransactionalStore store;
+ store.expectBegin().expectCommit();
+
+ MockTxOp::shared_ptr opA(new MockTxOp());
+ opA->expectPrepare().expectCommit();
+ MockTxOp::shared_ptr opB(new MockTxOp());
+ opB->expectPrepare().expectCommit();
+
+ DtxBuffer::shared_ptr bufferA(new DtxBuffer());
+ bufferA->enlist(static_pointer_cast<TxOp>(opA));
+ bufferA->markEnded();
+ DtxBuffer::shared_ptr bufferB(new DtxBuffer());
+ bufferB->enlist(static_pointer_cast<TxOp>(opB));
+ bufferB->markEnded();
- DtxWorkRecord work("my-xid", &store);
- work.add(bufferA);
- work.add(bufferB);
-
- work.commit(true);
-
- store.check();
- CPPUNIT_ASSERT(store.isCommitted());
- opA->check();
- opB->check();
- }
-
- void testFailOnOnePhaseCommit(){
- MockTransactionalStore store;
- store.expectBegin().expectAbort();
-
- MockTxOp::shared_ptr opA(new MockTxOp());
- opA->expectPrepare().expectRollback();
- MockTxOp::shared_ptr opB(new MockTxOp(true));
- opB->expectPrepare().expectRollback();
- MockTxOp::shared_ptr opC(new MockTxOp());
- opC->expectRollback();
-
- DtxBuffer::shared_ptr bufferA(new DtxBuffer());
- bufferA->enlist(static_pointer_cast<TxOp>(opA));
- bufferA->markEnded();
- DtxBuffer::shared_ptr bufferB(new DtxBuffer());
- bufferB->enlist(static_pointer_cast<TxOp>(opB));
- bufferB->markEnded();
- DtxBuffer::shared_ptr bufferC(new DtxBuffer());
- bufferC->enlist(static_pointer_cast<TxOp>(opC));
- bufferC->markEnded();
+ DtxWorkRecord work("my-xid", &store);
+ work.add(bufferA);
+ work.add(bufferB);
+
+ work.commit(true);
+
+ store.check();
+ BOOST_CHECK(store.isCommitted());
+ opA->check();
+ opB->check();
+}
+
+QPID_AUTO_TEST_CASE(testFailOnOnePhaseCommit){
+ MockTransactionalStore store;
+ store.expectBegin().expectAbort();
+
+ MockTxOp::shared_ptr opA(new MockTxOp());
+ opA->expectPrepare().expectRollback();
+ MockTxOp::shared_ptr opB(new MockTxOp(true));
+ opB->expectPrepare().expectRollback();
+ MockTxOp::shared_ptr opC(new MockTxOp());
+ opC->expectRollback();
+
+ DtxBuffer::shared_ptr bufferA(new DtxBuffer());
+ bufferA->enlist(static_pointer_cast<TxOp>(opA));
+ bufferA->markEnded();
+ DtxBuffer::shared_ptr bufferB(new DtxBuffer());
+ bufferB->enlist(static_pointer_cast<TxOp>(opB));
+ bufferB->markEnded();
+ DtxBuffer::shared_ptr bufferC(new DtxBuffer());
+ bufferC->enlist(static_pointer_cast<TxOp>(opC));
+ bufferC->markEnded();
- DtxWorkRecord work("my-xid", &store);
- work.add(bufferA);
- work.add(bufferB);
- work.add(bufferC);
-
- work.commit(true);
-
- CPPUNIT_ASSERT(store.isAborted());
- store.check();
-
- opA->check();
- opB->check();
- opC->check();
- }
-
- void testTwoPhaseCommit(){
- MockTransactionalStore store;
- store.expectBegin2PC().expectPrepare().expectCommit();
-
- MockTxOp::shared_ptr opA(new MockTxOp());
- opA->expectPrepare().expectCommit();
- MockTxOp::shared_ptr opB(new MockTxOp());
- opB->expectPrepare().expectCommit();
-
- DtxBuffer::shared_ptr bufferA(new DtxBuffer());
- bufferA->enlist(static_pointer_cast<TxOp>(opA));
- bufferA->markEnded();
- DtxBuffer::shared_ptr bufferB(new DtxBuffer());
- bufferB->enlist(static_pointer_cast<TxOp>(opB));
- bufferB->markEnded();
+ DtxWorkRecord work("my-xid", &store);
+ work.add(bufferA);
+ work.add(bufferB);
+ work.add(bufferC);
+
+ work.commit(true);
+
+ BOOST_CHECK(store.isAborted());
+ store.check();
+
+ opA->check();
+ opB->check();
+ opC->check();
+}
+
+QPID_AUTO_TEST_CASE(testTwoPhaseCommit){
+ MockTransactionalStore store;
+ store.expectBegin2PC().expectPrepare().expectCommit();
+
+ MockTxOp::shared_ptr opA(new MockTxOp());
+ opA->expectPrepare().expectCommit();
+ MockTxOp::shared_ptr opB(new MockTxOp());
+ opB->expectPrepare().expectCommit();
+
+ DtxBuffer::shared_ptr bufferA(new DtxBuffer());
+ bufferA->enlist(static_pointer_cast<TxOp>(opA));
+ bufferA->markEnded();
+ DtxBuffer::shared_ptr bufferB(new DtxBuffer());
+ bufferB->enlist(static_pointer_cast<TxOp>(opB));
+ bufferB->markEnded();
- DtxWorkRecord work("my-xid", &store);
- work.add(bufferA);
- work.add(bufferB);
-
- CPPUNIT_ASSERT(work.prepare());
- CPPUNIT_ASSERT(store.isPrepared());
- work.commit(false);
- store.check();
- CPPUNIT_ASSERT(store.isCommitted());
- opA->check();
- opB->check();
- }
-
- void testFailOnTwoPhaseCommit(){
- MockTransactionalStore store;
- store.expectBegin2PC().expectAbort();
-
- MockTxOp::shared_ptr opA(new MockTxOp());
- opA->expectPrepare().expectRollback();
- MockTxOp::shared_ptr opB(new MockTxOp(true));
- opB->expectPrepare().expectRollback();
- MockTxOp::shared_ptr opC(new MockTxOp());
- opC->expectRollback();
-
- DtxBuffer::shared_ptr bufferA(new DtxBuffer());
- bufferA->enlist(static_pointer_cast<TxOp>(opA));
- bufferA->markEnded();
- DtxBuffer::shared_ptr bufferB(new DtxBuffer());
- bufferB->enlist(static_pointer_cast<TxOp>(opB));
- bufferB->markEnded();
- DtxBuffer::shared_ptr bufferC(new DtxBuffer());
- bufferC->enlist(static_pointer_cast<TxOp>(opC));
- bufferC->markEnded();
+ DtxWorkRecord work("my-xid", &store);
+ work.add(bufferA);
+ work.add(bufferB);
+
+ BOOST_CHECK(work.prepare());
+ BOOST_CHECK(store.isPrepared());
+ work.commit(false);
+ store.check();
+ BOOST_CHECK(store.isCommitted());
+ opA->check();
+ opB->check();
+}
+
+QPID_AUTO_TEST_CASE(testFailOnTwoPhaseCommit){
+ MockTransactionalStore store;
+ store.expectBegin2PC().expectAbort();
+
+ MockTxOp::shared_ptr opA(new MockTxOp());
+ opA->expectPrepare().expectRollback();
+ MockTxOp::shared_ptr opB(new MockTxOp(true));
+ opB->expectPrepare().expectRollback();
+ MockTxOp::shared_ptr opC(new MockTxOp());
+ opC->expectRollback();
+
+ DtxBuffer::shared_ptr bufferA(new DtxBuffer());
+ bufferA->enlist(static_pointer_cast<TxOp>(opA));
+ bufferA->markEnded();
+ DtxBuffer::shared_ptr bufferB(new DtxBuffer());
+ bufferB->enlist(static_pointer_cast<TxOp>(opB));
+ bufferB->markEnded();
+ DtxBuffer::shared_ptr bufferC(new DtxBuffer());
+ bufferC->enlist(static_pointer_cast<TxOp>(opC));
+ bufferC->markEnded();
- DtxWorkRecord work("my-xid", &store);
- work.add(bufferA);
- work.add(bufferB);
- work.add(bufferC);
-
- CPPUNIT_ASSERT(!work.prepare());
- CPPUNIT_ASSERT(store.isAborted());
- store.check();
- opA->check();
- opB->check();
- opC->check();
- }
-
- void testRollback(){
- MockTransactionalStore store;
- store.expectBegin2PC().expectPrepare().expectAbort();
-
- MockTxOp::shared_ptr opA(new MockTxOp());
- opA->expectPrepare().expectRollback();
- MockTxOp::shared_ptr opB(new MockTxOp());
- opB->expectPrepare().expectRollback();
-
- DtxBuffer::shared_ptr bufferA(new DtxBuffer());
- bufferA->enlist(static_pointer_cast<TxOp>(opA));
- bufferA->markEnded();
- DtxBuffer::shared_ptr bufferB(new DtxBuffer());
- bufferB->enlist(static_pointer_cast<TxOp>(opB));
- bufferB->markEnded();
+ DtxWorkRecord work("my-xid", &store);
+ work.add(bufferA);
+ work.add(bufferB);
+ work.add(bufferC);
+
+ BOOST_CHECK(!work.prepare());
+ BOOST_CHECK(store.isAborted());
+ store.check();
+ opA->check();
+ opB->check();
+ opC->check();
+}
+
+QPID_AUTO_TEST_CASE(testRollback){
+ MockTransactionalStore store;
+ store.expectBegin2PC().expectPrepare().expectAbort();
+
+ MockTxOp::shared_ptr opA(new MockTxOp());
+ opA->expectPrepare().expectRollback();
+ MockTxOp::shared_ptr opB(new MockTxOp());
+ opB->expectPrepare().expectRollback();
+
+ DtxBuffer::shared_ptr bufferA(new DtxBuffer());
+ bufferA->enlist(static_pointer_cast<TxOp>(opA));
+ bufferA->markEnded();
+ DtxBuffer::shared_ptr bufferB(new DtxBuffer());
+ bufferB->enlist(static_pointer_cast<TxOp>(opB));
+ bufferB->markEnded();
- DtxWorkRecord work("my-xid", &store);
- work.add(bufferA);
- work.add(bufferB);
-
- CPPUNIT_ASSERT(work.prepare());
- CPPUNIT_ASSERT(store.isPrepared());
- work.rollback();
- store.check();
- CPPUNIT_ASSERT(store.isAborted());
- opA->check();
- opB->check();
- }
-};
-
-// Make this test suite a plugin.
-CPPUNIT_PLUGIN_IMPLEMENT();
-CPPUNIT_TEST_SUITE_REGISTRATION(DtxWorkRecordTest);
+ DtxWorkRecord work("my-xid", &store);
+ work.add(bufferA);
+ work.add(bufferB);
+
+ BOOST_CHECK(work.prepare());
+ BOOST_CHECK(store.isPrepared());
+ work.rollback();
+ store.check();
+ BOOST_CHECK(store.isAborted());
+ opA->check();
+ opB->check();
+}
+
+QPID_AUTO_TEST_SUITE_END()
diff --git a/cpp/src/tests/ExchangeTest.cpp b/cpp/src/tests/ExchangeTest.cpp
index 0b69f76a76..e496f0c478 100644
--- a/cpp/src/tests/ExchangeTest.cpp
+++ b/cpp/src/tests/ExchangeTest.cpp
@@ -29,7 +29,7 @@
#include "qpid/broker/HeadersExchange.h"
#include "qpid/broker/TopicExchange.h"
#include "qpid/framing/reply_exceptions.h"
-#include "qpid_test_plugin.h"
+#include "unit_test.h"
#include <iostream>
#include "MessageUtils.h"
@@ -39,141 +39,130 @@ using namespace qpid::framing;
using namespace qpid::sys;
using namespace qpid;
-class ExchangeTest : public CppUnit::TestCase
+QPID_AUTO_TEST_SUITE(ExchangeTestSuite)
+
+QPID_AUTO_TEST_CASE(testMe)
{
- CPPUNIT_TEST_SUITE(ExchangeTest);
- CPPUNIT_TEST(testMe);
- CPPUNIT_TEST(testIsBound);
- CPPUNIT_TEST(testDeleteGetAndRedeclare);
- CPPUNIT_TEST_SUITE_END();
-
- public:
-
- void testMe()
- {
- Queue::shared_ptr queue(new Queue("queue", true));
- Queue::shared_ptr queue2(new Queue("queue2", true));
-
- TopicExchange topic("topic");
- topic.bind(queue, "abc", 0);
- topic.bind(queue2, "abc", 0);
-
- DirectExchange direct("direct");
- direct.bind(queue, "abc", 0);
- direct.bind(queue2, "abc", 0);
-
- queue.reset();
- queue2.reset();
-
- intrusive_ptr<Message> msgPtr(MessageUtils::createMessage("exchange", "key", "id"));
- DeliverableMessage msg(msgPtr);
- topic.route(msg, "abc", 0);
- direct.route(msg, "abc", 0);
-
- }
-
- void testIsBound()
- {
- Queue::shared_ptr a(new Queue("a", true));
- Queue::shared_ptr b(new Queue("b", true));
- Queue::shared_ptr c(new Queue("c", true));
- Queue::shared_ptr d(new Queue("d", true));
+ Queue::shared_ptr queue(new Queue("queue", true));
+ Queue::shared_ptr queue2(new Queue("queue2", true));
+
+ TopicExchange topic("topic");
+ topic.bind(queue, "abc", 0);
+ topic.bind(queue2, "abc", 0);
+
+ DirectExchange direct("direct");
+ direct.bind(queue, "abc", 0);
+ direct.bind(queue2, "abc", 0);
+
+ queue.reset();
+ queue2.reset();
+
+ intrusive_ptr<Message> msgPtr(MessageUtils::createMessage("exchange", "key", "id"));
+ DeliverableMessage msg(msgPtr);
+ topic.route(msg, "abc", 0);
+ direct.route(msg, "abc", 0);
+
+}
+
+QPID_AUTO_TEST_CASE(testIsBound)
+{
+ Queue::shared_ptr a(new Queue("a", true));
+ Queue::shared_ptr b(new Queue("b", true));
+ Queue::shared_ptr c(new Queue("c", true));
+ Queue::shared_ptr d(new Queue("d", true));
- string k1("abc");
- string k2("def");
- string k3("xyz");
-
- FanOutExchange fanout("fanout");
- fanout.bind(a, "", 0);
- fanout.bind(b, "", 0);
- fanout.bind(c, "", 0);
-
- CPPUNIT_ASSERT(fanout.isBound(a, 0, 0));
- CPPUNIT_ASSERT(fanout.isBound(b, 0, 0));
- CPPUNIT_ASSERT(fanout.isBound(c, 0, 0));
- CPPUNIT_ASSERT(!fanout.isBound(d, 0, 0));
-
- DirectExchange direct("direct");
- direct.bind(a, k1, 0);
- direct.bind(a, k3, 0);
- direct.bind(b, k2, 0);
- direct.bind(c, k1, 0);
-
- CPPUNIT_ASSERT(direct.isBound(a, 0, 0));
- CPPUNIT_ASSERT(direct.isBound(a, &k1, 0));
- CPPUNIT_ASSERT(direct.isBound(a, &k3, 0));
- CPPUNIT_ASSERT(!direct.isBound(a, &k2, 0));
- CPPUNIT_ASSERT(direct.isBound(b, 0, 0));
- CPPUNIT_ASSERT(direct.isBound(b, &k2, 0));
- CPPUNIT_ASSERT(direct.isBound(c, &k1, 0));
- CPPUNIT_ASSERT(!direct.isBound(d, 0, 0));
- CPPUNIT_ASSERT(!direct.isBound(d, &k1, 0));
- CPPUNIT_ASSERT(!direct.isBound(d, &k2, 0));
- CPPUNIT_ASSERT(!direct.isBound(d, &k3, 0));
-
- TopicExchange topic("topic");
- topic.bind(a, k1, 0);
- topic.bind(a, k3, 0);
- topic.bind(b, k2, 0);
- topic.bind(c, k1, 0);
-
- CPPUNIT_ASSERT(topic.isBound(a, 0, 0));
- CPPUNIT_ASSERT(topic.isBound(a, &k1, 0));
- CPPUNIT_ASSERT(topic.isBound(a, &k3, 0));
- CPPUNIT_ASSERT(!topic.isBound(a, &k2, 0));
- CPPUNIT_ASSERT(topic.isBound(b, 0, 0));
- CPPUNIT_ASSERT(topic.isBound(b, &k2, 0));
- CPPUNIT_ASSERT(topic.isBound(c, &k1, 0));
- CPPUNIT_ASSERT(!topic.isBound(d, 0, 0));
- CPPUNIT_ASSERT(!topic.isBound(d, &k1, 0));
- CPPUNIT_ASSERT(!topic.isBound(d, &k2, 0));
- CPPUNIT_ASSERT(!topic.isBound(d, &k3, 0));
-
- HeadersExchange headers("headers");
- FieldTable args1;
- args1.setString("x-match", "all");
- args1.setString("a", "A");
- args1.setInt("b", 1);
- FieldTable args2;
- args2.setString("x-match", "any");
- args2.setString("a", "A");
- args2.setInt("b", 1);
- FieldTable args3;
- args3.setString("x-match", "any");
- args3.setString("c", "C");
- args3.setInt("b", 6);
-
- headers.bind(a, "", &args1);
- headers.bind(a, "", &args3);
- headers.bind(b, "", &args2);
- headers.bind(c, "", &args1);
+ string k1("abc");
+ string k2("def");
+ string k3("xyz");
+
+ FanOutExchange fanout("fanout");
+ fanout.bind(a, "", 0);
+ fanout.bind(b, "", 0);
+ fanout.bind(c, "", 0);
+
+ BOOST_CHECK(fanout.isBound(a, 0, 0));
+ BOOST_CHECK(fanout.isBound(b, 0, 0));
+ BOOST_CHECK(fanout.isBound(c, 0, 0));
+ BOOST_CHECK(!fanout.isBound(d, 0, 0));
+
+ DirectExchange direct("direct");
+ direct.bind(a, k1, 0);
+ direct.bind(a, k3, 0);
+ direct.bind(b, k2, 0);
+ direct.bind(c, k1, 0);
+
+ BOOST_CHECK(direct.isBound(a, 0, 0));
+ BOOST_CHECK(direct.isBound(a, &k1, 0));
+ BOOST_CHECK(direct.isBound(a, &k3, 0));
+ BOOST_CHECK(!direct.isBound(a, &k2, 0));
+ BOOST_CHECK(direct.isBound(b, 0, 0));
+ BOOST_CHECK(direct.isBound(b, &k2, 0));
+ BOOST_CHECK(direct.isBound(c, &k1, 0));
+ BOOST_CHECK(!direct.isBound(d, 0, 0));
+ BOOST_CHECK(!direct.isBound(d, &k1, 0));
+ BOOST_CHECK(!direct.isBound(d, &k2, 0));
+ BOOST_CHECK(!direct.isBound(d, &k3, 0));
+
+ TopicExchange topic("topic");
+ topic.bind(a, k1, 0);
+ topic.bind(a, k3, 0);
+ topic.bind(b, k2, 0);
+ topic.bind(c, k1, 0);
+
+ BOOST_CHECK(topic.isBound(a, 0, 0));
+ BOOST_CHECK(topic.isBound(a, &k1, 0));
+ BOOST_CHECK(topic.isBound(a, &k3, 0));
+ BOOST_CHECK(!topic.isBound(a, &k2, 0));
+ BOOST_CHECK(topic.isBound(b, 0, 0));
+ BOOST_CHECK(topic.isBound(b, &k2, 0));
+ BOOST_CHECK(topic.isBound(c, &k1, 0));
+ BOOST_CHECK(!topic.isBound(d, 0, 0));
+ BOOST_CHECK(!topic.isBound(d, &k1, 0));
+ BOOST_CHECK(!topic.isBound(d, &k2, 0));
+ BOOST_CHECK(!topic.isBound(d, &k3, 0));
+
+ HeadersExchange headers("headers");
+ FieldTable args1;
+ args1.setString("x-match", "all");
+ args1.setString("a", "A");
+ args1.setInt("b", 1);
+ FieldTable args2;
+ args2.setString("x-match", "any");
+ args2.setString("a", "A");
+ args2.setInt("b", 1);
+ FieldTable args3;
+ args3.setString("x-match", "any");
+ args3.setString("c", "C");
+ args3.setInt("b", 6);
+
+ headers.bind(a, "", &args1);
+ headers.bind(a, "", &args3);
+ headers.bind(b, "", &args2);
+ headers.bind(c, "", &args1);
- CPPUNIT_ASSERT(headers.isBound(a, 0, 0));
- CPPUNIT_ASSERT(headers.isBound(a, 0, &args1));
- CPPUNIT_ASSERT(headers.isBound(a, 0, &args3));
- CPPUNIT_ASSERT(!headers.isBound(a, 0, &args2));
- CPPUNIT_ASSERT(headers.isBound(b, 0, 0));
- CPPUNIT_ASSERT(headers.isBound(b, 0, &args2));
- CPPUNIT_ASSERT(headers.isBound(c, 0, &args1));
- CPPUNIT_ASSERT(!headers.isBound(d, 0, 0));
- CPPUNIT_ASSERT(!headers.isBound(d, 0, &args1));
- CPPUNIT_ASSERT(!headers.isBound(d, 0, &args2));
- CPPUNIT_ASSERT(!headers.isBound(d, 0, &args3));
- }
-
- void testDeleteGetAndRedeclare() {
- ExchangeRegistry exchanges;
- exchanges.declare("my-exchange", "direct", false, FieldTable());
- exchanges.destroy("my-exchange");
- try {
- exchanges.get("my-exchange");
- } catch (const NotFoundException&) {}
- std::pair<Exchange::shared_ptr, bool> response = exchanges.declare("my-exchange", "direct", false, FieldTable());
- CPPUNIT_ASSERT_EQUAL(string("direct"), response.first->getType());
-
- }
-};
-
-// Make this test suite a plugin.
-CPPUNIT_PLUGIN_IMPLEMENT();
-CPPUNIT_TEST_SUITE_REGISTRATION(ExchangeTest);
+ BOOST_CHECK(headers.isBound(a, 0, 0));
+ BOOST_CHECK(headers.isBound(a, 0, &args1));
+ BOOST_CHECK(headers.isBound(a, 0, &args3));
+ BOOST_CHECK(!headers.isBound(a, 0, &args2));
+ BOOST_CHECK(headers.isBound(b, 0, 0));
+ BOOST_CHECK(headers.isBound(b, 0, &args2));
+ BOOST_CHECK(headers.isBound(c, 0, &args1));
+ BOOST_CHECK(!headers.isBound(d, 0, 0));
+ BOOST_CHECK(!headers.isBound(d, 0, &args1));
+ BOOST_CHECK(!headers.isBound(d, 0, &args2));
+ BOOST_CHECK(!headers.isBound(d, 0, &args3));
+}
+
+QPID_AUTO_TEST_CASE(testDeleteGetAndRedeclare)
+{
+ ExchangeRegistry exchanges;
+ exchanges.declare("my-exchange", "direct", false, FieldTable());
+ exchanges.destroy("my-exchange");
+ try {
+ exchanges.get("my-exchange");
+ } catch (const NotFoundException&) {}
+ std::pair<Exchange::shared_ptr, bool> response = exchanges.declare("my-exchange", "direct", false, FieldTable());
+ BOOST_CHECK_EQUAL(string("direct"), response.first->getType());
+}
+
+QPID_AUTO_TEST_SUITE_END()
diff --git a/cpp/src/tests/FramingTest.cpp b/cpp/src/tests/FramingTest.cpp
index 275d32acfe..21918f2bdd 100644
--- a/cpp/src/tests/FramingTest.cpp
+++ b/cpp/src/tests/FramingTest.cpp
@@ -27,7 +27,7 @@
#include "qpid/framing/all_method_bodies.h"
#include "qpid/framing/amqp_framing.h"
#include "qpid/framing/reply_exceptions.h"
-#include "qpid_test_plugin.h"
+#include "unit_test.h"
#include <boost/bind.hpp>
#include <boost/lexical_cast.hpp>
@@ -49,118 +49,105 @@ std::string tostring(const T& x)
return out.str();
}
-class FramingTest : public CppUnit::TestCase
-{
- CPPUNIT_TEST_SUITE(FramingTest);
- CPPUNIT_TEST(testMessageTransferBody);
- CPPUNIT_TEST(testConnectionSecureBody);
- CPPUNIT_TEST(testConnectionRedirectBody);
- CPPUNIT_TEST(testQueueDeclareBody);
- CPPUNIT_TEST(testConnectionRedirectBodyFrame);
- CPPUNIT_TEST(testMessageCancelBodyFrame);
- CPPUNIT_TEST_SUITE_END();
+QPID_AUTO_TEST_SUITE(FramingTestSuite)
- private:
+QPID_AUTO_TEST_CASE(testMessageTransferBody)
+{
char buffer[1024];
- ProtocolVersion version;
-
- public:
-
- FramingTest() : version(highestProtocolVersion) {}
-
- void testMessageTransferBody()
- {
- Buffer wbuff(buffer, sizeof(buffer));
- MessageTransferBody in(version, "my-exchange", 1, 1);
- in.encode(wbuff);
-
- Buffer rbuff(buffer, sizeof(buffer));
- MessageTransferBody out(version);
- out.decode(rbuff);
- CPPUNIT_ASSERT_EQUAL(tostring(in), tostring(out));
- }
+ ProtocolVersion version(highestProtocolVersion);
+ Buffer wbuff(buffer, sizeof(buffer));
+ MessageTransferBody in(version, "my-exchange", 1, 1);
+ in.encode(wbuff);
+
+ Buffer rbuff(buffer, sizeof(buffer));
+ MessageTransferBody out(version);
+ out.decode(rbuff);
+ BOOST_CHECK_EQUAL(tostring(in), tostring(out));
+}
- void testConnectionSecureBody()
- {
- Buffer wbuff(buffer, sizeof(buffer));
- std::string s = "security credential";
- ConnectionSecureBody in(version, s);
- in.encode(wbuff);
-
- Buffer rbuff(buffer, sizeof(buffer));
- ConnectionSecureBody out(version);
- out.decode(rbuff);
- CPPUNIT_ASSERT_EQUAL(tostring(in), tostring(out));
- }
+QPID_AUTO_TEST_CASE(testConnectionSecureBody)
+{
+ char buffer[1024];
+ ProtocolVersion version(highestProtocolVersion);
+ Buffer wbuff(buffer, sizeof(buffer));
+ std::string s = "security credential";
+ ConnectionSecureBody in(version, s);
+ in.encode(wbuff);
+
+ Buffer rbuff(buffer, sizeof(buffer));
+ ConnectionSecureBody out(version);
+ out.decode(rbuff);
+ BOOST_CHECK_EQUAL(tostring(in), tostring(out));
+}
- void testConnectionRedirectBody()
- {
- Buffer wbuff(buffer, sizeof(buffer));
- std::string a = "hostA";
- std::string b = "hostB";
- Array hosts(0x95);
- hosts.add(boost::shared_ptr<FieldValue>(new Str16Value(a)));
- hosts.add(boost::shared_ptr<FieldValue>(new Str16Value(b)));
+QPID_AUTO_TEST_CASE(testConnectionRedirectBody)
+{
+ char buffer[1024];
+ ProtocolVersion version(highestProtocolVersion);
+ Buffer wbuff(buffer, sizeof(buffer));
+ std::string a = "hostA";
+ std::string b = "hostB";
+ Array hosts(0x95);
+ hosts.add(boost::shared_ptr<FieldValue>(new Str16Value(a)));
+ hosts.add(boost::shared_ptr<FieldValue>(new Str16Value(b)));
- ConnectionRedirectBody in(version, a, hosts);
- in.encode(wbuff);
+ ConnectionRedirectBody in(version, a, hosts);
+ in.encode(wbuff);
- Buffer rbuff(buffer, sizeof(buffer));
- ConnectionRedirectBody out(version);
- out.decode(rbuff);
- CPPUNIT_ASSERT_EQUAL(tostring(in), tostring(out));
- }
-
- void testQueueDeclareBody()
- {
- Buffer wbuff(buffer, sizeof(buffer));
- QueueDeclareBody in(version, "name", "dlq", true, false, true, false, FieldTable());
- in.encode(wbuff);
+ Buffer rbuff(buffer, sizeof(buffer));
+ ConnectionRedirectBody out(version);
+ out.decode(rbuff);
+ BOOST_CHECK_EQUAL(tostring(in), tostring(out));
+}
- Buffer rbuff(buffer, sizeof(buffer));
- QueueDeclareBody out(version);
- out.decode(rbuff);
- CPPUNIT_ASSERT_EQUAL(tostring(in), tostring(out));
- }
+QPID_AUTO_TEST_CASE(testQueueDeclareBody)
+{
+ char buffer[1024];
+ ProtocolVersion version(highestProtocolVersion);
+ Buffer wbuff(buffer, sizeof(buffer));
+ QueueDeclareBody in(version, "name", "dlq", true, false, true, false, FieldTable());
+ in.encode(wbuff);
+
+ Buffer rbuff(buffer, sizeof(buffer));
+ QueueDeclareBody out(version);
+ out.decode(rbuff);
+ BOOST_CHECK_EQUAL(tostring(in), tostring(out));
+}
- void testConnectionRedirectBodyFrame()
- {
- Buffer wbuff(buffer, sizeof(buffer));
- std::string a = "hostA";
- std::string b = "hostB";
- Array hosts(0x95);
- hosts.add(boost::shared_ptr<FieldValue>(new Str16Value(a)));
- hosts.add(boost::shared_ptr<FieldValue>(new Str16Value(b)));
+QPID_AUTO_TEST_CASE(testConnectionRedirectBodyFrame)
+{
+ char buffer[1024];
+ ProtocolVersion version(highestProtocolVersion);
+ Buffer wbuff(buffer, sizeof(buffer));
+ std::string a = "hostA";
+ std::string b = "hostB";
+ Array hosts(0x95);
+ hosts.add(boost::shared_ptr<FieldValue>(new Str16Value(a)));
+ hosts.add(boost::shared_ptr<FieldValue>(new Str16Value(b)));
- AMQFrame in(in_place<ConnectionRedirectBody>(version, a, hosts));
- in.setChannel(999);
- in.encode(wbuff);
-
- Buffer rbuff(buffer, sizeof(buffer));
- AMQFrame out;
- out.decode(rbuff);
- CPPUNIT_ASSERT_EQUAL(tostring(in), tostring(out));
- }
-
- void testMessageCancelBodyFrame()
- {
- Buffer wbuff(buffer, sizeof(buffer));
- AMQFrame in(in_place<MessageCancelBody>(version, "tag"));
- in.setChannel(999);
- in.encode(wbuff);
-
- Buffer rbuff(buffer, sizeof(buffer));
- AMQFrame out;
- out.decode(rbuff);
- CPPUNIT_ASSERT_EQUAL(tostring(in), tostring(out));
- }
-
- };
-
-
-// Make this test suite a plugin.
-CPPUNIT_PLUGIN_IMPLEMENT();
-CPPUNIT_TEST_SUITE_REGISTRATION(FramingTest);
-
+ AMQFrame in(in_place<ConnectionRedirectBody>(version, a, hosts));
+ in.setChannel(999);
+ in.encode(wbuff);
+
+ Buffer rbuff(buffer, sizeof(buffer));
+ AMQFrame out;
+ out.decode(rbuff);
+ BOOST_CHECK_EQUAL(tostring(in), tostring(out));
+}
+QPID_AUTO_TEST_CASE(testMessageCancelBodyFrame)
+{
+ char buffer[1024];
+ ProtocolVersion version(highestProtocolVersion);
+ Buffer wbuff(buffer, sizeof(buffer));
+ AMQFrame in(in_place<MessageCancelBody>(version, "tag"));
+ in.setChannel(999);
+ in.encode(wbuff);
+
+ Buffer rbuff(buffer, sizeof(buffer));
+ AMQFrame out;
+ out.decode(rbuff);
+ BOOST_CHECK_EQUAL(tostring(in), tostring(out));
+}
+QPID_AUTO_TEST_SUITE_END()
diff --git a/cpp/src/tests/HeaderTest.cpp b/cpp/src/tests/HeaderTest.cpp
index 56be38a302..c3b64419ed 100644
--- a/cpp/src/tests/HeaderTest.cpp
+++ b/cpp/src/tests/HeaderTest.cpp
@@ -21,100 +21,90 @@
#include <iostream>
#include "qpid/framing/amqp_framing.h"
#include "qpid/framing/FieldValue.h"
-#include "qpid_test_plugin.h"
+#include "unit_test.h"
using namespace qpid::framing;
using namespace std;
-class HeaderTest : public CppUnit::TestCase
+QPID_AUTO_TEST_SUITE(HeaderTestSuite)
+
+QPID_AUTO_TEST_CASE(testGenericProperties)
+{
+ AMQHeaderBody body;
+ body.get<MessageProperties>(true)->getApplicationHeaders().setString(
+ "A", "BCDE");
+ char buff[100];
+ Buffer wbuffer(buff, 100);
+ body.encode(wbuffer);
+
+ Buffer rbuffer(buff, 100);
+ AMQHeaderBody body2;
+ body2.decode(rbuffer, body.size());
+ MessageProperties* props =
+ body2.get<MessageProperties>(true);
+ BOOST_CHECK_EQUAL(
+ string("BCDE"),
+ props->getApplicationHeaders().get("A")->get<string>());
+}
+
+QPID_AUTO_TEST_CASE(testMessageProperties)
{
- CPPUNIT_TEST_SUITE(HeaderTest);
- CPPUNIT_TEST(testGenericProperties);
- CPPUNIT_TEST(testMessageProperties);
- CPPUNIT_TEST(testDeliveryProperies);
- CPPUNIT_TEST_SUITE_END();
-
- public:
-
- void testGenericProperties()
- {
- AMQHeaderBody body;
- body.get<MessageProperties>(true)->getApplicationHeaders().setString(
- "A", "BCDE");
- char buff[100];
- Buffer wbuffer(buff, 100);
- body.encode(wbuffer);
-
- Buffer rbuffer(buff, 100);
- AMQHeaderBody body2;
- body2.decode(rbuffer, body.size());
- MessageProperties* props =
- body2.get<MessageProperties>(true);
- CPPUNIT_ASSERT_EQUAL(
- string("BCDE"),
- props->getApplicationHeaders().get("A")->get<string>());
- }
-
- void testMessageProperties() {
- AMQFrame out(in_place<AMQHeaderBody>());
- MessageProperties* props1 =
- out.castBody<AMQHeaderBody>()->get<MessageProperties>(true);
-
- props1->setContentLength(42);
- props1->setMessageId(Uuid(true));
- props1->setCorrelationId("correlationId");
- props1->setReplyTo(ReplyTo("ex","key"));
- props1->setContentType("contentType");
- props1->setContentEncoding("contentEncoding");
- props1->setUserId("userId");
- props1->setAppId("appId");
-
- char buff[10000];
- Buffer wbuffer(buff, 10000);
- out.encode(wbuffer);
-
- Buffer rbuffer(buff, 10000);
- AMQFrame in;
- in.decode(rbuffer);
- MessageProperties* props2 =
- in.castBody<AMQHeaderBody>()->get<MessageProperties>(true);
-
- CPPUNIT_ASSERT_EQUAL(props1->getContentLength(), props2->getContentLength());
- CPPUNIT_ASSERT_EQUAL(props1->getMessageId(), props2->getMessageId());
- CPPUNIT_ASSERT_EQUAL(props1->getCorrelationId(), props2->getCorrelationId());
- CPPUNIT_ASSERT_EQUAL(props1->getContentType(), props2->getContentType());
- CPPUNIT_ASSERT_EQUAL(props1->getContentEncoding(), props2->getContentEncoding());
- CPPUNIT_ASSERT_EQUAL(props1->getUserId(), props2->getUserId());
- CPPUNIT_ASSERT_EQUAL(props1->getAppId(), props2->getAppId());
-
- }
-
- void testDeliveryProperies() {
- AMQFrame out(in_place<AMQHeaderBody>());
- DeliveryProperties* props1 =
- out.castBody<AMQHeaderBody>()->get<DeliveryProperties>(true);
-
- props1->setDiscardUnroutable(true);
- props1->setExchange("foo");
-
- char buff[10000];
- Buffer wbuffer(buff, 10000);
- out.encode(wbuffer);
-
- Buffer rbuffer(buff, 10000);
- AMQFrame in;
- in.decode(rbuffer);
- DeliveryProperties* props2 =
- in.castBody<AMQHeaderBody>()->get<DeliveryProperties>(true);
-
- CPPUNIT_ASSERT(props2->getDiscardUnroutable());
- CPPUNIT_ASSERT_EQUAL(string("foo"), props2->getExchange());
- CPPUNIT_ASSERT(!props2->hasTimestamp());
- }
-
-};
-
-// Make this test suite a plugin.
-CPPUNIT_PLUGIN_IMPLEMENT();
-CPPUNIT_TEST_SUITE_REGISTRATION(HeaderTest);
+ AMQFrame out(in_place<AMQHeaderBody>());
+ MessageProperties* props1 =
+ out.castBody<AMQHeaderBody>()->get<MessageProperties>(true);
+
+ props1->setContentLength(42);
+ props1->setMessageId(Uuid(true));
+ props1->setCorrelationId("correlationId");
+ props1->setReplyTo(ReplyTo("ex","key"));
+ props1->setContentType("contentType");
+ props1->setContentEncoding("contentEncoding");
+ props1->setUserId("userId");
+ props1->setAppId("appId");
+
+ char buff[10000];
+ Buffer wbuffer(buff, 10000);
+ out.encode(wbuffer);
+
+ Buffer rbuffer(buff, 10000);
+ AMQFrame in;
+ in.decode(rbuffer);
+ MessageProperties* props2 =
+ in.castBody<AMQHeaderBody>()->get<MessageProperties>(true);
+
+ BOOST_CHECK_EQUAL(props1->getContentLength(), props2->getContentLength());
+ BOOST_CHECK_EQUAL(props1->getMessageId(), props2->getMessageId());
+ BOOST_CHECK_EQUAL(props1->getCorrelationId(), props2->getCorrelationId());
+ BOOST_CHECK_EQUAL(props1->getContentType(), props2->getContentType());
+ BOOST_CHECK_EQUAL(props1->getContentEncoding(), props2->getContentEncoding());
+ BOOST_CHECK_EQUAL(props1->getUserId(), props2->getUserId());
+ BOOST_CHECK_EQUAL(props1->getAppId(), props2->getAppId());
+
+}
+
+QPID_AUTO_TEST_CASE(testDeliveryProperies)
+{
+ AMQFrame out(in_place<AMQHeaderBody>());
+ DeliveryProperties* props1 =
+ out.castBody<AMQHeaderBody>()->get<DeliveryProperties>(true);
+
+ props1->setDiscardUnroutable(true);
+ props1->setExchange("foo");
+
+ char buff[10000];
+ Buffer wbuffer(buff, 10000);
+ out.encode(wbuffer);
+
+ Buffer rbuffer(buff, 10000);
+ AMQFrame in;
+ in.decode(rbuffer);
+ DeliveryProperties* props2 =
+ in.castBody<AMQHeaderBody>()->get<DeliveryProperties>(true);
+
+ BOOST_CHECK(props2->getDiscardUnroutable());
+ BOOST_CHECK_EQUAL(string("foo"), props2->getExchange());
+ BOOST_CHECK(!props2->hasTimestamp());
+}
+
+QPID_AUTO_TEST_SUITE_END()
diff --git a/cpp/src/tests/HeadersExchangeTest.cpp b/cpp/src/tests/HeadersExchangeTest.cpp
index f07f238ee4..46933f955a 100644
--- a/cpp/src/tests/HeadersExchangeTest.cpp
+++ b/cpp/src/tests/HeadersExchangeTest.cpp
@@ -23,109 +23,93 @@
#include "qpid/broker/HeadersExchange.h"
#include "qpid/framing/FieldTable.h"
#include "qpid/framing/FieldValue.h"
-#include "qpid_test_plugin.h"
+#include "unit_test.h"
using namespace qpid::broker;
using namespace qpid::framing;
-class HeadersExchangeTest : public CppUnit::TestCase
+QPID_AUTO_TEST_SUITE(HeadersExchangeTestSuite)
+
+QPID_AUTO_TEST_CASE(testMatchAll)
{
- CPPUNIT_TEST_SUITE(HeadersExchangeTest);
- CPPUNIT_TEST(testMatchAll);
- CPPUNIT_TEST(testMatchAny);
- CPPUNIT_TEST(testMatchEmptyValue);
- CPPUNIT_TEST(testMatchEmptyArgs);
- CPPUNIT_TEST(testMatchNoXMatch);
- CPPUNIT_TEST(testBindNoXMatch);
- CPPUNIT_TEST_SUITE_END();
-
- public:
-
- void testMatchAll()
- {
- FieldTable b, m, n;
- b.setString("x-match", "all");
- b.setString("foo", "FOO");
- b.setInt("n", 42);
- m.setString("foo", "FOO");
- m.setInt("n", 42);
- CPPUNIT_ASSERT(HeadersExchange::match(b, m));
+ FieldTable b, m, n;
+ b.setString("x-match", "all");
+ b.setString("foo", "FOO");
+ b.setInt("n", 42);
+ m.setString("foo", "FOO");
+ m.setInt("n", 42);
+ BOOST_CHECK(HeadersExchange::match(b, m));
- // Ignore extras.
- m.setString("extra", "x");
- CPPUNIT_ASSERT(HeadersExchange::match(b, m));
+ // Ignore extras.
+ m.setString("extra", "x");
+ BOOST_CHECK(HeadersExchange::match(b, m));
- // Fail mismatch, wrong value.
- m.setString("foo", "NotFoo");
- CPPUNIT_ASSERT(!HeadersExchange::match(b, m));
+ // Fail mismatch, wrong value.
+ m.setString("foo", "NotFoo");
+ BOOST_CHECK(!HeadersExchange::match(b, m));
- // Fail mismatch, missing value
- n.setInt("n", 42);
- n.setString("extra", "x");
- CPPUNIT_ASSERT(!HeadersExchange::match(b, n));
- }
+ // Fail mismatch, missing value
+ n.setInt("n", 42);
+ n.setString("extra", "x");
+ BOOST_CHECK(!HeadersExchange::match(b, n));
+}
- void testMatchAny()
- {
- FieldTable b, m, n;
- b.setString("x-match", "any");
- b.setString("foo", "FOO");
- b.setInt("n", 42);
- m.setString("foo", "FOO");
- CPPUNIT_ASSERT(!HeadersExchange::match(b, n));
- CPPUNIT_ASSERT(HeadersExchange::match(b, m));
- m.setInt("n", 42);
- CPPUNIT_ASSERT(HeadersExchange::match(b, m));
- }
+QPID_AUTO_TEST_CASE(testMatchAny)
+{
+ FieldTable b, m, n;
+ b.setString("x-match", "any");
+ b.setString("foo", "FOO");
+ b.setInt("n", 42);
+ m.setString("foo", "FOO");
+ BOOST_CHECK(!HeadersExchange::match(b, n));
+ BOOST_CHECK(HeadersExchange::match(b, m));
+ m.setInt("n", 42);
+ BOOST_CHECK(HeadersExchange::match(b, m));
+}
- void testMatchEmptyValue()
- {
- FieldTable b, m;
- b.setString("x-match", "all");
- b.set("foo", FieldTable::ValuePtr());
- b.set("n", FieldTable::ValuePtr());
- CPPUNIT_ASSERT(!HeadersExchange::match(b, m));
- m.setString("foo", "blah");
- m.setInt("n", 123);
- }
+QPID_AUTO_TEST_CASE(testMatchEmptyValue)
+{
+ FieldTable b, m;
+ b.setString("x-match", "all");
+ b.set("foo", FieldTable::ValuePtr());
+ b.set("n", FieldTable::ValuePtr());
+ BOOST_CHECK(!HeadersExchange::match(b, m));
+ m.setString("foo", "blah");
+ m.setInt("n", 123);
+}
- void testMatchEmptyArgs()
- {
- FieldTable b, m;
- m.setString("foo", "FOO");
+QPID_AUTO_TEST_CASE(testMatchEmptyArgs)
+{
+ FieldTable b, m;
+ m.setString("foo", "FOO");
- b.setString("x-match", "all");
- CPPUNIT_ASSERT(HeadersExchange::match(b, m));
- b.setString("x-match", "any");
- CPPUNIT_ASSERT(!HeadersExchange::match(b, m));
- }
+ b.setString("x-match", "all");
+ BOOST_CHECK(HeadersExchange::match(b, m));
+ b.setString("x-match", "any");
+ BOOST_CHECK(!HeadersExchange::match(b, m));
+}
- void testMatchNoXMatch()
- {
- FieldTable b, m;
- b.setString("foo", "FOO");
- m.setString("foo", "FOO");
- CPPUNIT_ASSERT(!HeadersExchange::match(b, m));
- }
+QPID_AUTO_TEST_CASE(testMatchNoXMatch)
+{
+ FieldTable b, m;
+ b.setString("foo", "FOO");
+ m.setString("foo", "FOO");
+ BOOST_CHECK(!HeadersExchange::match(b, m));
+}
- void testBindNoXMatch()
- {
- HeadersExchange exchange("test");
- Queue::shared_ptr queue;
- std::string key;
- FieldTable args;
- try {
- //just checking this doesn't cause assertion etc
- exchange.bind(queue, key, &args);
- } catch(qpid::Exception&) {
- //expected
- }
+QPID_AUTO_TEST_CASE(testBindNoXMatch)
+{
+ HeadersExchange exchange("test");
+ Queue::shared_ptr queue;
+ std::string key;
+ FieldTable args;
+ try {
+ //just checking this doesn't cause assertion etc
+ exchange.bind(queue, key, &args);
+ } catch(qpid::Exception&) {
+ //expected
}
-
-
-};
-
-// make this test suite a plugin.
-CPPUNIT_PLUGIN_IMPLEMENT();
-CPPUNIT_TEST_SUITE_REGISTRATION(HeadersExchangeTest);
+}
+
+QPID_AUTO_TEST_SUITE_END()
diff --git a/cpp/src/tests/Makefile.am b/cpp/src/tests/Makefile.am
index 6c68a9d648..41e7c525cf 100644
--- a/cpp/src/tests/Makefile.am
+++ b/cpp/src/tests/Makefile.am
@@ -1,8 +1,8 @@
-AM_CXXFLAGS = $(WARNING_CFLAGS) $(CPPUNIT_CXXFLAGS) $(CFLAGS) $(APR_CXXFLAGS) -DBOOST_TEST_DYN_LINK
+AM_CXXFLAGS = $(WARNING_CFLAGS) $(CFLAGS) $(APR_CXXFLAGS) -DBOOST_TEST_DYN_LINK
INCLUDES = -I$(srcdir)/.. -I$(srcdir)/../gen -I$(top_builddir)/src/gen
abs_builddir=@abs_builddir@
-extra_libs = $(CPPUNIT_LIBS)
+extra_libs =
lib_client = $(abs_builddir)/../libqpidclient.la
lib_common = $(abs_builddir)/../libqpidcommon.la
lib_broker = $(abs_builddir)/../libqpidbroker.la
@@ -45,7 +45,25 @@ unit_test_SOURCES= unit_test.cpp unit_test.h \
StringUtils.cpp \
IncompleteMessageList.cpp \
RangeSet.cpp \
- AtomicValue.cpp
+ AtomicValue.cpp \
+ QueueTest.cpp \
+ AccumulatedAckTest.cpp \
+ DtxWorkRecordTest.cpp \
+ DeliveryRecordTest.cpp \
+ ExchangeTest.cpp \
+ HeadersExchangeTest.cpp \
+ MessageTest.cpp \
+ QueueRegistryTest.cpp \
+ QueuePolicyTest.cpp \
+ FramingTest.cpp \
+ HeaderTest.cpp \
+ SequenceNumberTest.cpp
+ TimerTest.cpp \
+ TopicExchangeTest.cpp \
+ TxAckTest.cpp \
+ TxBufferTest.cpp \
+ TxPublishTest.cpp \
+ MessageBuilderTest.cpp
if HAVE_XML
unit_test_SOURCES+= XmlClientSessionTest.cpp
@@ -78,54 +96,33 @@ txtest_SOURCES=txtest.cpp TestOptions.h
txtest_LDADD=$(lib_client)
check_PROGRAMS+=latencytest
-latencytest_SOURCES=latencytest.cpp TestOptions.h
+latencytest_SOURCES=latencytest.cpp TestOptions.h
latencytest_LDADD=$(lib_client)
-# NB: CppUnit test libraries below will be migrated to boost test programs.
-#
+check_PROGRAMS+=client_test
+client_test_SOURCES=client_test.cpp TestOptions.h
+client_test_LDADD=$(lib_client)
+
+check_PROGRAMS+=topic_listener
+topic_listener_SOURCES=topic_listener.cpp TestOptions.h
+topic_listener_LDADD=$(lib_client)
+
+check_PROGRAMS+=topic_publisher
+topic_publisher_SOURCES=topic_publisher.cpp TestOptions.h
+topic_publisher_LDADD=$(lib_client)
-# cppunit tests
-broker_unit_tests = \
- AccumulatedAckTest \
- DtxWorkRecordTest \
- DeliveryRecordTest \
- ExchangeTest \
- HeadersExchangeTest \
- MessageTest \
- QueueRegistryTest \
- QueueTest \
- QueuePolicyTest \
- TimerTest \
- TopicExchangeTest \
- TxAckTest \
- TxBufferTest \
- TxPublishTest \
- MessageBuilderTest
-
-framing_unit_tests = \
- FramingTest \
- HeaderTest \
- SequenceNumberTest
-
-unit_tests = \
- $(broker_unit_tests) \
- $(client_unit_tests) \
- $(framing_unit_tests) \
- $(misc_unit_tests)
-
-# Executables for client tests
-
-testprogs= \
- client_test \
- topic_listener \
- topic_publisher
-
-check_PROGRAMS += $(testprogs) publish consume
+check_PROGRAMS+=publish
+publish_SOURCES=publish.cpp TestOptions.h
+publish_LDADD=$(lib_client)
+
+check_PROGRAMS+=consume
+consume_SOURCES=consume.cpp TestOptions.h
+consume_LDADD=$(lib_client)
TESTS_ENVIRONMENT = VALGRIND=$(VALGRIND) srcdir=$(srcdir) QPID_DATA_DIR= $(srcdir)/run_test
system_tests = client_test quick_perftest quick_topictest
-TESTS += run-unit-tests start_broker $(system_tests) python_tests stop_broker run_federation_tests
+TESTS += start_broker $(system_tests) python_tests stop_broker run_federation_tests
EXTRA_DIST += \
run_test vg_check \
@@ -141,32 +138,11 @@ EXTRA_DIST += \
TxMocks.h \
qpid_test_plugin.h
-include gen.mk
-
check_LTLIBRARIES += libdlclose_noop.la
libdlclose_noop_la_LDFLAGS = -module -rpath $(abs_builddir)
libdlclose_noop_la_SOURCES = dlclose_noop.c
-gen.mk: Makefile.am
- ( \
- for i in $(testprogs); do \
- echo $${i}_SOURCES = $$i.cpp; \
- echo $${i}_LDADD = '$$(lib_client) $$(lib_common) $$(extra_libs)'; \
- done; \
- libs=; \
- for i in $(unit_tests); do \
- echo "check_LTLIBRARIES +=$${i}.la"; \
- echo $${i}_la_SOURCES = $$i.cpp; \
- echo $${i}_la_LIBADD = '$$(lib_common) $$(lib_client)'; \
- echo $${i}_la_LIBADD += '$$(lib_broker) $$(extra_libs)'; \
- echo $${i}_la_LDFLAGS = "-module -rpath `pwd`"; \
- done; \
- ) \
- > $@-t
- mv $@-t $@
-
CLEANFILES+=valgrind.out *.log *.vglog dummy_test $(unit_wrappers)
-MAINTAINERCLEANFILES=gen.mk
# FIXME aconway 2008-05-23: Disabled interop_runner because it uses
# the obsolete Channel class. Convert to Session and re-enable.
@@ -185,13 +161,6 @@ MAINTAINERCLEANFILES=gen.mk
# TestOptions.h
# interop_runner_LDADD = $(lib_client) $(lib_common) $(extra_libs)
-publish_SOURCES = publish.cpp
-publish_LDADD = $(lib_client) $(lib_common) $(extra_libs)
-
-consume_SOURCES = consume.cpp
-consume_LDADD = $(lib_client) $(lib_common) $(extra_libs)
-
-
# Longer running stability tests, not run by default check: target.
# Not run under valgrind, too slow
diff --git a/cpp/src/tests/MessageBuilderTest.cpp b/cpp/src/tests/MessageBuilderTest.cpp
index 69e2ec1c1e..35b147a875 100644
--- a/cpp/src/tests/MessageBuilderTest.cpp
+++ b/cpp/src/tests/MessageBuilderTest.cpp
@@ -24,7 +24,7 @@
#include "qpid/framing/frame_functors.h"
#include "qpid/framing/MessageTransferBody.h"
#include "qpid/framing/TypeFilter.h"
-#include "qpid_test_plugin.h"
+#include "unit_test.h"
#include <list>
using namespace boost;
@@ -32,194 +32,185 @@ using namespace qpid::broker;
using namespace qpid::framing;
using namespace qpid::sys;
-class MessageBuilderTest : public CppUnit::TestCase
+class MockMessageStore : public NullMessageStore
{
- class MockMessageStore : public NullMessageStore
- {
- enum Op {STAGE=1, APPEND=2};
+ enum Op {STAGE=1, APPEND=2};
- uint64_t id;
- intrusive_ptr<PersistableMessage> expectedMsg;
- string expectedData;
- std::list<Op> ops;
+ uint64_t id;
+ intrusive_ptr<PersistableMessage> expectedMsg;
+ string expectedData;
+ std::list<Op> ops;
- void checkExpectation(Op actual)
- {
- CPPUNIT_ASSERT_EQUAL(ops.front(), actual);
- ops.pop_front();
- }
-
- public:
- MockMessageStore() : id(0), expectedMsg(0) {}
-
- void expectStage(PersistableMessage& msg)
- {
- expectedMsg = &msg;
- ops.push_back(STAGE);
- }
-
- void expectAppendContent(PersistableMessage& msg, const string& data)
- {
- expectedMsg = &msg;
- expectedData = data;
- ops.push_back(APPEND);
- }
-
- void stage(intrusive_ptr<PersistableMessage>& msg)
- {
- checkExpectation(STAGE);
- CPPUNIT_ASSERT_EQUAL(expectedMsg, msg);
- msg->setPersistenceId(++id);
- }
-
- void appendContent(intrusive_ptr<const PersistableMessage>& msg, const string& data)
- {
- checkExpectation(APPEND);
- CPPUNIT_ASSERT_EQUAL(static_pointer_cast<const PersistableMessage>(expectedMsg), msg);
- CPPUNIT_ASSERT_EQUAL(expectedData, data);
- }
-
- bool expectationsMet()
- {
- return ops.empty();
- }
- };
-
- CPPUNIT_TEST_SUITE(MessageBuilderTest);
- CPPUNIT_TEST(testHeaderOnly);
- CPPUNIT_TEST(test1ContentFrame);
- CPPUNIT_TEST(test2ContentFrames);
- CPPUNIT_TEST(testStaging);
- CPPUNIT_TEST_SUITE_END();
+ void checkExpectation(Op actual)
+ {
+ BOOST_CHECK_EQUAL(ops.front(), actual);
+ ops.pop_front();
+ }
public:
+ MockMessageStore() : id(0), expectedMsg(0) {}
- void testHeaderOnly(){
- MessageBuilder builder(0, 0);
- builder.start(SequenceNumber());
-
- std::string exchange("builder-exchange");
- std::string key("builder-exchange");
-
- AMQFrame method(in_place<MessageTransferBody>(
- ProtocolVersion(), exchange, 0, 0));
- AMQFrame header(in_place<AMQHeaderBody>());
-
- header.castBody<AMQHeaderBody>()->get<MessageProperties>(true)->setContentLength(0);
- header.castBody<AMQHeaderBody>()->get<DeliveryProperties>(true)->setRoutingKey(key);
+ void expectStage(PersistableMessage& msg)
+ {
+ expectedMsg = &msg;
+ ops.push_back(STAGE);
+ }
- builder.handle(method);
- builder.handle(header);
+ void expectAppendContent(PersistableMessage& msg, const string& data)
+ {
+ expectedMsg = &msg;
+ expectedData = data;
+ ops.push_back(APPEND);
+ }
- CPPUNIT_ASSERT(builder.getMessage());
- CPPUNIT_ASSERT_EQUAL(exchange, builder.getMessage()->getExchangeName());
- CPPUNIT_ASSERT_EQUAL(key, builder.getMessage()->getRoutingKey());
- CPPUNIT_ASSERT(builder.getMessage()->getFrames().isComplete());
+ void stage(intrusive_ptr<PersistableMessage>& msg)
+ {
+ checkExpectation(STAGE);
+ BOOST_CHECK_EQUAL(expectedMsg, msg);
+ msg->setPersistenceId(++id);
}
- void test1ContentFrame(){
- MessageBuilder builder(0, 0);
- builder.start(SequenceNumber());
+ void appendContent(intrusive_ptr<const PersistableMessage>& msg, const string& data)
+ {
+ checkExpectation(APPEND);
+ BOOST_CHECK_EQUAL(static_pointer_cast<const PersistableMessage>(expectedMsg), msg);
+ BOOST_CHECK_EQUAL(expectedData, data);
+ }
- std::string data("abcdefg");
- std::string exchange("builder-exchange");
- std::string key("builder-exchange");
+ bool expectationsMet()
+ {
+ return ops.empty();
+ }
+};
- AMQFrame method(in_place<MessageTransferBody>(ProtocolVersion(), exchange, 0, 0));
- AMQFrame header(in_place<AMQHeaderBody>());
- AMQFrame content(in_place<AMQContentBody>(data));
- method.setEof(false);
- header.setBof(false);
- header.setEof(false);
- content.setBof(false);
+QPID_AUTO_TEST_SUITE(MessageBuilderTestSuite)
+
+QPID_AUTO_TEST_CASE(testHeaderOnly)
+{
+ MessageBuilder builder(0, 0);
+ builder.start(SequenceNumber());
- header.castBody<AMQHeaderBody>()->get<MessageProperties>(true)->setContentLength(data.size());
- header.castBody<AMQHeaderBody>()->get<DeliveryProperties>(true)->setRoutingKey(key);
+ std::string exchange("builder-exchange");
+ std::string key("builder-exchange");
- builder.handle(method);
- CPPUNIT_ASSERT(builder.getMessage());
- CPPUNIT_ASSERT(!builder.getMessage()->getFrames().isComplete());
+ AMQFrame method(in_place<MessageTransferBody>(
+ ProtocolVersion(), exchange, 0, 0));
+ AMQFrame header(in_place<AMQHeaderBody>());
- builder.handle(header);
- CPPUNIT_ASSERT(builder.getMessage());
- CPPUNIT_ASSERT(!builder.getMessage()->getFrames().isComplete());
+ header.castBody<AMQHeaderBody>()->get<MessageProperties>(true)->setContentLength(0);
+ header.castBody<AMQHeaderBody>()->get<DeliveryProperties>(true)->setRoutingKey(key);
- builder.handle(content);
- CPPUNIT_ASSERT(builder.getMessage());
- CPPUNIT_ASSERT(builder.getMessage()->getFrames().isComplete());
- }
+ builder.handle(method);
+ builder.handle(header);
- void test2ContentFrames(){
- MessageBuilder builder(0, 0);
- builder.start(SequenceNumber());
-
- std::string data1("abcdefg");
- std::string data2("hijklmn");
- std::string exchange("builder-exchange");
- std::string key("builder-exchange");
-
- AMQFrame method(in_place<MessageTransferBody>(
- ProtocolVersion(), exchange, 0, 0));
- AMQFrame header(in_place<AMQHeaderBody>());
- AMQFrame content1(in_place<AMQContentBody>(data1));
- AMQFrame content2(in_place<AMQContentBody>(data2));
- method.setEof(false);
- header.setBof(false);
- header.setEof(false);
- content1.setBof(false);
- content1.setEof(false);
- content2.setBof(false);
-
- header.castBody<AMQHeaderBody>()->get<MessageProperties>(true)->setContentLength(data1.size() + data2.size());
- header.castBody<AMQHeaderBody>()->get<DeliveryProperties>(true)->setRoutingKey(key);
-
- builder.handle(method);
- builder.handle(header);
- builder.handle(content1);
- CPPUNIT_ASSERT(builder.getMessage());
- CPPUNIT_ASSERT(!builder.getMessage()->getFrames().isComplete());
-
- builder.handle(content2);
- CPPUNIT_ASSERT(builder.getMessage());
- CPPUNIT_ASSERT(builder.getMessage()->getFrames().isComplete());
- }
+ BOOST_CHECK(builder.getMessage());
+ BOOST_CHECK_EQUAL(exchange, builder.getMessage()->getExchangeName());
+ BOOST_CHECK_EQUAL(key, builder.getMessage()->getRoutingKey());
+ BOOST_CHECK(builder.getMessage()->getFrames().isComplete());
+}
- void testStaging(){
- MockMessageStore store;
- MessageBuilder builder(&store, 5);
- builder.start(SequenceNumber());
+QPID_AUTO_TEST_CASE(test1ContentFrame)
+{
+ MessageBuilder builder(0, 0);
+ builder.start(SequenceNumber());
+
+ std::string data("abcdefg");
+ std::string exchange("builder-exchange");
+ std::string key("builder-exchange");
+
+ AMQFrame method(in_place<MessageTransferBody>(ProtocolVersion(), exchange, 0, 0));
+ AMQFrame header(in_place<AMQHeaderBody>());
+ AMQFrame content(in_place<AMQContentBody>(data));
+ method.setEof(false);
+ header.setBof(false);
+ header.setEof(false);
+ content.setBof(false);
+
+ header.castBody<AMQHeaderBody>()->get<MessageProperties>(true)->setContentLength(data.size());
+ header.castBody<AMQHeaderBody>()->get<DeliveryProperties>(true)->setRoutingKey(key);
+
+ builder.handle(method);
+ BOOST_CHECK(builder.getMessage());
+ BOOST_CHECK(!builder.getMessage()->getFrames().isComplete());
+
+ builder.handle(header);
+ BOOST_CHECK(builder.getMessage());
+ BOOST_CHECK(!builder.getMessage()->getFrames().isComplete());
+
+ builder.handle(content);
+ BOOST_CHECK(builder.getMessage());
+ BOOST_CHECK(builder.getMessage()->getFrames().isComplete());
+}
+
+QPID_AUTO_TEST_CASE(test2ContentFrames)
+{
+ MessageBuilder builder(0, 0);
+ builder.start(SequenceNumber());
+
+ std::string data1("abcdefg");
+ std::string data2("hijklmn");
+ std::string exchange("builder-exchange");
+ std::string key("builder-exchange");
+
+ AMQFrame method(in_place<MessageTransferBody>(
+ ProtocolVersion(), exchange, 0, 0));
+ AMQFrame header(in_place<AMQHeaderBody>());
+ AMQFrame content1(in_place<AMQContentBody>(data1));
+ AMQFrame content2(in_place<AMQContentBody>(data2));
+ method.setEof(false);
+ header.setBof(false);
+ header.setEof(false);
+ content1.setBof(false);
+ content1.setEof(false);
+ content2.setBof(false);
+
+ header.castBody<AMQHeaderBody>()->get<MessageProperties>(true)->setContentLength(data1.size() + data2.size());
+ header.castBody<AMQHeaderBody>()->get<DeliveryProperties>(true)->setRoutingKey(key);
+
+ builder.handle(method);
+ builder.handle(header);
+ builder.handle(content1);
+ BOOST_CHECK(builder.getMessage());
+ BOOST_CHECK(!builder.getMessage()->getFrames().isComplete());
+
+ builder.handle(content2);
+ BOOST_CHECK(builder.getMessage());
+ BOOST_CHECK(builder.getMessage()->getFrames().isComplete());
+}
+
+QPID_AUTO_TEST_CASE(testStaging)
+{
+ MockMessageStore store;
+ MessageBuilder builder(&store, 5);
+ builder.start(SequenceNumber());
- std::string data1("abcdefg");
- std::string data2("hijklmn");
- std::string exchange("builder-exchange");
- std::string key("builder-exchange");
-
- AMQFrame method(in_place<MessageTransferBody>(
- ProtocolVersion(), exchange, 0, 0));
- AMQFrame header(in_place<AMQHeaderBody>());
- AMQFrame content1(in_place<AMQContentBody>(data1));
- AMQFrame content2(in_place<AMQContentBody>(data2));
-
- header.castBody<AMQHeaderBody>()->get<MessageProperties>(true)->setContentLength(data1.size() + data2.size());
- header.castBody<AMQHeaderBody>()->get<DeliveryProperties>(true)->setRoutingKey(key);
-
- builder.handle(method);
- builder.handle(header);
-
- store.expectStage(*builder.getMessage());
- builder.handle(content1);
- CPPUNIT_ASSERT(store.expectationsMet());
- CPPUNIT_ASSERT_EQUAL((uint64_t) 1, builder.getMessage()->getPersistenceId());
-
- store.expectAppendContent(*builder.getMessage(), data2);
- builder.handle(content2);
- CPPUNIT_ASSERT(store.expectationsMet());
-
- //were the content frames dropped?
- CPPUNIT_ASSERT(!builder.getMessage()->isContentLoaded());
- }
-};
-
-// Make this test suite a plugin.
-CPPUNIT_PLUGIN_IMPLEMENT();
-CPPUNIT_TEST_SUITE_REGISTRATION(MessageBuilderTest);
+ std::string data1("abcdefg");
+ std::string data2("hijklmn");
+ std::string exchange("builder-exchange");
+ std::string key("builder-exchange");
+
+ AMQFrame method(in_place<MessageTransferBody>(
+ ProtocolVersion(), exchange, 0, 0));
+ AMQFrame header(in_place<AMQHeaderBody>());
+ AMQFrame content1(in_place<AMQContentBody>(data1));
+ AMQFrame content2(in_place<AMQContentBody>(data2));
+
+ header.castBody<AMQHeaderBody>()->get<MessageProperties>(true)->setContentLength(data1.size() + data2.size());
+ header.castBody<AMQHeaderBody>()->get<DeliveryProperties>(true)->setRoutingKey(key);
+
+ builder.handle(method);
+ builder.handle(header);
+
+ store.expectStage(*builder.getMessage());
+ builder.handle(content1);
+ BOOST_CHECK(store.expectationsMet());
+ BOOST_CHECK_EQUAL((uint64_t) 1, builder.getMessage()->getPersistenceId());
+
+ store.expectAppendContent(*builder.getMessage(), data2);
+ builder.handle(content2);
+ BOOST_CHECK(store.expectationsMet());
+ //were the content frames dropped?
+ BOOST_CHECK_ASSERT(!builder.getMessage()->isContentLoaded());
+}
+
+QPID_AUTO_TEST_SUITE_END()
diff --git a/cpp/src/tests/MessageTest.cpp b/cpp/src/tests/MessageTest.cpp
index f642658825..582844e6dc 100644
--- a/cpp/src/tests/MessageTest.cpp
+++ b/cpp/src/tests/MessageTest.cpp
@@ -25,7 +25,7 @@
#include "qpid/framing/FieldValue.h"
#include "qpid/framing/Uuid.h"
-#include "qpid_test_plugin.h"
+#include "unit_test.h"
#include <iostream>
@@ -33,67 +33,57 @@ using namespace boost;
using namespace qpid::broker;
using namespace qpid::framing;
+QPID_AUTO_TEST_SUITE(MessageTestSuite)
-class MessageTest : public CppUnit::TestCase
+QPID_AUTO_TEST_CASE(testEncodeDecode)
{
- CPPUNIT_TEST_SUITE(MessageTest);
- CPPUNIT_TEST(testEncodeDecode);
- CPPUNIT_TEST_SUITE_END();
+ string exchange = "MyExchange";
+ string routingKey = "MyRoutingKey";
+ Uuid messageId(true);
+ string data1("abcdefg");
+ string data2("hijklmn");
- public:
+ intrusive_ptr<Message> msg(new Message());
- void testEncodeDecode()
- {
- string exchange = "MyExchange";
- string routingKey = "MyRoutingKey";
- Uuid messageId(true);
- string data1("abcdefg");
- string data2("hijklmn");
+ AMQFrame method(in_place<MessageTransferBody>(
+ ProtocolVersion(), exchange, 0, 0));
+ AMQFrame header(in_place<AMQHeaderBody>());
+ AMQFrame content1(in_place<AMQContentBody>(data1));
+ AMQFrame content2(in_place<AMQContentBody>(data2));
- intrusive_ptr<Message> msg(new Message());
+ msg->getFrames().append(method);
+ msg->getFrames().append(header);
+ msg->getFrames().append(content1);
+ msg->getFrames().append(content2);
- AMQFrame method(in_place<MessageTransferBody>(
- ProtocolVersion(), exchange, 0, 0));
- AMQFrame header(in_place<AMQHeaderBody>());
- AMQFrame content1(in_place<AMQContentBody>(data1));
- AMQFrame content2(in_place<AMQContentBody>(data2));
+ MessageProperties* mProps = msg->getFrames().getHeaders()->get<MessageProperties>(true);
+ mProps->setContentLength(data1.size() + data2.size());
+ mProps->setMessageId(messageId);
+ FieldTable applicationHeaders;
+ applicationHeaders.setString("abc", "xyz");
+ mProps->setApplicationHeaders(applicationHeaders);
+ DeliveryProperties* dProps = msg->getFrames().getHeaders()->get<DeliveryProperties>(true);
+ dProps->setRoutingKey(routingKey);
+ dProps->setDeliveryMode(PERSISTENT);
+ BOOST_CHECK(msg->isPersistent());
- msg->getFrames().append(method);
- msg->getFrames().append(header);
- msg->getFrames().append(content1);
- msg->getFrames().append(content2);
-
- MessageProperties* mProps = msg->getFrames().getHeaders()->get<MessageProperties>(true);
- mProps->setContentLength(data1.size() + data2.size());
- mProps->setMessageId(messageId);
- FieldTable applicationHeaders;
- applicationHeaders.setString("abc", "xyz");
- mProps->setApplicationHeaders(applicationHeaders);
- DeliveryProperties* dProps = msg->getFrames().getHeaders()->get<DeliveryProperties>(true);
- dProps->setRoutingKey(routingKey);
- dProps->setDeliveryMode(PERSISTENT);
- CPPUNIT_ASSERT(msg->isPersistent());
-
- char* buff = static_cast<char*>(::alloca(msg->encodedSize()));
- Buffer wbuffer(buff, msg->encodedSize());
- msg->encode(wbuffer);
+ char* buff = static_cast<char*>(::alloca(msg->encodedSize()));
+ Buffer wbuffer(buff, msg->encodedSize());
+ msg->encode(wbuffer);
- Buffer rbuffer(buff, msg->encodedSize());
- msg = new Message();
- msg->decodeHeader(rbuffer);
- msg->decodeContent(rbuffer);
- CPPUNIT_ASSERT_EQUAL(exchange, msg->getExchangeName());
- CPPUNIT_ASSERT_EQUAL(routingKey, msg->getRoutingKey());
- CPPUNIT_ASSERT_EQUAL((uint64_t) data1.size() + data2.size(), msg->contentSize());
- CPPUNIT_ASSERT_EQUAL((uint64_t) data1.size() + data2.size(), msg->getProperties<MessageProperties>()->getContentLength());
- CPPUNIT_ASSERT_EQUAL(messageId, msg->getProperties<MessageProperties>()->getMessageId());
- CPPUNIT_ASSERT_EQUAL(string("xyz"), msg->getProperties<MessageProperties>()->getApplicationHeaders().getString("abc"));
- CPPUNIT_ASSERT_EQUAL((uint8_t) PERSISTENT, msg->getProperties<DeliveryProperties>()->getDeliveryMode());
- CPPUNIT_ASSERT(msg->isPersistent());
- }
-};
+ Buffer rbuffer(buff, msg->encodedSize());
+ msg = new Message();
+ msg->decodeHeader(rbuffer);
+ msg->decodeContent(rbuffer);
+ BOOST_CHECK_EQUAL(exchange, msg->getExchangeName());
+ BOOST_CHECK_EQUAL(routingKey, msg->getRoutingKey());
+ BOOST_CHECK_EQUAL((uint64_t) data1.size() + data2.size(), msg->contentSize());
+ BOOST_CHECK_EQUAL((uint64_t) data1.size() + data2.size(), msg->getProperties<MessageProperties>()->getContentLength());
+ BOOST_CHECK_EQUAL(messageId, msg->getProperties<MessageProperties>()->getMessageId());
+ BOOST_CHECK_EQUAL(string("xyz"), msg->getProperties<MessageProperties>()->getApplicationHeaders().getString("abc"));
+ BOOST_CHECK_EQUAL((uint8_t) PERSISTENT, msg->getProperties<DeliveryProperties>()->getDeliveryMode());
+ BOOST_CHECK(msg->isPersistent());
+}
-// Make this test suite a plugin.
-CPPUNIT_PLUGIN_IMPLEMENT();
-CPPUNIT_TEST_SUITE_REGISTRATION(MessageTest);
+QPID_AUTO_TEST_SUITE_END()
diff --git a/cpp/src/tests/QueuePolicyTest.cpp b/cpp/src/tests/QueuePolicyTest.cpp
index 467f43638f..db88682010 100644
--- a/cpp/src/tests/QueuePolicyTest.cpp
+++ b/cpp/src/tests/QueuePolicyTest.cpp
@@ -19,71 +19,63 @@
*
*/
#include "qpid/broker/QueuePolicy.h"
-#include "qpid_test_plugin.h"
+#include "unit_test.h"
using namespace qpid::broker;
using namespace qpid::framing;
-class QueuePolicyTest : public CppUnit::TestCase
-{
- CPPUNIT_TEST_SUITE(QueuePolicyTest);
- CPPUNIT_TEST(testCount);
- CPPUNIT_TEST(testSize);
- CPPUNIT_TEST(testBoth);
- CPPUNIT_TEST(testSettings);
- CPPUNIT_TEST_SUITE_END();
-
- public:
- void testCount(){
- QueuePolicy policy(5, 0);
- CPPUNIT_ASSERT(!policy.limitExceeded());
- for (int i = 0; i < 5; i++) policy.enqueued(10);
- CPPUNIT_ASSERT_EQUAL((uint64_t) 0, policy.getMaxSize());
- CPPUNIT_ASSERT_EQUAL((uint32_t) 5, policy.getMaxCount());
- CPPUNIT_ASSERT(!policy.limitExceeded());
- policy.enqueued(10);
- CPPUNIT_ASSERT(policy.limitExceeded());
- policy.dequeued(10);
- CPPUNIT_ASSERT(!policy.limitExceeded());
- policy.enqueued(10);
- CPPUNIT_ASSERT(policy.limitExceeded());
- }
+QPID_AUTO_TEST_SUITE(QueuePolicyTestSuite)
- void testSize(){
- QueuePolicy policy(0, 50);
- for (int i = 0; i < 5; i++) policy.enqueued(10);
- CPPUNIT_ASSERT(!policy.limitExceeded());
- policy.enqueued(10);
- CPPUNIT_ASSERT(policy.limitExceeded());
- policy.dequeued(10);
- CPPUNIT_ASSERT(!policy.limitExceeded());
- policy.enqueued(10);
- CPPUNIT_ASSERT(policy.limitExceeded());
- }
+QPID_AUTO_TEST_CASE(testCount)
+{
+ QueuePolicy policy(5, 0);
+ BOOST_CHECK(!policy.limitExceeded());
+ for (int i = 0; i < 5; i++) policy.enqueued(10);
+ BOOST_CHECK_EQUAL((uint64_t) 0, policy.getMaxSize());
+ BOOST_CHECK_EQUAL((uint32_t) 5, policy.getMaxCount());
+ BOOST_CHECK(!policy.limitExceeded());
+ policy.enqueued(10);
+ BOOST_CHECK(policy.limitExceeded());
+ policy.dequeued(10);
+ BOOST_CHECK(!policy.limitExceeded());
+ policy.enqueued(10);
+ BOOST_CHECK(policy.limitExceeded());
+}
- void testBoth(){
- QueuePolicy policy(5, 50);
- for (int i = 0; i < 5; i++) policy.enqueued(11);
- CPPUNIT_ASSERT(policy.limitExceeded());
- policy.dequeued(20);
- CPPUNIT_ASSERT(!policy.limitExceeded());//fails
- policy.enqueued(5);
- policy.enqueued(10);
- CPPUNIT_ASSERT(policy.limitExceeded());
- }
+QPID_AUTO_TEST_CASE(testSize)
+{
+ QueuePolicy policy(0, 50);
+ for (int i = 0; i < 5; i++) policy.enqueued(10);
+ BOOST_CHECK(!policy.limitExceeded());
+ policy.enqueued(10);
+ BOOST_CHECK(policy.limitExceeded());
+ policy.dequeued(10);
+ BOOST_CHECK(!policy.limitExceeded());
+ policy.enqueued(10);
+ BOOST_CHECK(policy.limitExceeded());
+}
- void testSettings(){
- //test reading and writing the policy from/to field table
- FieldTable settings;
- QueuePolicy a(101, 303);
- a.update(settings);
- QueuePolicy b(settings);
- CPPUNIT_ASSERT_EQUAL(a.getMaxCount(), b.getMaxCount());
- CPPUNIT_ASSERT_EQUAL(a.getMaxSize(), b.getMaxSize());
- }
-};
+QPID_AUTO_TEST_CASE(testBoth)
+{
+ QueuePolicy policy(5, 50);
+ for (int i = 0; i < 5; i++) policy.enqueued(11);
+ BOOST_CHECK(policy.limitExceeded());
+ policy.dequeued(20);
+ BOOST_CHECK(!policy.limitExceeded());//fails
+ policy.enqueued(5);
+ policy.enqueued(10);
+ BOOST_CHECK(policy.limitExceeded());
+}
-// Make this test suite a plugin.
-CPPUNIT_PLUGIN_IMPLEMENT();
-CPPUNIT_TEST_SUITE_REGISTRATION(QueuePolicyTest);
+QPID_AUTO_TEST_CASE(testSettings)
+{
+ //test reading and writing the policy from/to field table
+ FieldTable settings;
+ QueuePolicy a(101, 303);
+ a.update(settings);
+ QueuePolicy b(settings);
+ BOOST_CHECK_EQUAL(a.getMaxCount(), b.getMaxCount());
+ BOOST_CHECK_EQUAL(a.getMaxSize(), b.getMaxSize());
+}
+QPID_AUTO_TEST_SUITE_END()
diff --git a/cpp/src/tests/QueueRegistryTest.cpp b/cpp/src/tests/QueueRegistryTest.cpp
index 5fd861d6be..7ad4e0b89d 100644
--- a/cpp/src/tests/QueueRegistryTest.cpp
+++ b/cpp/src/tests/QueueRegistryTest.cpp
@@ -18,78 +18,77 @@
*/
#include "qpid/broker/QueueRegistry.h"
-#include "qpid_test_plugin.h"
+#include "unit_test.h"
#include <string>
using namespace qpid::broker;
-class QueueRegistryTest : public CppUnit::TestCase
-{
- CPPUNIT_TEST_SUITE(QueueRegistryTest);
- CPPUNIT_TEST(testDeclare);
- CPPUNIT_TEST(testDeclareTmp);
- CPPUNIT_TEST(testFind);
- CPPUNIT_TEST(testDestroy);
- CPPUNIT_TEST_SUITE_END();
+QPID_AUTO_TEST_SUITE(QueueRegistryTest)
- private:
- std::string foo, bar;
+QPID_AUTO_TEST_CASE(testDeclare)
+{
+ std::string foo("foo");
+ std::string bar("bar");
QueueRegistry reg;
std::pair<Queue::shared_ptr, bool> qc;
-
- public:
- void setUp() {
- foo = "foo";
- bar = "bar";
- }
-
- void testDeclare() {
- qc = reg.declare(foo, false, 0, 0);
- Queue::shared_ptr q = qc.first;
- CPPUNIT_ASSERT(q);
- CPPUNIT_ASSERT(qc.second); // New queue
- CPPUNIT_ASSERT_EQUAL(foo, q->getName());
- qc = reg.declare(foo, false, 0, 0);
- CPPUNIT_ASSERT_EQUAL(q, qc.first);
- CPPUNIT_ASSERT(!qc.second);
+ qc = reg.declare(foo, false, 0, 0);
+ Queue::shared_ptr q = qc.first;
+ BOOST_CHECK(q);
+ BOOST_CHECK(qc.second); // New queue
+ BOOST_CHECK_EQUAL(foo, q->getName());
+
+ qc = reg.declare(foo, false, 0, 0);
+ BOOST_CHECK_EQUAL(q, qc.first);
+ BOOST_CHECK(!qc.second);
- qc = reg.declare(bar, false, 0, 0);
- q = qc.first;
- CPPUNIT_ASSERT(q);
- CPPUNIT_ASSERT_EQUAL(true, qc.second);
- CPPUNIT_ASSERT_EQUAL(bar, q->getName());
- }
+ qc = reg.declare(bar, false, 0, 0);
+ q = qc.first;
+ BOOST_CHECK(q);
+ BOOST_CHECK_EQUAL(true, qc.second);
+ BOOST_CHECK_EQUAL(bar, q->getName());
+}
+
+QPID_AUTO_TEST_CASE(testDeclareTmp)
+{
+ QueueRegistry reg;
+ std::pair<Queue::shared_ptr, bool> qc;
- void testDeclareTmp()
- {
- qc = reg.declare(std::string(), false, 0, 0);
- CPPUNIT_ASSERT(qc.second);
- CPPUNIT_ASSERT_EQUAL(std::string("tmp_1"), qc.first->getName());
- }
+ qc = reg.declare(std::string(), false, 0, 0);
+ BOOST_CHECK(qc.second);
+ BOOST_CHECK_EQUAL(std::string("tmp_1"), qc.first->getName());
+}
- void testFind() {
- CPPUNIT_ASSERT(reg.find(foo) == 0);
+QPID_AUTO_TEST_CASE(testFind)
+{
+ std::string foo("foo");
+ std::string bar("bar");
+ QueueRegistry reg;
+ std::pair<Queue::shared_ptr, bool> qc;
+
+ BOOST_CHECK(reg.find(foo) == 0);
- reg.declare(foo, false, 0, 0);
- reg.declare(bar, false, 0, 0);
- Queue::shared_ptr q = reg.find(bar);
- CPPUNIT_ASSERT(q);
- CPPUNIT_ASSERT_EQUAL(bar, q->getName());
- }
+ reg.declare(foo, false, 0, 0);
+ reg.declare(bar, false, 0, 0);
+ Queue::shared_ptr q = reg.find(bar);
+ BOOST_CHECK(q);
+ BOOST_CHECK_EQUAL(bar, q->getName());
+}
+
+QPID_AUTO_TEST_CASE(testDestroy)
+{
+ std::string foo("foo");
+ QueueRegistry reg;
+ std::pair<Queue::shared_ptr, bool> qc;
- void testDestroy() {
- qc = reg.declare(foo, false, 0, 0);
- reg.destroy(foo);
- // Queue is gone from the registry.
- CPPUNIT_ASSERT(reg.find(foo) == 0);
- // Queue is not actually destroyed till we drop our reference.
- CPPUNIT_ASSERT_EQUAL(foo, qc.first->getName());
- // We shoud be the only reference.
- CPPUNIT_ASSERT_EQUAL(1L, qc.first.use_count());
- }
-};
+ qc = reg.declare(foo, false, 0, 0);
+ reg.destroy(foo);
+ // Queue is gone from the registry.
+ BOOST_CHECK(reg.find(foo) == 0);
+ // Queue is not actually destroyed till we drop our reference.
+ BOOST_CHECK_EQUAL(foo, qc.first->getName());
+ // We shoud be the only reference.
+ BOOST_CHECK_EQUAL(1L, qc.first.use_count());
+}
-// Make this test suite a plugin.
-CPPUNIT_PLUGIN_IMPLEMENT();
-CPPUNIT_TEST_SUITE_REGISTRATION(QueueRegistryTest);
+QPID_AUTO_TEST_SUITE_END()
diff --git a/cpp/src/tests/QueueTest.cpp b/cpp/src/tests/QueueTest.cpp
index 9abf863ad4..39696707f4 100644
--- a/cpp/src/tests/QueueTest.cpp
+++ b/cpp/src/tests/QueueTest.cpp
@@ -18,13 +18,13 @@
* under the License.
*
*/
+#include "unit_test.h"
#include "qpid/Exception.h"
#include "qpid/broker/Queue.h"
#include "qpid/broker/Deliverable.h"
#include "qpid/broker/ExchangeRegistry.h"
#include "qpid/broker/QueueRegistry.h"
#include "qpid/framing/MessageTransferBody.h"
-#include "qpid_test_plugin.h"
#include <iostream>
#include "boost/format.hpp"
@@ -34,7 +34,6 @@ using namespace qpid::broker;
using namespace qpid::framing;
using namespace qpid::sys;
-
class TestConsumer : public virtual Consumer{
public:
typedef boost::shared_ptr<TestConsumer> shared_ptr;
@@ -63,200 +62,180 @@ public:
Message& getMessage() { return msg; }
};
-class QueueTest : public CppUnit::TestCase
-{
- CPPUNIT_TEST_SUITE(QueueTest);
- CPPUNIT_TEST(testConsumers);
- CPPUNIT_TEST(testRegistry);
- CPPUNIT_TEST(testDequeue);
- CPPUNIT_TEST(testBound);
- CPPUNIT_TEST(testAsyncMessage);
- CPPUNIT_TEST(testAsyncMessageCount);
- CPPUNIT_TEST_SUITE_END();
-
-
- public:
- intrusive_ptr<Message> message(std::string exchange, std::string routingKey) {
- intrusive_ptr<Message> msg(new Message());
- AMQFrame method(in_place<MessageTransferBody>(
- ProtocolVersion(), exchange, 0, 0));
- AMQFrame header(in_place<AMQHeaderBody>());
- msg->getFrames().append(method);
- msg->getFrames().append(header);
- msg->getFrames().getHeaders()->get<DeliveryProperties>(true)->setRoutingKey(routingKey);
- return msg;
- }
+intrusive_ptr<Message> message(std::string exchange, std::string routingKey) {
+ intrusive_ptr<Message> msg(new Message());
+ AMQFrame method(in_place<MessageTransferBody>(ProtocolVersion(), exchange, 0, 0));
+ AMQFrame header(in_place<AMQHeaderBody>());
+ msg->getFrames().append(method);
+ msg->getFrames().append(header);
+ msg->getFrames().getHeaders()->get<DeliveryProperties>(true)->setRoutingKey(routingKey);
+ return msg;
+}
+
+QPID_AUTO_TEST_SUITE(QueueTestSuite)
+
+QPID_AUTO_TEST_CASE(testAsyncMessage) {
+ Queue::shared_ptr queue(new Queue("my_test_queue", true));
+ intrusive_ptr<Message> received;
+ TestConsumer c1;
+ queue->consume(c1);
- void testAsyncMessage(){
- Queue::shared_ptr queue(new Queue("my_test_queue", true));
- intrusive_ptr<Message> received;
-
- TestConsumer c1;
- queue->consume(c1);
-
-
- //Test basic delivery:
- intrusive_ptr<Message> msg1 = message("e", "A");
- msg1->enqueueAsync();//this is done on enqueue which is not called from process
- queue->process(msg1);
- sleep(2);
-
- CPPUNIT_ASSERT(!c1.received);
- msg1->enqueueComplete();
-
- received = queue->dequeue().payload;
- CPPUNIT_ASSERT_EQUAL(msg1.get(), received.get());
-
-
- }
+ //Test basic delivery:
+ intrusive_ptr<Message> msg1 = message("e", "A");
+ msg1->enqueueAsync();//this is done on enqueue which is not called from process
+ queue->process(msg1);
+ sleep(2);
+ BOOST_CHECK(!c1.received);
+ msg1->enqueueComplete();
- void testAsyncMessageCount(){
- Queue::shared_ptr queue(new Queue("my_test_queue", true));
- intrusive_ptr<Message> msg1 = message("e", "A");
- msg1->enqueueAsync();//this is done on enqueue which is not called from process
-
- queue->process(msg1);
- sleep(2);
- uint32_t compval=0;
- CPPUNIT_ASSERT_EQUAL(compval, queue->getMessageCount());
- msg1->enqueueComplete();
- compval=1;
- CPPUNIT_ASSERT_EQUAL(compval, queue->getMessageCount());
+ received = queue->dequeue().payload;
+ BOOST_CHECK_EQUAL(msg1.get(), received.get());
+}
- }
- void testConsumers(){
- Queue::shared_ptr queue(new Queue("my_queue", true));
+QPID_AUTO_TEST_CASE(testAsyncMessageCount){
+ Queue::shared_ptr queue(new Queue("my_test_queue", true));
+ intrusive_ptr<Message> msg1 = message("e", "A");
+ msg1->enqueueAsync();//this is done on enqueue which is not called from process
- //Test adding consumers:
- TestConsumer c1;
- TestConsumer c2;
- queue->consume(c1);
- queue->consume(c2);
-
- CPPUNIT_ASSERT_EQUAL(uint32_t(2), queue->getConsumerCount());
-
- //Test basic delivery:
- intrusive_ptr<Message> msg1 = message("e", "A");
- intrusive_ptr<Message> msg2 = message("e", "B");
- intrusive_ptr<Message> msg3 = message("e", "C");
-
- queue->deliver(msg1);
- CPPUNIT_ASSERT(queue->dispatch(c1));
- CPPUNIT_ASSERT_EQUAL(msg1.get(), c1.last.get());
-
- queue->deliver(msg2);
- CPPUNIT_ASSERT(queue->dispatch(c2));
- CPPUNIT_ASSERT_EQUAL(msg2.get(), c2.last.get());
-
- c1.received = false;
- queue->deliver(msg3);
- CPPUNIT_ASSERT(queue->dispatch(c1));
- CPPUNIT_ASSERT_EQUAL(msg3.get(), c1.last.get());
+ queue->process(msg1);
+ sleep(2);
+ uint32_t compval=0;
+ BOOST_CHECK_EQUAL(compval, queue->getMessageCount());
+ msg1->enqueueComplete();
+ compval=1;
+ BOOST_CHECK_EQUAL(compval, queue->getMessageCount());
+}
+
+QPID_AUTO_TEST_CASE(testConsumers){
+ Queue::shared_ptr queue(new Queue("my_queue", true));
- //Test cancellation:
- queue->cancel(c1);
- CPPUNIT_ASSERT_EQUAL(uint32_t(1), queue->getConsumerCount());
- queue->cancel(c2);
- CPPUNIT_ASSERT_EQUAL(uint32_t(0), queue->getConsumerCount());
- }
-
- void testRegistry(){
- //Test use of queues in registry:
- QueueRegistry registry;
- registry.declare("queue1", true, true);
- registry.declare("queue2", true, true);
- registry.declare("queue3", true, true);
-
- CPPUNIT_ASSERT(registry.find("queue1"));
- CPPUNIT_ASSERT(registry.find("queue2"));
- CPPUNIT_ASSERT(registry.find("queue3"));
-
- registry.destroy("queue1");
- registry.destroy("queue2");
- registry.destroy("queue3");
-
- CPPUNIT_ASSERT(!registry.find("queue1"));
- CPPUNIT_ASSERT(!registry.find("queue2"));
- CPPUNIT_ASSERT(!registry.find("queue3"));
- }
-
- void testDequeue(){
- Queue::shared_ptr queue(new Queue("my_queue", true));
- intrusive_ptr<Message> msg1 = message("e", "A");
- intrusive_ptr<Message> msg2 = message("e", "B");
- intrusive_ptr<Message> msg3 = message("e", "C");
- intrusive_ptr<Message> received;
-
- queue->deliver(msg1);
- queue->deliver(msg2);
- queue->deliver(msg3);
-
- CPPUNIT_ASSERT_EQUAL(uint32_t(3), queue->getMessageCount());
-
- received = queue->dequeue().payload;
- CPPUNIT_ASSERT_EQUAL(msg1.get(), received.get());
- CPPUNIT_ASSERT_EQUAL(uint32_t(2), queue->getMessageCount());
-
- received = queue->dequeue().payload;
- CPPUNIT_ASSERT_EQUAL(msg2.get(), received.get());
- CPPUNIT_ASSERT_EQUAL(uint32_t(1), queue->getMessageCount());
-
- TestConsumer consumer;
- queue->consume(consumer);
- queue->dispatch(consumer);
- if (!consumer.received)
- sleep(2);
-
- CPPUNIT_ASSERT_EQUAL(msg3.get(), consumer.last.get());
- CPPUNIT_ASSERT_EQUAL(uint32_t(0), queue->getMessageCount());
-
- received = queue->dequeue().payload;
- CPPUNIT_ASSERT(!received);
- CPPUNIT_ASSERT_EQUAL(uint32_t(0), queue->getMessageCount());
+ //Test adding consumers:
+ TestConsumer c1;
+ TestConsumer c2;
+ queue->consume(c1);
+ queue->consume(c2);
+
+ BOOST_CHECK_EQUAL(uint32_t(2), queue->getConsumerCount());
+
+ //Test basic delivery:
+ intrusive_ptr<Message> msg1 = message("e", "A");
+ intrusive_ptr<Message> msg2 = message("e", "B");
+ intrusive_ptr<Message> msg3 = message("e", "C");
+
+ queue->deliver(msg1);
+ BOOST_CHECK(queue->dispatch(c1));
+ BOOST_CHECK_EQUAL(msg1.get(), c1.last.get());
+
+ queue->deliver(msg2);
+ BOOST_CHECK(queue->dispatch(c2));
+ BOOST_CHECK_EQUAL(msg2.get(), c2.last.get());
+
+ c1.received = false;
+ queue->deliver(msg3);
+ BOOST_CHECK(queue->dispatch(c1));
+ BOOST_CHECK_EQUAL(msg3.get(), c1.last.get());
+
+ //Test cancellation:
+ queue->cancel(c1);
+ BOOST_CHECK_EQUAL(uint32_t(1), queue->getConsumerCount());
+ queue->cancel(c2);
+ BOOST_CHECK_EQUAL(uint32_t(0), queue->getConsumerCount());
+}
+
+QPID_AUTO_TEST_CASE(testRegistry){
+ //Test use of queues in registry:
+ QueueRegistry registry;
+ registry.declare("queue1", true, true);
+ registry.declare("queue2", true, true);
+ registry.declare("queue3", true, true);
+
+ BOOST_CHECK(registry.find("queue1"));
+ BOOST_CHECK(registry.find("queue2"));
+ BOOST_CHECK(registry.find("queue3"));
+
+ registry.destroy("queue1");
+ registry.destroy("queue2");
+ registry.destroy("queue3");
+
+ BOOST_CHECK(!registry.find("queue1"));
+ BOOST_CHECK(!registry.find("queue2"));
+ BOOST_CHECK(!registry.find("queue3"));
+}
+
+QPID_AUTO_TEST_CASE(testDequeue){
+ Queue::shared_ptr queue(new Queue("my_queue", true));
+ intrusive_ptr<Message> msg1 = message("e", "A");
+ intrusive_ptr<Message> msg2 = message("e", "B");
+ intrusive_ptr<Message> msg3 = message("e", "C");
+ intrusive_ptr<Message> received;
+
+ queue->deliver(msg1);
+ queue->deliver(msg2);
+ queue->deliver(msg3);
+
+ BOOST_CHECK_EQUAL(uint32_t(3), queue->getMessageCount());
+
+ received = queue->dequeue().payload;
+ BOOST_CHECK_EQUAL(msg1.get(), received.get());
+ BOOST_CHECK_EQUAL(uint32_t(2), queue->getMessageCount());
+
+ received = queue->dequeue().payload;
+ BOOST_CHECK_EQUAL(msg2.get(), received.get());
+ BOOST_CHECK_EQUAL(uint32_t(1), queue->getMessageCount());
+
+ TestConsumer consumer;
+ queue->consume(consumer);
+ queue->dispatch(consumer);
+ if (!consumer.received)
+ sleep(2);
+
+ BOOST_CHECK_EQUAL(msg3.get(), consumer.last.get());
+ BOOST_CHECK_EQUAL(uint32_t(0), queue->getMessageCount());
+
+ received = queue->dequeue().payload;
+ BOOST_CHECK(!received);
+ BOOST_CHECK_EQUAL(uint32_t(0), queue->getMessageCount());
- }
-
- void testBound()
- {
- //test the recording of bindings, and use of those to allow a queue to be unbound
- string key("my-key");
- FieldTable args;
-
- Queue::shared_ptr queue(new Queue("my-queue", true));
- ExchangeRegistry exchanges;
- //establish bindings from exchange->queue and notify the queue as it is bound:
- Exchange::shared_ptr exchange1 = exchanges.declare("my-exchange-1", "direct").first;
- exchange1->bind(queue, key, &args);
- queue->bound(exchange1->getName(), key, args);
-
- Exchange::shared_ptr exchange2 = exchanges.declare("my-exchange-2", "fanout").first;
- exchange2->bind(queue, key, &args);
- queue->bound(exchange2->getName(), key, args);
-
- Exchange::shared_ptr exchange3 = exchanges.declare("my-exchange-3", "topic").first;
- exchange3->bind(queue, key, &args);
- queue->bound(exchange3->getName(), key, args);
+}
- //delete one of the exchanges:
- exchanges.destroy(exchange2->getName());
- exchange2.reset();
-
- //unbind the queue from all exchanges it knows it has been bound to:
- queue->unbind(exchanges, queue);
-
- //ensure the remaining exchanges don't still have the queue bound to them:
- FailOnDeliver deliverable;
- exchange1->route(deliverable, key, &args);
- exchange3->route(deliverable, key, &args);
- }
-};
-
-// Make this test suite a plugin.
-CPPUNIT_PLUGIN_IMPLEMENT();
-CPPUNIT_TEST_SUITE_REGISTRATION(QueueTest);
+QPID_AUTO_TEST_CASE(testBound)
+{
+ //test the recording of bindings, and use of those to allow a queue to be unbound
+ string key("my-key");
+ FieldTable args;
+
+ Queue::shared_ptr queue(new Queue("my-queue", true));
+ ExchangeRegistry exchanges;
+ //establish bindings from exchange->queue and notify the queue as it is bound:
+ Exchange::shared_ptr exchange1 = exchanges.declare("my-exchange-1", "direct").first;
+ exchange1->bind(queue, key, &args);
+ queue->bound(exchange1->getName(), key, args);
+
+ Exchange::shared_ptr exchange2 = exchanges.declare("my-exchange-2", "fanout").first;
+ exchange2->bind(queue, key, &args);
+ queue->bound(exchange2->getName(), key, args);
+
+ Exchange::shared_ptr exchange3 = exchanges.declare("my-exchange-3", "topic").first;
+ exchange3->bind(queue, key, &args);
+ queue->bound(exchange3->getName(), key, args);
+
+ //delete one of the exchanges:
+ exchanges.destroy(exchange2->getName());
+ exchange2.reset();
+
+ //unbind the queue from all exchanges it knows it has been bound to:
+ queue->unbind(exchanges, queue);
+
+ //ensure the remaining exchanges don't still have the queue bound to them:
+ FailOnDeliver deliverable;
+ exchange1->route(deliverable, key, &args);
+ exchange3->route(deliverable, key, &args);
+}
+
+QPID_AUTO_TEST_SUITE_END()
diff --git a/cpp/src/tests/SequenceNumberTest.cpp b/cpp/src/tests/SequenceNumberTest.cpp
index d227b78323..e4c6d066ef 100644
--- a/cpp/src/tests/SequenceNumberTest.cpp
+++ b/cpp/src/tests/SequenceNumberTest.cpp
@@ -19,202 +19,187 @@
*
*/
-#include "qpid_test_plugin.h"
+#include "unit_test.h"
#include <iostream>
#include "qpid/framing/SequenceNumber.h"
#include "qpid/framing/SequenceNumberSet.h"
using namespace qpid::framing;
-class SequenceNumberTest : public CppUnit::TestCase
+
+void checkDifference(SequenceNumber& a, SequenceNumber& b, int gap)
{
- CPPUNIT_TEST_SUITE(SequenceNumberTest);
- CPPUNIT_TEST(testIncrementPostfix);
- CPPUNIT_TEST(testIncrementPrefix);
- CPPUNIT_TEST(testWrapAround);
- CPPUNIT_TEST(testCondense);
- CPPUNIT_TEST(testCondenseSingleRange);
- CPPUNIT_TEST(testCondenseSingleItem);
- CPPUNIT_TEST(testDifference);
- CPPUNIT_TEST(testDifferenceWithWrapAround1);
- CPPUNIT_TEST(testDifferenceWithWrapAround2);
- CPPUNIT_TEST_SUITE_END();
-
- public:
-
- void testIncrementPostfix()
- {
- SequenceNumber a;
- SequenceNumber b;
- CPPUNIT_ASSERT(!(a > b));
- CPPUNIT_ASSERT(!(b < a));
- CPPUNIT_ASSERT(a == b);
-
- SequenceNumber c = a++;
- CPPUNIT_ASSERT(a > b);
- CPPUNIT_ASSERT(b < a);
- CPPUNIT_ASSERT(a != b);
- CPPUNIT_ASSERT(c < a);
- CPPUNIT_ASSERT(a != c);
-
- b++;
- CPPUNIT_ASSERT(!(a > b));
- CPPUNIT_ASSERT(!(b < a));
- CPPUNIT_ASSERT(a == b);
- CPPUNIT_ASSERT(c < b);
- CPPUNIT_ASSERT(b != c);
- }
+ BOOST_CHECK_EQUAL(gap, a - b);
+ BOOST_CHECK_EQUAL(-gap, b - a);
- void testIncrementPrefix()
- {
- SequenceNumber a;
- SequenceNumber b;
- CPPUNIT_ASSERT(!(a > b));
- CPPUNIT_ASSERT(!(b < a));
- CPPUNIT_ASSERT(a == b);
-
- SequenceNumber c = ++a;
- CPPUNIT_ASSERT(a > b);
- CPPUNIT_ASSERT(b < a);
- CPPUNIT_ASSERT(a != b);
- CPPUNIT_ASSERT(a == c);
-
- ++b;
- CPPUNIT_ASSERT(!(a > b));
- CPPUNIT_ASSERT(!(b < a));
- CPPUNIT_ASSERT(a == b);
+ //increment until b wraps around
+ for (int i = 0; i < (gap + 2); i++, ++a, ++b) {
+ BOOST_CHECK_EQUAL(gap, a - b);
}
-
- void testWrapAround()
- {
- const uint32_t max = 0xFFFFFFFF;
- SequenceNumber a(max - 10);
- SequenceNumber b(max - 5);
- checkComparison(a, b, 5);
-
- const uint32_t max_signed = 0x7FFFFFFF;
- SequenceNumber c(max_signed - 10);
- SequenceNumber d(max_signed - 5);
- checkComparison(c, d, 5);
+ //keep incrementing until a also wraps around
+ for (int i = 0; i < (gap + 2); i++, ++a, ++b) {
+ BOOST_CHECK_EQUAL(gap, a - b);
}
-
- void checkComparison(SequenceNumber& a, SequenceNumber& b, int gap)
- {
- //increment until b wraps around
- for (int i = 0; i < (gap + 2); i++) {
- CPPUNIT_ASSERT(++a < ++b);//test prefix
- }
- //keep incrementing until a also wraps around
- for (int i = 0; i < (gap + 2); i++) {
- CPPUNIT_ASSERT(a++ < b++);//test postfix
- }
- //let a 'catch up'
- for (int i = 0; i < gap; i++) {
- a++;
- }
- CPPUNIT_ASSERT(a == b);
- CPPUNIT_ASSERT(++a > b);
+ //let b catch up and overtake
+ for (int i = 0; i < (gap*2); i++, ++b) {
+ BOOST_CHECK_EQUAL(gap - i, a - b);
+ BOOST_CHECK_EQUAL(i - gap, b - a);
}
+}
- void testCondense()
- {
- SequenceNumberSet set;
- for (uint i = 0; i < 6; i++) {
- set.push_back(SequenceNumber(i));
- }
- set.push_back(SequenceNumber(7));
- for (uint i = 9; i < 13; i++) {
- set.push_back(SequenceNumber(i));
- }
- set.push_back(SequenceNumber(13));
- SequenceNumberSet actual = set.condense();
-
- SequenceNumberSet expected;
- expected.addRange(SequenceNumber(0), SequenceNumber(5));
- expected.addRange(SequenceNumber(7), SequenceNumber(7));
- expected.addRange(SequenceNumber(9), SequenceNumber(13));
- CPPUNIT_ASSERT_EQUAL(expected, actual);
+void checkComparison(SequenceNumber& a, SequenceNumber& b, int gap)
+{
+ //increment until b wraps around
+ for (int i = 0; i < (gap + 2); i++) {
+ BOOST_CHECK(++a < ++b);//test prefix
+ }
+ //keep incrementing until a also wraps around
+ for (int i = 0; i < (gap + 2); i++) {
+ BOOST_CHECK(a++ < b++);//test postfix
}
+ //let a 'catch up'
+ for (int i = 0; i < gap; i++) {
+ a++;
+ }
+ BOOST_CHECK(a == b);
+ BOOST_CHECK(++a > b);
+}
+
+
+QPID_AUTO_TEST_SUITE(SequenceNumberTestSuite)
- void testCondenseSingleRange()
- {
- SequenceNumberSet set;
- for (uint i = 0; i < 6; i++) {
- set.push_back(SequenceNumber(i));
- }
- SequenceNumberSet actual = set.condense();
-
- SequenceNumberSet expected;
- expected.addRange(SequenceNumber(0), SequenceNumber(5));
- CPPUNIT_ASSERT_EQUAL(expected, actual);
+QPID_AUTO_TEST_CASE(testIncrementPostfix)
+{
+ SequenceNumber a;
+ SequenceNumber b;
+ BOOST_CHECK(!(a > b));
+ BOOST_CHECK(!(b < a));
+ BOOST_CHECK(a == b);
+
+ SequenceNumber c = a++;
+ BOOST_CHECK(a > b);
+ BOOST_CHECK(b < a);
+ BOOST_CHECK(a != b);
+ BOOST_CHECK(c < a);
+ BOOST_CHECK(a != c);
+
+ b++;
+ BOOST_CHECK(!(a > b));
+ BOOST_CHECK(!(b < a));
+ BOOST_CHECK(a == b);
+ BOOST_CHECK(c < b);
+ BOOST_CHECK(b != c);
+}
+
+QPID_AUTO_TEST_CASE(testIncrementPrefix)
+{
+ SequenceNumber a;
+ SequenceNumber b;
+ BOOST_CHECK(!(a > b));
+ BOOST_CHECK(!(b < a));
+ BOOST_CHECK(a == b);
+
+ SequenceNumber c = ++a;
+ BOOST_CHECK(a > b);
+ BOOST_CHECK(b < a);
+ BOOST_CHECK(a != b);
+ BOOST_CHECK(a == c);
+
+ ++b;
+ BOOST_CHECK(!(a > b));
+ BOOST_CHECK(!(b < a));
+ BOOST_CHECK(a == b);
+}
+
+QPID_AUTO_TEST_CASE(testWrapAround)
+{
+ const uint32_t max = 0xFFFFFFFF;
+ SequenceNumber a(max - 10);
+ SequenceNumber b(max - 5);
+ checkComparison(a, b, 5);
+
+ const uint32_t max_signed = 0x7FFFFFFF;
+ SequenceNumber c(max_signed - 10);
+ SequenceNumber d(max_signed - 5);
+ checkComparison(c, d, 5);
+}
+
+QPID_AUTO_TEST_CASE(testCondense)
+{
+ SequenceNumberSet set;
+ for (uint i = 0; i < 6; i++) {
+ set.push_back(SequenceNumber(i));
+ }
+ set.push_back(SequenceNumber(7));
+ for (uint i = 9; i < 13; i++) {
+ set.push_back(SequenceNumber(i));
}
+ set.push_back(SequenceNumber(13));
+ SequenceNumberSet actual = set.condense();
- void testCondenseSingleItem()
- {
- SequenceNumberSet set;
- set.push_back(SequenceNumber(1));
- SequenceNumberSet actual = set.condense();
+ SequenceNumberSet expected;
+ expected.addRange(SequenceNumber(0), SequenceNumber(5));
+ expected.addRange(SequenceNumber(7), SequenceNumber(7));
+ expected.addRange(SequenceNumber(9), SequenceNumber(13));
+ BOOST_CHECK_EQUAL(expected, actual);
+}
- SequenceNumberSet expected;
- expected.addRange(SequenceNumber(1), SequenceNumber(1));
- CPPUNIT_ASSERT_EQUAL(expected, actual);
+QPID_AUTO_TEST_CASE(testCondenseSingleRange)
+{
+ SequenceNumberSet set;
+ for (uint i = 0; i < 6; i++) {
+ set.push_back(SequenceNumber(i));
}
+ SequenceNumberSet actual = set.condense();
- void testDifference()
- {
- SequenceNumber a;
- SequenceNumber b;
+ SequenceNumberSet expected;
+ expected.addRange(SequenceNumber(0), SequenceNumber(5));
+ BOOST_CHECK_EQUAL(expected, actual);
+}
- for (int i = 0; i < 10; i++, ++a) {
- CPPUNIT_ASSERT_EQUAL(i, a - b);
- CPPUNIT_ASSERT_EQUAL(-i, b - a);
- }
+QPID_AUTO_TEST_CASE(testCondenseSingleItem)
+{
+ SequenceNumberSet set;
+ set.push_back(SequenceNumber(1));
+ SequenceNumberSet actual = set.condense();
- b = a;
+ SequenceNumberSet expected;
+ expected.addRange(SequenceNumber(1), SequenceNumber(1));
+ BOOST_CHECK_EQUAL(expected, actual);
+}
- for (int i = 0; i < 10; i++, ++b) {
- CPPUNIT_ASSERT_EQUAL(-i, a - b);
- CPPUNIT_ASSERT_EQUAL(i, b - a);
- }
- }
+QPID_AUTO_TEST_CASE(testDifference)
+{
+ SequenceNumber a;
+ SequenceNumber b;
- void testDifferenceWithWrapAround1()
- {
- const uint32_t max = 0xFFFFFFFF;
- SequenceNumber a(max - 5);
- SequenceNumber b(max - 10);
- checkDifference(a, b, 5);
+ for (int i = 0; i < 10; i++, ++a) {
+ BOOST_CHECK_EQUAL(i, a - b);
+ BOOST_CHECK_EQUAL(-i, b - a);
}
- void testDifferenceWithWrapAround2()
- {
- const uint32_t max_signed = 0x7FFFFFFF;
- SequenceNumber c(max_signed - 5);
- SequenceNumber d(max_signed - 10);
- checkDifference(c, d, 5);
- }
+ b = a;
- void checkDifference(SequenceNumber& a, SequenceNumber& b, int gap)
- {
- CPPUNIT_ASSERT_EQUAL(gap, a - b);
- CPPUNIT_ASSERT_EQUAL(-gap, b - a);
-
- //increment until b wraps around
- for (int i = 0; i < (gap + 2); i++, ++a, ++b) {
- CPPUNIT_ASSERT_EQUAL(gap, a - b);
- }
- //keep incrementing until a also wraps around
- for (int i = 0; i < (gap + 2); i++, ++a, ++b) {
- CPPUNIT_ASSERT_EQUAL(gap, a - b);
- }
- //let b catch up and overtake
- for (int i = 0; i < (gap*2); i++, ++b) {
- CPPUNIT_ASSERT_EQUAL(gap - i, a - b);
- CPPUNIT_ASSERT_EQUAL(i - gap, b - a);
- }
+ for (int i = 0; i < 10; i++, ++b) {
+ BOOST_CHECK_EQUAL(-i, a - b);
+ BOOST_CHECK_EQUAL(i, b - a);
}
-};
-
-// Make this test suite a plugin.
-CPPUNIT_PLUGIN_IMPLEMENT();
-CPPUNIT_TEST_SUITE_REGISTRATION(SequenceNumberTest);
+}
+
+QPID_AUTO_TEST_CASE(testDifferenceWithWrapAround1)
+{
+ const uint32_t max = 0xFFFFFFFF;
+ SequenceNumber a(max - 5);
+ SequenceNumber b(max - 10);
+ checkDifference(a, b, 5);
+}
+
+QPID_AUTO_TEST_CASE(testDifferenceWithWrapAround2)
+{
+ const uint32_t max_signed = 0x7FFFFFFF;
+ SequenceNumber c(max_signed - 5);
+ SequenceNumber d(max_signed - 10);
+ checkDifference(c, d, 5);
+}
+
+QPID_AUTO_TEST_SUITE_END()
diff --git a/cpp/src/tests/TimerTest.cpp b/cpp/src/tests/TimerTest.cpp
index 2693d4a787..50712ff79c 100644
--- a/cpp/src/tests/TimerTest.cpp
+++ b/cpp/src/tests/TimerTest.cpp
@@ -21,7 +21,7 @@
*/
#include "qpid/broker/Timer.h"
#include "qpid/sys/Monitor.h"
-#include "qpid_test_plugin.h"
+#include "unit_test.h"
#include <math.h>
#include <iostream>
#include <memory>
@@ -33,98 +33,88 @@ using namespace qpid::sys;
using boost::intrusive_ptr;
using boost::dynamic_pointer_cast;
-class TimerTest : public CppUnit::TestCase
+class Counter
{
- CPPUNIT_TEST_SUITE(TimerTest);
- CPPUNIT_TEST(testGeneral);
- CPPUNIT_TEST_SUITE_END();
-
- class Counter
+ Mutex lock;
+ uint counter;
+ public:
+ Counter() : counter(0) {}
+ uint next()
{
- Mutex lock;
- uint counter;
- public:
- Counter() : counter(0) {}
- uint next()
- {
- Mutex::ScopedLock l(lock);
- return ++counter;
- }
- };
+ Mutex::ScopedLock l(lock);
+ return ++counter;
+ }
+};
- class TestTask : public TimerTask
- {
- const AbsTime start;
- const Duration expected;
- AbsTime end;
- bool fired;
- uint position;
- Monitor monitor;
- Counter& counter;
-
- public:
- TestTask(Duration timeout, Counter& _counter)
- : TimerTask(timeout), start(now()), expected(timeout), end(start), fired(false), counter(_counter) {}
+class TestTask : public TimerTask
+{
+ const AbsTime start;
+ const Duration expected;
+ AbsTime end;
+ bool fired;
+ uint position;
+ Monitor monitor;
+ Counter& counter;
- void fire()
- {
- Monitor::ScopedLock l(monitor);
- fired = true;
- position = counter.next();
- end = now();
- monitor.notify();
- }
+ public:
+ TestTask(Duration timeout, Counter& _counter)
+ : TimerTask(timeout), start(now()), expected(timeout), end(start), fired(false), counter(_counter) {}
- void check(uint expected_position, uint64_t tolerance = 500 * TIME_MSEC)
- {
- Monitor::ScopedLock l(monitor);
- CPPUNIT_ASSERT(fired);
- CPPUNIT_ASSERT_EQUAL(expected_position, position);
- Duration actual(start, end);
- uint64_t difference = abs(expected - actual);
- std::string msg(boost::lexical_cast<std::string>(boost::format("tolerance = %1%, difference = %2%") % tolerance % difference));
- CPPUNIT_ASSERT_MESSAGE(msg, difference < tolerance);
- }
+ void fire()
+ {
+ Monitor::ScopedLock l(monitor);
+ fired = true;
+ position = counter.next();
+ end = now();
+ monitor.notify();
+ }
- void wait(Duration d)
- {
- Monitor::ScopedLock l(monitor);
- monitor.wait(AbsTime(now(), d));
- }
- };
+ void check(uint expected_position, uint64_t tolerance = 500 * TIME_MSEC)
+ {
+ Monitor::ScopedLock l(monitor);
+ BOOST_CHECK(fired);
+ BOOST_CHECK_EQUAL(expected_position, position);
+ Duration actual(start, end);
+ uint64_t difference = abs(expected - actual);
+ std::string msg(boost::lexical_cast<std::string>(boost::format("tolerance = %1%, difference = %2%") % tolerance % difference));
+ BOOST_CHECK_MESSAGE(difference < tolerance, msg);
+ }
- class DummyRunner : public Runnable
+ void wait(Duration d)
{
- public:
- void run() {}
- };
+ Monitor::ScopedLock l(monitor);
+ monitor.wait(AbsTime(now(), d));
+ }
+};
-public:
+class DummyRunner : public Runnable
+{
+ public:
+ void run() {}
+};
- void testGeneral()
- {
- Counter counter;
- Timer timer;
- intrusive_ptr<TestTask> task1(new TestTask(Duration(3 * TIME_SEC), counter));
- intrusive_ptr<TestTask> task2(new TestTask(Duration(1 * TIME_SEC), counter));
- intrusive_ptr<TestTask> task3(new TestTask(Duration(4 * TIME_SEC), counter));
- intrusive_ptr<TestTask> task4(new TestTask(Duration(2 * TIME_SEC), counter));
+QPID_AUTO_TEST_SUITE(TimerTestSuite)
+
+QPID_AUTO_TEST_CASE(testGeneral)
+{
+ Counter counter;
+ Timer timer;
+ intrusive_ptr<TestTask> task1(new TestTask(Duration(3 * TIME_SEC), counter));
+ intrusive_ptr<TestTask> task2(new TestTask(Duration(1 * TIME_SEC), counter));
+ intrusive_ptr<TestTask> task3(new TestTask(Duration(4 * TIME_SEC), counter));
+ intrusive_ptr<TestTask> task4(new TestTask(Duration(2 * TIME_SEC), counter));
- timer.add(task1);
- timer.add(task2);
- timer.add(task3);
- timer.add(task4);
+ timer.add(task1);
+ timer.add(task2);
+ timer.add(task3);
+ timer.add(task4);
- dynamic_pointer_cast<TestTask>(task3)->wait(Duration(6 * TIME_SEC));
+ dynamic_pointer_cast<TestTask>(task3)->wait(Duration(6 * TIME_SEC));
- dynamic_pointer_cast<TestTask>(task1)->check(3);
- dynamic_pointer_cast<TestTask>(task2)->check(1);
- dynamic_pointer_cast<TestTask>(task3)->check(4);
- dynamic_pointer_cast<TestTask>(task4)->check(2);
- }
-};
-
-// Make this test suite a plugin.
-CPPUNIT_PLUGIN_IMPLEMENT();
-CPPUNIT_TEST_SUITE_REGISTRATION(TimerTest);
+ dynamic_pointer_cast<TestTask>(task1)->check(3);
+ dynamic_pointer_cast<TestTask>(task2)->check(1);
+ dynamic_pointer_cast<TestTask>(task3)->check(4);
+ dynamic_pointer_cast<TestTask>(task4)->check(2);
+}
+QPID_AUTO_TEST_SUITE_END()
diff --git a/cpp/src/tests/TopicExchangeTest.cpp b/cpp/src/tests/TopicExchangeTest.cpp
index adb937179f..af4263de34 100644
--- a/cpp/src/tests/TopicExchangeTest.cpp
+++ b/cpp/src/tests/TopicExchangeTest.cpp
@@ -17,7 +17,8 @@
* under the License.
*/
#include "qpid/broker/TopicExchange.h"
-#include "qpid_test_plugin.h"
+#include "unit_test.h"
+#include "test_tools.h"
using namespace qpid::broker;
@@ -34,167 +35,133 @@ Tokens makeTokens(const char** begin, const char** end)
// Convert array to token vector
#define TOKENS(a) makeTokens(a, a + LEN(a))
-// Allow CPPUNIT_EQUALS to print a Tokens.
-CppUnit::OStringStream& operator <<(CppUnit::OStringStream& out, const Tokens& v)
-{
- out << "[ ";
- for (Tokens::const_iterator i = v.begin();
- i != v.end(); ++i)
- {
- out << '"' << *i << '"' << (i+1 == v.end() ? "]" : ", ");
- }
- return out;
-}
+#define ASSERT_NORMALIZED(expect, pattern) \
+ BOOST_CHECK_EQUAL(Tokens(expect), static_cast<Tokens>(TopicPattern(pattern)))
+
+QPID_AUTO_TEST_SUITE(TopicExchangeTestSuite)
-class TokensTest : public CppUnit::TestCase
+QPID_AUTO_TEST_CASE(testTokens)
{
- CPPUNIT_TEST_SUITE(TokensTest);
- CPPUNIT_TEST(testTokens);
- CPPUNIT_TEST_SUITE_END();
-
- public:
- void testTokens()
- {
- Tokens tokens("hello.world");
- const char* expect[] = {"hello", "world"};
- CPPUNIT_ASSERT_EQUAL(TOKENS(expect), tokens);
+ Tokens tokens("hello.world");
+ const char* expect[] = {"hello", "world"};
+ BOOST_CHECK_EQUAL(TOKENS(expect), tokens);
- tokens = "a.b.c";
- const char* expect2[] = { "a", "b", "c" };
- CPPUNIT_ASSERT_EQUAL(TOKENS(expect2), tokens);
+ tokens = "a.b.c";
+ const char* expect2[] = { "a", "b", "c" };
+ BOOST_CHECK_EQUAL(TOKENS(expect2), tokens);
- tokens = "";
- CPPUNIT_ASSERT(tokens.empty());
+ tokens = "";
+ BOOST_CHECK(tokens.empty());
- tokens = "x";
- const char* expect3[] = { "x" };
- CPPUNIT_ASSERT_EQUAL(TOKENS(expect3), tokens);
+ tokens = "x";
+ const char* expect3[] = { "x" };
+ BOOST_CHECK_EQUAL(TOKENS(expect3), tokens);
- tokens = (".x");
- const char* expect4[] = { "", "x" };
- CPPUNIT_ASSERT_EQUAL(TOKENS(expect4), tokens);
+ tokens = (".x");
+ const char* expect4[] = { "", "x" };
+ BOOST_CHECK_EQUAL(TOKENS(expect4), tokens);
- tokens = ("x.");
- const char* expect5[] = { "x", "" };
- CPPUNIT_ASSERT_EQUAL(TOKENS(expect5), tokens);
+ tokens = ("x.");
+ const char* expect5[] = { "x", "" };
+ BOOST_CHECK_EQUAL(TOKENS(expect5), tokens);
- tokens = (".");
- const char* expect6[] = { "", "" };
- CPPUNIT_ASSERT_EQUAL(TOKENS(expect6), tokens);
+ tokens = (".");
+ const char* expect6[] = { "", "" };
+ BOOST_CHECK_EQUAL(TOKENS(expect6), tokens);
- tokens = ("..");
- const char* expect7[] = { "", "", "" };
- CPPUNIT_ASSERT_EQUAL(TOKENS(expect7), tokens);
- }
-
-};
+ tokens = ("..");
+ const char* expect7[] = { "", "", "" };
+ BOOST_CHECK_EQUAL(TOKENS(expect7), tokens);
+}
-#define ASSERT_NORMALIZED(expect, pattern) \
- CPPUNIT_ASSERT_EQUAL(Tokens(expect), static_cast<Tokens>(TopicPattern(pattern)))
-class TopicPatternTest : public CppUnit::TestCase
+QPID_AUTO_TEST_CASE(testNormalize)
{
- CPPUNIT_TEST_SUITE(TopicPatternTest);
- CPPUNIT_TEST(testNormalize);
- CPPUNIT_TEST(testPlain);
- CPPUNIT_TEST(testStar);
- CPPUNIT_TEST(testHash);
- CPPUNIT_TEST(testMixed);
- CPPUNIT_TEST(testCombo);
- CPPUNIT_TEST_SUITE_END();
-
- public:
-
- void testNormalize()
- {
- CPPUNIT_ASSERT(TopicPattern("").empty());
- ASSERT_NORMALIZED("a.b.c", "a.b.c");
- ASSERT_NORMALIZED("a.*.c", "a.*.c");
- ASSERT_NORMALIZED("#", "#");
- ASSERT_NORMALIZED("#", "#.#.#.#");
- ASSERT_NORMALIZED("*.*.*.#", "#.*.#.*.#.#.*");
- ASSERT_NORMALIZED("a.*.*.*.#", "a.*.#.*.#.*.#");
- ASSERT_NORMALIZED("a.*.*.*.#", "a.*.#.*.#.*");
- }
+ BOOST_CHECK(TopicPattern("").empty());
+ ASSERT_NORMALIZED("a.b.c", "a.b.c");
+ ASSERT_NORMALIZED("a.*.c", "a.*.c");
+ ASSERT_NORMALIZED("#", "#");
+ ASSERT_NORMALIZED("#", "#.#.#.#");
+ ASSERT_NORMALIZED("*.*.*.#", "#.*.#.*.#.#.*");
+ ASSERT_NORMALIZED("a.*.*.*.#", "a.*.#.*.#.*.#");
+ ASSERT_NORMALIZED("a.*.*.*.#", "a.*.#.*.#.*");
+}
- void testPlain() {
- TopicPattern p("ab.cd.e");
- CPPUNIT_ASSERT(p.match("ab.cd.e"));
- CPPUNIT_ASSERT(!p.match("abx.cd.e"));
- CPPUNIT_ASSERT(!p.match("ab.cd"));
- CPPUNIT_ASSERT(!p.match("ab.cd..e."));
- CPPUNIT_ASSERT(!p.match("ab.cd.e."));
- CPPUNIT_ASSERT(!p.match(".ab.cd.e"));
-
- p = "";
- CPPUNIT_ASSERT(p.match(""));
-
- p = ".";
- CPPUNIT_ASSERT(p.match("."));
- }
-
-
- void testStar()
- {
- TopicPattern p("a.*.b");
- CPPUNIT_ASSERT(p.match("a.xx.b"));
- CPPUNIT_ASSERT(!p.match("a.b"));
-
- p = "*.x";
- CPPUNIT_ASSERT(p.match("y.x"));
- CPPUNIT_ASSERT(p.match(".x"));
- CPPUNIT_ASSERT(!p.match("x"));
-
- p = "x.x.*";
- CPPUNIT_ASSERT(p.match("x.x.y"));
- CPPUNIT_ASSERT(p.match("x.x."));
- CPPUNIT_ASSERT(!p.match("x.x"));
- CPPUNIT_ASSERT(!p.match("q.x.y"));
- }
-
- void testHash()
- {
- TopicPattern p("a.#.b");
- CPPUNIT_ASSERT(p.match("a.b"));
- CPPUNIT_ASSERT(p.match("a.x.b"));
- CPPUNIT_ASSERT(p.match("a..x.y.zz.b"));
- CPPUNIT_ASSERT(!p.match("a.b."));
- CPPUNIT_ASSERT(!p.match("q.x.b"));
-
- p = "a.#";
- CPPUNIT_ASSERT(p.match("a"));
- CPPUNIT_ASSERT(p.match("a.b"));
- CPPUNIT_ASSERT(p.match("a.b.c"));
-
- p = "#.a";
- CPPUNIT_ASSERT(p.match("a"));
- CPPUNIT_ASSERT(p.match("x.y.a"));
- }
-
- void testMixed()
- {
- TopicPattern p("*.x.#.y");
- CPPUNIT_ASSERT(p.match("a.x.y"));
- CPPUNIT_ASSERT(p.match("a.x.p.qq.y"));
- CPPUNIT_ASSERT(!p.match("a.a.x.y"));
- CPPUNIT_ASSERT(!p.match("aa.x.b.c"));
-
- p = "a.#.b.*";
- CPPUNIT_ASSERT(p.match("a.b.x"));
- CPPUNIT_ASSERT(p.match("a.x.x.x.b.x"));
- }
-
- void testCombo() {
- TopicPattern p("*.#.#.*.*.#");
- CPPUNIT_ASSERT(p.match("x.y.z"));
- CPPUNIT_ASSERT(p.match("x.y.z.a.b.c"));
- CPPUNIT_ASSERT(!p.match("x.y"));
- CPPUNIT_ASSERT(!p.match("x"));
- }
-};
+QPID_AUTO_TEST_CASE(testPlain)
+{
+ TopicPattern p("ab.cd.e");
+ BOOST_CHECK(p.match("ab.cd.e"));
+ BOOST_CHECK(!p.match("abx.cd.e"));
+ BOOST_CHECK(!p.match("ab.cd"));
+ BOOST_CHECK(!p.match("ab.cd..e."));
+ BOOST_CHECK(!p.match("ab.cd.e."));
+ BOOST_CHECK(!p.match(".ab.cd.e"));
+
+ p = "";
+ BOOST_CHECK(p.match(""));
+
+ p = ".";
+ BOOST_CHECK(p.match("."));
+}
-
-// Make this test suite a plugin.
-CPPUNIT_PLUGIN_IMPLEMENT();
-CPPUNIT_TEST_SUITE_REGISTRATION(TopicPatternTest);
-CPPUNIT_TEST_SUITE_REGISTRATION(TokensTest);
+
+QPID_AUTO_TEST_CASE(testStar)
+{
+ TopicPattern p("a.*.b");
+ BOOST_CHECK(p.match("a.xx.b"));
+ BOOST_CHECK(!p.match("a.b"));
+
+ p = "*.x";
+ BOOST_CHECK(p.match("y.x"));
+ BOOST_CHECK(p.match(".x"));
+ BOOST_CHECK(!p.match("x"));
+
+ p = "x.x.*";
+ BOOST_CHECK(p.match("x.x.y"));
+ BOOST_CHECK(p.match("x.x."));
+ BOOST_CHECK(!p.match("x.x"));
+ BOOST_CHECK(!p.match("q.x.y"));
+}
+
+QPID_AUTO_TEST_CASE(testHash)
+{
+ TopicPattern p("a.#.b");
+ BOOST_CHECK(p.match("a.b"));
+ BOOST_CHECK(p.match("a.x.b"));
+ BOOST_CHECK(p.match("a..x.y.zz.b"));
+ BOOST_CHECK(!p.match("a.b."));
+ BOOST_CHECK(!p.match("q.x.b"));
+
+ p = "a.#";
+ BOOST_CHECK(p.match("a"));
+ BOOST_CHECK(p.match("a.b"));
+ BOOST_CHECK(p.match("a.b.c"));
+
+ p = "#.a";
+ BOOST_CHECK(p.match("a"));
+ BOOST_CHECK(p.match("x.y.a"));
+}
+
+QPID_AUTO_TEST_CASE(testMixed)
+{
+ TopicPattern p("*.x.#.y");
+ BOOST_CHECK(p.match("a.x.y"));
+ BOOST_CHECK(p.match("a.x.p.qq.y"));
+ BOOST_CHECK(!p.match("a.a.x.y"));
+ BOOST_CHECK(!p.match("aa.x.b.c"));
+
+ p = "a.#.b.*";
+ BOOST_CHECK(p.match("a.b.x"));
+ BOOST_CHECK(p.match("a.x.x.x.b.x"));
+}
+
+QPID_AUTO_TEST_CASE(testCombo)
+{
+ TopicPattern p("*.#.#.*.*.#");
+ BOOST_CHECK(p.match("x.y.z"));
+ BOOST_CHECK(p.match("x.y.z.a.b.c"));
+ BOOST_CHECK(!p.match("x.y"));
+ BOOST_CHECK(!p.match("x"));
+}
+
+QPID_AUTO_TEST_SUITE_END()
diff --git a/cpp/src/tests/TxAckTest.cpp b/cpp/src/tests/TxAckTest.cpp
index b86f3d75e0..d232976fe8 100644
--- a/cpp/src/tests/TxAckTest.cpp
+++ b/cpp/src/tests/TxAckTest.cpp
@@ -22,7 +22,7 @@
#include "qpid/broker/NullMessageStore.h"
#include "qpid/broker/RecoveryManager.h"
#include "qpid/broker/TxAck.h"
-#include "qpid_test_plugin.h"
+#include "unit_test.h"
#include <iostream>
#include <list>
#include <vector>
@@ -34,29 +34,23 @@ using namespace qpid;
using namespace qpid::broker;
using namespace qpid::framing;
-class TxAckTest : public CppUnit::TestCase
-{
- class TestMessageStore : public NullMessageStore
+class TestMessageStore : public NullMessageStore
+{
+ public:
+ vector<intrusive_ptr<PersistableMessage> > dequeued;
+
+ void dequeue(TransactionContext*, intrusive_ptr<PersistableMessage>& msg, const PersistableQueue& /*queue*/)
{
- public:
- vector<intrusive_ptr<PersistableMessage> > dequeued;
-
- void dequeue(TransactionContext*, intrusive_ptr<PersistableMessage>& msg, const PersistableQueue& /*queue*/)
- {
- dequeued.push_back(msg);
- }
-
- TestMessageStore() : NullMessageStore() {}
- ~TestMessageStore(){}
- };
-
- CPPUNIT_TEST_SUITE(TxAckTest);
- CPPUNIT_TEST(testPrepare);
- CPPUNIT_TEST(testCommit);
- CPPUNIT_TEST_SUITE_END();
+ dequeued.push_back(msg);
+ }
+ TestMessageStore() : NullMessageStore() {}
+ ~TestMessageStore(){}
+};
+struct TxAckTest
+{
AccumulatedAck acked;
TestMessageStore store;
Queue::shared_ptr queue;
@@ -64,9 +58,6 @@ class TxAckTest : public CppUnit::TestCase
list<DeliveryRecord> deliveries;
TxAck op;
-
-public:
-
TxAckTest() : acked(0), queue(new Queue("my_queue", false, &store, 0)), op(acked, deliveries)
{
for(int i = 0; i < 10; i++){
@@ -84,31 +75,35 @@ public:
acked.update(9, 9);
}
- void testPrepare()
- {
- //ensure acked messages are discarded, i.e. dequeued from store
- op.prepare(0);
- CPPUNIT_ASSERT_EQUAL((size_t) 7, store.dequeued.size());
- CPPUNIT_ASSERT_EQUAL((size_t) 10, deliveries.size());
- int dequeued[] = {0, 1, 2, 3, 4, 6, 8};
- for (int i = 0; i < 7; i++) {
- CPPUNIT_ASSERT_EQUAL(static_pointer_cast<PersistableMessage>(messages[dequeued[i]]), store.dequeued[i]);
- }
- }
-
- void testCommit()
- {
- //emsure acked messages are removed from list
- op.commit();
- CPPUNIT_ASSERT_EQUAL((size_t) 3, deliveries.size());
- list<DeliveryRecord>::iterator i = deliveries.begin();
- CPPUNIT_ASSERT(i->matches(6));//msg 6
- CPPUNIT_ASSERT((++i)->matches(8));//msg 8
- CPPUNIT_ASSERT((++i)->matches(10));//msg 10
- }
};
-// Make this test suite a plugin.
-CPPUNIT_PLUGIN_IMPLEMENT();
-CPPUNIT_TEST_SUITE_REGISTRATION(TxAckTest);
+QPID_AUTO_TEST_SUITE(TxAckTestSuite)
+QPID_AUTO_TEST_CASE(testPrepare)
+{
+ TxAckTest t;
+
+ //ensure acked messages are discarded, i.e. dequeued from store
+ t.op.prepare(0);
+ BOOST_CHECK_EQUAL((size_t) 7, t.store.dequeued.size());
+ BOOST_CHECK_EQUAL((size_t) 10, t.deliveries.size());
+ int dequeued[] = {0, 1, 2, 3, 4, 6, 8};
+ for (int i = 0; i < 7; i++) {
+ BOOST_CHECK_EQUAL(static_pointer_cast<PersistableMessage>(t.messages[dequeued[i]]), t.store.dequeued[i]);
+ }
+}
+
+QPID_AUTO_TEST_CASE(testCommit)
+{
+ TxAckTest t;
+
+ //ensure acked messages are removed from list
+ t.op.commit();
+ BOOST_CHECK_EQUAL((size_t) 3, t.deliveries.size());
+ list<DeliveryRecord>::iterator i = t.deliveries.begin();
+ BOOST_CHECK(i->matches(6));//msg 6
+ BOOST_CHECK((++i)->matches(8));//msg 8
+ BOOST_CHECK((++i)->matches(10));//msg 10
+}
+
+QPID_AUTO_TEST_SUITE_END()
diff --git a/cpp/src/tests/TxBufferTest.cpp b/cpp/src/tests/TxBufferTest.cpp
index afe6d2b0fc..3d6a12cacc 100644
--- a/cpp/src/tests/TxBufferTest.cpp
+++ b/cpp/src/tests/TxBufferTest.cpp
@@ -19,7 +19,7 @@
*
*/
#include "qpid/broker/TxBuffer.h"
-#include "qpid_test_plugin.h"
+#include "unit_test.h"
#include <iostream>
#include <vector>
#include "TxMocks.h"
@@ -27,159 +27,150 @@
using namespace qpid::broker;
using boost::static_pointer_cast;
-class TxBufferTest : public CppUnit::TestCase
-{
- CPPUNIT_TEST_SUITE(TxBufferTest);
- CPPUNIT_TEST(testCommitLocal);
- CPPUNIT_TEST(testFailOnCommitLocal);
- CPPUNIT_TEST(testPrepare);
- CPPUNIT_TEST(testFailOnPrepare);
- CPPUNIT_TEST(testRollback);
- CPPUNIT_TEST(testBufferIsClearedAfterRollback);
- CPPUNIT_TEST(testBufferIsClearedAfterCommit);
- CPPUNIT_TEST_SUITE_END();
-
- public:
-
- void testCommitLocal(){
- MockTransactionalStore store;
- store.expectBegin().expectCommit();
-
- MockTxOp::shared_ptr opA(new MockTxOp());
- opA->expectPrepare().expectCommit();
- MockTxOp::shared_ptr opB(new MockTxOp());
- opB->expectPrepare().expectPrepare().expectCommit().expectCommit();//opB enlisted twice to test relative order
- MockTxOp::shared_ptr opC(new MockTxOp());
- opC->expectPrepare().expectCommit();
-
- TxBuffer buffer;
- buffer.enlist(static_pointer_cast<TxOp>(opA));
- buffer.enlist(static_pointer_cast<TxOp>(opB));
- buffer.enlist(static_pointer_cast<TxOp>(opB));//opB enlisted twice
- buffer.enlist(static_pointer_cast<TxOp>(opC));
-
- CPPUNIT_ASSERT(buffer.commitLocal(&store));
- store.check();
- CPPUNIT_ASSERT(store.isCommitted());
- opA->check();
- opB->check();
- opC->check();
- }
-
- void testFailOnCommitLocal(){
- MockTransactionalStore store;
- store.expectBegin().expectAbort();
-
- MockTxOp::shared_ptr opA(new MockTxOp());
- opA->expectPrepare().expectRollback();
- MockTxOp::shared_ptr opB(new MockTxOp(true));
- opB->expectPrepare().expectRollback();
- MockTxOp::shared_ptr opC(new MockTxOp());//will never get prepare as b will fail
- opC->expectRollback();
-
- TxBuffer buffer;
- buffer.enlist(static_pointer_cast<TxOp>(opA));
- buffer.enlist(static_pointer_cast<TxOp>(opB));
- buffer.enlist(static_pointer_cast<TxOp>(opC));
-
- CPPUNIT_ASSERT(!buffer.commitLocal(&store));
- CPPUNIT_ASSERT(store.isAborted());
- store.check();
- opA->check();
- opB->check();
- opC->check();
- }
-
- void testPrepare(){
- MockTxOp::shared_ptr opA(new MockTxOp());
- opA->expectPrepare();
- MockTxOp::shared_ptr opB(new MockTxOp());
- opB->expectPrepare();
- MockTxOp::shared_ptr opC(new MockTxOp());
- opC->expectPrepare();
-
- TxBuffer buffer;
- buffer.enlist(static_pointer_cast<TxOp>(opA));
- buffer.enlist(static_pointer_cast<TxOp>(opB));
- buffer.enlist(static_pointer_cast<TxOp>(opC));
-
- CPPUNIT_ASSERT(buffer.prepare(0));
- opA->check();
- opB->check();
- opC->check();
- }
-
- void testFailOnPrepare(){
- MockTxOp::shared_ptr opA(new MockTxOp());
- opA->expectPrepare();
- MockTxOp::shared_ptr opB(new MockTxOp(true));
- opB->expectPrepare();
- MockTxOp::shared_ptr opC(new MockTxOp());//will never get prepare as b will fail
-
- TxBuffer buffer;
- buffer.enlist(static_pointer_cast<TxOp>(opA));
- buffer.enlist(static_pointer_cast<TxOp>(opB));
- buffer.enlist(static_pointer_cast<TxOp>(opC));
-
- CPPUNIT_ASSERT(!buffer.prepare(0));
- opA->check();
- opB->check();
- opC->check();
- }
-
- void testRollback(){
- MockTxOp::shared_ptr opA(new MockTxOp());
- opA->expectRollback();
- MockTxOp::shared_ptr opB(new MockTxOp(true));
- opB->expectRollback();
- MockTxOp::shared_ptr opC(new MockTxOp());
- opC->expectRollback();
-
- TxBuffer buffer;
- buffer.enlist(static_pointer_cast<TxOp>(opA));
- buffer.enlist(static_pointer_cast<TxOp>(opB));
- buffer.enlist(static_pointer_cast<TxOp>(opC));
-
- buffer.rollback();
- opA->check();
- opB->check();
- opC->check();
- }
-
- void testBufferIsClearedAfterRollback(){
- MockTxOp::shared_ptr opA(new MockTxOp());
- opA->expectRollback();
- MockTxOp::shared_ptr opB(new MockTxOp());
- opB->expectRollback();
-
- TxBuffer buffer;
- buffer.enlist(static_pointer_cast<TxOp>(opA));
- buffer.enlist(static_pointer_cast<TxOp>(opB));
-
- buffer.rollback();
- buffer.commit();//second call should not reach ops
- opA->check();
- opB->check();
- }
-
- void testBufferIsClearedAfterCommit(){
- MockTxOp::shared_ptr opA(new MockTxOp());
- opA->expectCommit();
- MockTxOp::shared_ptr opB(new MockTxOp());
- opB->expectCommit();
-
- TxBuffer buffer;
- buffer.enlist(static_pointer_cast<TxOp>(opA));
- buffer.enlist(static_pointer_cast<TxOp>(opB));
-
- buffer.commit();
- buffer.rollback();//second call should not reach ops
- opA->check();
- opB->check();
- }
-};
-
-// Make this test suite a plugin.
-CPPUNIT_PLUGIN_IMPLEMENT();
-CPPUNIT_TEST_SUITE_REGISTRATION(TxBufferTest);
+QPID_AUTO_TEST_SUITE(TxBufferTestSuite)
+QPID_AUTO_TEST_CASE(testCommitLocal)
+{
+ MockTransactionalStore store;
+ store.expectBegin().expectCommit();
+
+ MockTxOp::shared_ptr opA(new MockTxOp());
+ opA->expectPrepare().expectCommit();
+ MockTxOp::shared_ptr opB(new MockTxOp());
+ opB->expectPrepare().expectPrepare().expectCommit().expectCommit();//opB enlisted twice to test relative order
+ MockTxOp::shared_ptr opC(new MockTxOp());
+ opC->expectPrepare().expectCommit();
+
+ TxBuffer buffer;
+ buffer.enlist(static_pointer_cast<TxOp>(opA));
+ buffer.enlist(static_pointer_cast<TxOp>(opB));
+ buffer.enlist(static_pointer_cast<TxOp>(opB));//opB enlisted twice
+ buffer.enlist(static_pointer_cast<TxOp>(opC));
+
+ BOOST_CHECK(buffer.commitLocal(&store));
+ store.check();
+ BOOST_CHECK(store.isCommitted());
+ opA->check();
+ opB->check();
+ opC->check();
+}
+
+QPID_AUTO_TEST_CASE(testFailOnCommitLocal)
+{
+ MockTransactionalStore store;
+ store.expectBegin().expectAbort();
+
+ MockTxOp::shared_ptr opA(new MockTxOp());
+ opA->expectPrepare().expectRollback();
+ MockTxOp::shared_ptr opB(new MockTxOp(true));
+ opB->expectPrepare().expectRollback();
+ MockTxOp::shared_ptr opC(new MockTxOp());//will never get prepare as b will fail
+ opC->expectRollback();
+
+ TxBuffer buffer;
+ buffer.enlist(static_pointer_cast<TxOp>(opA));
+ buffer.enlist(static_pointer_cast<TxOp>(opB));
+ buffer.enlist(static_pointer_cast<TxOp>(opC));
+
+ BOOST_CHECK(!buffer.commitLocal(&store));
+ BOOST_CHECK(store.isAborted());
+ store.check();
+ opA->check();
+ opB->check();
+ opC->check();
+}
+
+QPID_AUTO_TEST_CASE(testPrepare)
+{
+ MockTxOp::shared_ptr opA(new MockTxOp());
+ opA->expectPrepare();
+ MockTxOp::shared_ptr opB(new MockTxOp());
+ opB->expectPrepare();
+ MockTxOp::shared_ptr opC(new MockTxOp());
+ opC->expectPrepare();
+
+ TxBuffer buffer;
+ buffer.enlist(static_pointer_cast<TxOp>(opA));
+ buffer.enlist(static_pointer_cast<TxOp>(opB));
+ buffer.enlist(static_pointer_cast<TxOp>(opC));
+
+ BOOST_CHECK(buffer.prepare(0));
+ opA->check();
+ opB->check();
+ opC->check();
+}
+
+QPID_AUTO_TEST_CASE(testFailOnPrepare)
+{
+ MockTxOp::shared_ptr opA(new MockTxOp());
+ opA->expectPrepare();
+ MockTxOp::shared_ptr opB(new MockTxOp(true));
+ opB->expectPrepare();
+ MockTxOp::shared_ptr opC(new MockTxOp());//will never get prepare as b will fail
+
+ TxBuffer buffer;
+ buffer.enlist(static_pointer_cast<TxOp>(opA));
+ buffer.enlist(static_pointer_cast<TxOp>(opB));
+ buffer.enlist(static_pointer_cast<TxOp>(opC));
+
+ BOOST_CHECK(!buffer.prepare(0));
+ opA->check();
+ opB->check();
+ opC->check();
+}
+
+QPID_AUTO_TEST_CASE(testRollback)
+{
+ MockTxOp::shared_ptr opA(new MockTxOp());
+ opA->expectRollback();
+ MockTxOp::shared_ptr opB(new MockTxOp(true));
+ opB->expectRollback();
+ MockTxOp::shared_ptr opC(new MockTxOp());
+ opC->expectRollback();
+
+ TxBuffer buffer;
+ buffer.enlist(static_pointer_cast<TxOp>(opA));
+ buffer.enlist(static_pointer_cast<TxOp>(opB));
+ buffer.enlist(static_pointer_cast<TxOp>(opC));
+
+ buffer.rollback();
+ opA->check();
+ opB->check();
+ opC->check();
+}
+
+QPID_AUTO_TEST_CASE(testBufferIsClearedAfterRollback)
+{
+ MockTxOp::shared_ptr opA(new MockTxOp());
+ opA->expectRollback();
+ MockTxOp::shared_ptr opB(new MockTxOp());
+ opB->expectRollback();
+
+ TxBuffer buffer;
+ buffer.enlist(static_pointer_cast<TxOp>(opA));
+ buffer.enlist(static_pointer_cast<TxOp>(opB));
+
+ buffer.rollback();
+ buffer.commit();//second call should not reach ops
+ opA->check();
+ opB->check();
+}
+
+QPID_AUTO_TEST_CASE(testBufferIsClearedAfterCommit)
+{
+ MockTxOp::shared_ptr opA(new MockTxOp());
+ opA->expectCommit();
+ MockTxOp::shared_ptr opB(new MockTxOp());
+ opB->expectCommit();
+
+ TxBuffer buffer;
+ buffer.enlist(static_pointer_cast<TxOp>(opA));
+ buffer.enlist(static_pointer_cast<TxOp>(opB));
+
+ buffer.commit();
+ buffer.rollback();//second call should not reach ops
+ opA->check();
+ opB->check();
+}
+
+QPID_AUTO_TEST_SUITE_END()
diff --git a/cpp/src/tests/TxMocks.h b/cpp/src/tests/TxMocks.h
index 127a27c005..86864b987e 100644
--- a/cpp/src/tests/TxMocks.h
+++ b/cpp/src/tests/TxMocks.h
@@ -35,7 +35,7 @@ using std::string;
template <class T> void assertEqualVector(std::vector<T>& expected, std::vector<T>& actual){
unsigned int i = 0;
while(i < expected.size() && i < actual.size()){
- CPPUNIT_ASSERT_EQUAL(expected[i], actual[i]);
+ BOOST_CHECK_EQUAL(expected[i], actual[i]);
i++;
}
if (i < expected.size()) {
@@ -43,7 +43,7 @@ template <class T> void assertEqualVector(std::vector<T>& expected, std::vector<
} else if (i < actual.size()) {
throw qpid::Exception(QPID_MSG("Extra " << actual[i]));
}
- CPPUNIT_ASSERT_EQUAL(expected.size(), actual.size());
+ BOOST_CHECK_EQUAL(expected.size(), actual.size());
}
class TxOpConstants{
diff --git a/cpp/src/tests/TxPublishTest.cpp b/cpp/src/tests/TxPublishTest.cpp
index af7761acee..76e3ca392b 100644
--- a/cpp/src/tests/TxPublishTest.cpp
+++ b/cpp/src/tests/TxPublishTest.cpp
@@ -21,7 +21,7 @@
#include "qpid/broker/NullMessageStore.h"
#include "qpid/broker/RecoveryManager.h"
#include "qpid/broker/TxPublish.h"
-#include "qpid_test_plugin.h"
+#include "unit_test.h"
#include <iostream>
#include <list>
#include <vector>
@@ -34,31 +34,26 @@ using boost::intrusive_ptr;
using namespace qpid::broker;
using namespace qpid::framing;
-class TxPublishTest : public CppUnit::TestCase
-{
- typedef std::pair<string, intrusive_ptr<PersistableMessage> > msg_queue_pair;
+typedef std::pair<string, intrusive_ptr<PersistableMessage> > msg_queue_pair;
- class TestMessageStore : public NullMessageStore
- {
- public:
- vector<msg_queue_pair> enqueued;
+class TestMessageStore : public NullMessageStore
+{
+ public:
+ vector<msg_queue_pair> enqueued;
- void enqueue(TransactionContext*, intrusive_ptr<PersistableMessage>& msg, const PersistableQueue& queue)
- {
- msg->enqueueComplete();
- enqueued.push_back(msg_queue_pair(queue.getName(), msg));
- }
+ void enqueue(TransactionContext*, intrusive_ptr<PersistableMessage>& msg, const PersistableQueue& queue)
+ {
+ msg->enqueueComplete();
+ enqueued.push_back(msg_queue_pair(queue.getName(), msg));
+ }
- //dont care about any of the other methods:
- TestMessageStore() : NullMessageStore(false) {}
- ~TestMessageStore(){}
- };
-
- CPPUNIT_TEST_SUITE(TxPublishTest);
- CPPUNIT_TEST(testPrepare);
- CPPUNIT_TEST(testCommit);
- CPPUNIT_TEST_SUITE_END();
-
+ //dont care about any of the other methods:
+ TestMessageStore() : NullMessageStore(false) {}
+ ~TestMessageStore(){}
+};
+
+struct TxPublishTest
+{
TestMessageStore store;
Queue::shared_ptr queue1;
@@ -66,8 +61,6 @@ class TxPublishTest : public CppUnit::TestCase
intrusive_ptr<Message> msg;
TxPublish op;
-public:
-
TxPublishTest() :
queue1(new Queue("queue1", false, &store, 0)),
queue2(new Queue("queue2", false, &store, 0)),
@@ -78,37 +71,41 @@ public:
op.deliverTo(queue1);
op.deliverTo(queue2);
}
+};
- void testPrepare()
- {
- intrusive_ptr<PersistableMessage> pmsg = static_pointer_cast<PersistableMessage>(msg);
- //ensure messages are enqueued in store
- op.prepare(0);
- CPPUNIT_ASSERT_EQUAL((size_t) 2, store.enqueued.size());
- CPPUNIT_ASSERT_EQUAL(string("queue1"), store.enqueued[0].first);
- CPPUNIT_ASSERT_EQUAL(pmsg, store.enqueued[0].second);
- CPPUNIT_ASSERT_EQUAL(string("queue2"), store.enqueued[1].first);
- CPPUNIT_ASSERT_EQUAL(pmsg, store.enqueued[1].second);
- CPPUNIT_ASSERT_EQUAL( true, ( static_pointer_cast<PersistableMessage>(msg))->isEnqueueComplete());
- }
- void testCommit()
- {
- //ensure messages are delivered to queue
- op.prepare(0);
- op.commit();
- CPPUNIT_ASSERT_EQUAL((uint32_t) 1, queue1->getMessageCount());
- intrusive_ptr<Message> msg_dequeue = queue1->dequeue().payload;
+QPID_AUTO_TEST_SUITE(TxPublishTestSuite)
+
+QPID_AUTO_TEST_CASE(testPrepare)
+{
+ TxPublishTest t;
- CPPUNIT_ASSERT_EQUAL( true, (static_pointer_cast<PersistableMessage>(msg_dequeue))->isEnqueueComplete());
- CPPUNIT_ASSERT_EQUAL(msg, msg_dequeue);
+ intrusive_ptr<PersistableMessage> pmsg = static_pointer_cast<PersistableMessage>(t.msg);
+ //ensure messages are enqueued in store
+ t.op.prepare(0);
+ BOOST_CHECK_EQUAL((size_t) 2, t.store.enqueued.size());
+ BOOST_CHECK_EQUAL(string("queue1"), t.store.enqueued[0].first);
+ BOOST_CHECK_EQUAL(pmsg, t.store.enqueued[0].second);
+ BOOST_CHECK_EQUAL(string("queue2"), t.store.enqueued[1].first);
+ BOOST_CHECK_EQUAL(pmsg, t.store.enqueued[1].second);
+ BOOST_CHECK_EQUAL( true, ( static_pointer_cast<PersistableMessage>(t.msg))->isEnqueueComplete());
+}
- CPPUNIT_ASSERT_EQUAL((uint32_t) 1, queue2->getMessageCount());
- CPPUNIT_ASSERT_EQUAL(msg, queue2->dequeue().payload);
- }
-};
+QPID_AUTO_TEST_CASE(testCommit)
+{
+ TxPublishTest t;
+
+ //ensure messages are delivered to queue
+ t.op.prepare(0);
+ t.op.commit();
+ BOOST_CHECK_EQUAL((uint32_t) 1, t.queue1->getMessageCount());
+ intrusive_ptr<Message> msg_dequeue = t.queue1->dequeue().payload;
+
+ BOOST_CHECK_EQUAL( true, (static_pointer_cast<PersistableMessage>(msg_dequeue))->isEnqueueComplete());
+ BOOST_CHECK_EQUAL(t.msg, msg_dequeue);
-// Make this test suite a plugin.
-CPPUNIT_PLUGIN_IMPLEMENT();
-CPPUNIT_TEST_SUITE_REGISTRATION(TxPublishTest);
+ BOOST_CHECK_EQUAL((uint32_t) 1, t.queue2->getMessageCount());
+ BOOST_CHECK_EQUAL(t.msg, t.queue2->dequeue().payload);
+}
+QPID_AUTO_TEST_SUITE_END()