diff options
author | Gordon Sim <gsim@apache.org> | 2006-11-07 16:58:31 +0000 |
---|---|---|
committer | Gordon Sim <gsim@apache.org> | 2006-11-07 16:58:31 +0000 |
commit | fd69619118c808b2c30af3dbb4a9882f192237b3 (patch) | |
tree | 21e6fd2171eab3a028ff8c9bbb847a24b6410536 /cpp/test | |
parent | 0b03d292bad662cf4e65017bf944937b54b6933d (diff) | |
download | qpid-python-fd69619118c808b2c30af3dbb4a9882f192237b3.tar.gz |
Modified TransactionalStore to return the txn ctxt as an auto_ptr to make ownership more obvious.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@472166 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/test')
-rw-r--r-- | cpp/test/unit/qpid/broker/TxAckTest.cpp | 2 | ||||
-rw-r--r-- | cpp/test/unit/qpid/broker/TxBufferTest.cpp | 84 | ||||
-rw-r--r-- | cpp/test/unit/qpid/broker/TxPublishTest.cpp | 2 |
3 files changed, 46 insertions, 42 deletions
diff --git a/cpp/test/unit/qpid/broker/TxAckTest.cpp b/cpp/test/unit/qpid/broker/TxAckTest.cpp index a619809b97..b6f8fbc1a1 100644 --- a/cpp/test/unit/qpid/broker/TxAckTest.cpp +++ b/cpp/test/unit/qpid/broker/TxAckTest.cpp @@ -48,7 +48,7 @@ class TxAckTest : public CppUnit::TestCase void enqueue(TransactionContext*, Message::shared_ptr&, const Queue&, const string * const){} void committed(const string * const){} void aborted(const string * const){} - TransactionContext* begin(){ return 0; } + std::auto_ptr<TransactionContext> begin(){ return std::auto_ptr<TransactionContext>(); } void commit(TransactionContext*){} void abort(TransactionContext*){} ~TestMessageStore(){} diff --git a/cpp/test/unit/qpid/broker/TxBufferTest.cpp b/cpp/test/unit/qpid/broker/TxBufferTest.cpp index 35b92671aa..e9c531fad1 100644 --- a/cpp/test/unit/qpid/broker/TxBufferTest.cpp +++ b/cpp/test/unit/qpid/broker/TxBufferTest.cpp @@ -34,35 +34,6 @@ template <class T> void assertEqualVector(std::vector<T>& expected, std::vector< class TxBufferTest : public CppUnit::TestCase { - class TestTransactionContext : public TransactionContext{ - enum states {OPEN = 1, COMMITTED = 2, ABORTED = 3}; - int state; - public: - TestTransactionContext() : state(OPEN) {} - void commit(){ - if(state != OPEN) throw "txn already completed"; - state = COMMITTED; - } - - void abort(){ - if(state != OPEN) throw "txn already completed"; - state = ABORTED; - } - - bool isCommitted(){ - return state == COMMITTED; - } - - bool isAborted(){ - return state == ABORTED; - } - - bool isOpen(){ - return state == OPEN; - } - ~TestTransactionContext(){} - }; - class MockTxOp : public TxOp{ enum op_codes {PREPARE=2, COMMIT=4, ROLLBACK=8}; std::vector<int> expected; @@ -105,24 +76,45 @@ class TxBufferTest : public CppUnit::TestCase std::vector<int> expected; std::vector<int> actual; + enum states {OPEN = 1, COMMITTED = 2, ABORTED = 3}; + int state; + + class TestTransactionContext : public TransactionContext{ + MockTransactionalStore* store; + public: + TestTransactionContext(MockTransactionalStore* _store) : store(_store) {} + void commit(){ + if(store->state != OPEN) throw "txn already completed"; + store->state = COMMITTED; + } + + void abort(){ + if(store->state != OPEN) throw "txn already completed"; + store->state = ABORTED; + } + ~TestTransactionContext(){} + }; + + public: - TestTransactionContext txn; + MockTransactionalStore() : state(OPEN){} - TransactionContext* begin(){ + std::auto_ptr<TransactionContext> begin(){ actual.push_back(BEGIN); - return &txn; + std::auto_ptr<TransactionContext> txn(new TestTransactionContext(this)); + return txn; } void commit(TransactionContext* ctxt){ actual.push_back(COMMIT); - TestTransactionContext* _txn(dynamic_cast<TestTransactionContext*>(ctxt)); - CPPUNIT_ASSERT_EQUAL(_txn, &txn); - _txn->commit(); + TestTransactionContext* txn(dynamic_cast<TestTransactionContext*>(ctxt)); + CPPUNIT_ASSERT(txn); + txn->commit(); } void abort(TransactionContext* ctxt){ actual.push_back(ABORT); - TestTransactionContext* _txn(dynamic_cast<TestTransactionContext*>(ctxt)); - CPPUNIT_ASSERT_EQUAL(_txn, &txn); - _txn->abort(); + TestTransactionContext* txn(dynamic_cast<TestTransactionContext*>(ctxt)); + CPPUNIT_ASSERT(txn); + txn->abort(); } MockTransactionalStore& expectBegin(){ expected.push_back(BEGIN); @@ -139,6 +131,18 @@ class TxBufferTest : public CppUnit::TestCase void check(){ assertEqualVector(expected, actual); } + + bool isCommitted(){ + return state == COMMITTED; + } + + bool isAborted(){ + return state == ABORTED; + } + + bool isOpen(){ + return state == OPEN; + } ~MockTransactionalStore(){} }; @@ -170,7 +174,7 @@ class TxBufferTest : public CppUnit::TestCase CPPUNIT_ASSERT(buffer.prepare(&store)); buffer.commit(); store.check(); - CPPUNIT_ASSERT(store.txn.isCommitted()); + CPPUNIT_ASSERT(store.isCommitted()); opA.check(); opB.check(); opC.check(); @@ -193,7 +197,7 @@ class TxBufferTest : public CppUnit::TestCase CPPUNIT_ASSERT(!buffer.prepare(&store)); store.check(); - CPPUNIT_ASSERT(store.txn.isAborted()); + CPPUNIT_ASSERT(store.isAborted()); opA.check(); opB.check(); opC.check(); diff --git a/cpp/test/unit/qpid/broker/TxPublishTest.cpp b/cpp/test/unit/qpid/broker/TxPublishTest.cpp index b8387b0752..a3a72b9475 100644 --- a/cpp/test/unit/qpid/broker/TxPublishTest.cpp +++ b/cpp/test/unit/qpid/broker/TxPublishTest.cpp @@ -49,7 +49,7 @@ class TxPublishTest : public CppUnit::TestCase void dequeue(TransactionContext*, Message::shared_ptr&, const Queue&, const string * const){} void committed(const string * const){} void aborted(const string * const){} - TransactionContext* begin(){ return 0; } + std::auto_ptr<TransactionContext> begin(){ return std::auto_ptr<TransactionContext>(); } void commit(TransactionContext*){} void abort(TransactionContext*){} ~TestMessageStore(){} |