summaryrefslogtreecommitdiff
path: root/cpp/src/tests/TxBufferTest.cpp
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2007-04-19 17:56:21 +0000
committerGordon Sim <gsim@apache.org>2007-04-19 17:56:21 +0000
commitb1ad015fe2670bc3e5471c5e350e243cca948dcf (patch)
treecbbae911b59a34f7cbe998609ca9d14f8984ca37 /cpp/src/tests/TxBufferTest.cpp
parente7cc3594288f5a6ed6c6565e34413823f5b8e2d8 (diff)
downloadqpid-python-b1ad015fe2670bc3e5471c5e350e243cca948dcf.tar.gz
Some dtx related updates.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@530500 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/tests/TxBufferTest.cpp')
-rw-r--r--cpp/src/tests/TxBufferTest.cpp57
1 files changed, 48 insertions, 9 deletions
diff --git a/cpp/src/tests/TxBufferTest.cpp b/cpp/src/tests/TxBufferTest.cpp
index bd43691235..f58d6e356f 100644
--- a/cpp/src/tests/TxBufferTest.cpp
+++ b/cpp/src/tests/TxBufferTest.cpp
@@ -161,7 +161,9 @@ class TxBufferTest : public CppUnit::TestCase
};
CPPUNIT_TEST_SUITE(TxBufferTest);
- CPPUNIT_TEST(testPrepareAndCommit);
+ CPPUNIT_TEST(testCommitLocal);
+ CPPUNIT_TEST(testFailOnCommitLocal);
+ CPPUNIT_TEST(testPrepare);
CPPUNIT_TEST(testFailOnPrepare);
CPPUNIT_TEST(testRollback);
CPPUNIT_TEST(testBufferIsClearedAfterRollback);
@@ -170,14 +172,14 @@ class TxBufferTest : public CppUnit::TestCase
public:
- void testPrepareAndCommit(){
+ 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 reative order
+ opB->expectPrepare().expectPrepare().expectCommit().expectCommit();//opB enlisted twice to test relative order
MockTxOp::shared_ptr opC(new MockTxOp());
opC->expectPrepare().expectCommit();
@@ -187,8 +189,7 @@ class TxBufferTest : public CppUnit::TestCase
buffer.enlist(static_pointer_cast<TxOp>(opB));//opB enlisted twice
buffer.enlist(static_pointer_cast<TxOp>(opC));
- CPPUNIT_ASSERT(buffer.prepare(&store));
- buffer.commit();
+ CPPUNIT_ASSERT(buffer.commitLocal(&store));
store.check();
CPPUNIT_ASSERT(store.isCommitted());
opA->check();
@@ -196,11 +197,51 @@ class TxBufferTest : public CppUnit::TestCase
opC->check();
}
- void testFailOnPrepare(){
+ 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();
@@ -211,9 +252,7 @@ class TxBufferTest : public CppUnit::TestCase
buffer.enlist(static_pointer_cast<TxOp>(opB));
buffer.enlist(static_pointer_cast<TxOp>(opC));
- CPPUNIT_ASSERT(!buffer.prepare(&store));
- store.check();
- CPPUNIT_ASSERT(store.isAborted());
+ CPPUNIT_ASSERT(!buffer.prepare(0));
opA->check();
opB->check();
opC->check();