summaryrefslogtreecommitdiff
path: root/python/tests_0-10/dtx.py
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2008-05-28 12:49:11 +0000
committerGordon Sim <gsim@apache.org>2008-05-28 12:49:11 +0000
commitc3649a7d5f9ac3ddb10406e66baa76a7c3f1cad5 (patch)
tree6d5e78b5bf3f3ed7ef711401aae7b24eb9b48791 /python/tests_0-10/dtx.py
parent568b4e92244a0491e1761bfa42baeed9d8a99431 (diff)
downloadqpid-python-c3649a7d5f9ac3ddb10406e66baa76a7c3f1cad5.tar.gz
QPID-1095: fixes to dtx error codes for latest spec changes.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@660924 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'python/tests_0-10/dtx.py')
-rw-r--r--python/tests_0-10/dtx.py123
1 files changed, 116 insertions, 7 deletions
diff --git a/python/tests_0-10/dtx.py b/python/tests_0-10/dtx.py
index d676b5806c..cea742b81c 100644
--- a/python/tests_0-10/dtx.py
+++ b/python/tests_0-10/dtx.py
@@ -199,7 +199,7 @@ class DtxTests(TestBase010):
session1.dtx_rollback(xid=tx)
#verification:
- if failed: self.assertEquals(503, error.args[0].error_code)
+ if failed: self.assertEquals(530, error.args[0].error_code)
else: self.fail("Xid already known, expected exception!")
def test_forget_xid_on_completion(self):
@@ -439,7 +439,7 @@ class DtxTests(TestBase010):
if failed:
self.session.dtx_rollback(xid=tx)
- self.assertEquals(503, error.args[0].error_code)
+ self.assertEquals(409, error.args[0].error_code)
else:
tester.close()
other.close()
@@ -450,10 +450,6 @@ class DtxTests(TestBase010):
Test that a commit with one_phase = False is rejected if the
transaction in question has not yet been prepared.
"""
- """
- Test that a commit with one_phase = True is rejected if the
- transaction in question has already been prepared.
- """
other = self.connect()
tester = other.session("tester", 1)
tester.queue_declare(queue="dummy", exclusive=True, auto_delete=True)
@@ -471,12 +467,97 @@ class DtxTests(TestBase010):
if failed:
self.session.dtx_rollback(xid=tx)
- self.assertEquals(503, error.args[0].error_code)
+ self.assertEquals(409, error.args[0].error_code)
else:
tester.close()
other.close()
self.fail("Invalid use of one_phase=False, expected exception!")
+ def test_invalid_commit_not_ended(self):
+ """
+ Test that a commit fails if the xid is still associated with a session.
+ """
+ other = self.connect()
+ tester = other.session("tester", 1)
+ self.session.queue_declare(queue="dummy", exclusive=True, auto_delete=True)
+ self.session.dtx_select()
+ tx = self.xid("dummy")
+ self.session.dtx_start(xid=tx)
+ self.session.message_transfer(self.createMessage(tester, "dummy", "dummy", "whatever"))
+
+ failed = False
+ try:
+ tester.dtx_commit(xid=tx, one_phase=False)
+ except SessionException, e:
+ failed = True
+ error = e
+
+ if failed:
+ self.session.dtx_end(xid=tx)
+ self.session.dtx_rollback(xid=tx)
+ self.assertEquals(409, error.args[0].error_code)
+ else:
+ tester.close()
+ other.close()
+ self.fail("Commit should fail as xid is still associated!")
+
+ def test_invalid_rollback_not_ended(self):
+ """
+ Test that a rollback fails if the xid is still associated with a session.
+ """
+ other = self.connect()
+ tester = other.session("tester", 1)
+ self.session.queue_declare(queue="dummy", exclusive=True, auto_delete=True)
+ self.session.dtx_select()
+ tx = self.xid("dummy")
+ self.session.dtx_start(xid=tx)
+ self.session.message_transfer(self.createMessage(tester, "dummy", "dummy", "whatever"))
+
+ failed = False
+ try:
+ tester.dtx_rollback(xid=tx)
+ except SessionException, e:
+ failed = True
+ error = e
+
+ if failed:
+ self.session.dtx_end(xid=tx)
+ self.session.dtx_rollback(xid=tx)
+ self.assertEquals(409, error.args[0].error_code)
+ else:
+ tester.close()
+ other.close()
+ self.fail("Rollback should fail as xid is still associated!")
+
+
+ def test_invalid_prepare_not_ended(self):
+ """
+ Test that a prepare fails if the xid is still associated with a session.
+ """
+ other = self.connect()
+ tester = other.session("tester", 1)
+ self.session.queue_declare(queue="dummy", exclusive=True, auto_delete=True)
+ self.session.dtx_select()
+ tx = self.xid("dummy")
+ self.session.dtx_start(xid=tx)
+ self.session.message_transfer(self.createMessage(tester, "dummy", "dummy", "whatever"))
+
+ failed = False
+ try:
+ tester.dtx_prepare(xid=tx)
+ except SessionException, e:
+ failed = True
+ error = e
+
+ if failed:
+ self.session.dtx_end(xid=tx)
+ self.session.dtx_rollback(xid=tx)
+ self.assertEquals(409, error.args[0].error_code)
+ else:
+ tester.close()
+ other.close()
+ self.fail("Rollback should fail as xid is still associated!")
+
def test_implicit_end(self):
"""
Test that an association is implicitly ended when the session
@@ -601,6 +682,34 @@ class DtxTests(TestBase010):
except SessionException, e:
self.assertEquals(503, e.args[0].error_code)
+ def test_prepare_unknown(self):
+ session = self.session
+ try:
+ session.dtx_prepare(xid=self.xid("unknown"))
+ except SessionException, e:
+ self.assertEquals(404, e.args[0].error_code)
+
+ def test_commit_unknown(self):
+ session = self.session
+ try:
+ session.dtx_commit(xid=self.xid("unknown"))
+ except SessionException, e:
+ self.assertEquals(404, e.args[0].error_code)
+
+ def test_rollback_unknown(self):
+ session = self.session
+ try:
+ session.dtx_rollback(xid=self.xid("unknown"))
+ except SessionException, e:
+ self.assertEquals(404, e.args[0].error_code)
+
+ def test_get_timeout_unknown(self):
+ session = self.session
+ try:
+ session.dtx_get_timeout(xid=self.xid("unknown"))
+ except SessionException, e:
+ self.assertEquals(404, e.args[0].error_code)
+
def xid(self, txid):
DtxTests.tx_counter += 1
branchqual = "v%s" % DtxTests.tx_counter