diff options
Diffstat (limited to 'src/third_party/wiredtiger/test/suite/test_prepare02.py')
-rw-r--r-- | src/third_party/wiredtiger/test/suite/test_prepare02.py | 56 |
1 files changed, 28 insertions, 28 deletions
diff --git a/src/third_party/wiredtiger/test/suite/test_prepare02.py b/src/third_party/wiredtiger/test/suite/test_prepare02.py index 7546cc44d59..ebe79cf729c 100644 --- a/src/third_party/wiredtiger/test/suite/test_prepare02.py +++ b/src/third_party/wiredtiger/test/suite/test_prepare02.py @@ -40,38 +40,33 @@ class test_prepare02(wttest.WiredTigerTestCase, suite_subprocess): session_config = 'isolation=snapshot' def test_prepare_session_operations(self): - self.session.create("table:mytable", "key_format=S,value_format=S") - cursor = self.session.open_cursor("table:mytable", None) - # Test the session methods that are forbidden after the transaction is - # prepared. + # Test the session methods forbidden after the transaction is prepared. + self.session.create("table:mytable", "key_format=S,value_format=S") self.session.begin_transaction() + cursor = self.session.open_cursor("table:mytable", None) + cursor["key"] = "value" self.session.prepare_transaction("prepare_timestamp=2a") - msg = "/ not permitted in a/" - # - # The operations listed below are not supported in the prepared state. - # - # The operations are listed in the same order as they are declared in - # the session structure. Any function missing below is allowed in the - # prepared state. - # + msg = "/not permitted in a prepared transaction/" + + # The operations are listed in the same order as they are declared in the session structure. + # WT_SESSION.close permitted. self.assertRaisesWithMessage(wiredtiger.WiredTigerError, lambda:self.session.reconfigure(), msg) + # WT_SESSION.strerror permitted, but currently broken in the Python API (WT-5399). self.assertRaisesWithMessage(wiredtiger.WiredTigerError, lambda: self.session.open_cursor("table:mytable", None), msg) self.assertRaisesWithMessage(wiredtiger.WiredTigerError, - lambda: self.session.alter("table:mytable", - "access_pattern_hint=random"), msg) + lambda: self.session.alter("table:mytable", "access_pattern_hint=random"), msg) self.assertRaisesWithMessage(wiredtiger.WiredTigerError, - lambda: self.session.create("table:mytable1", - "key_format=S,value_format=S"), msg) + lambda: self.session.create("table:mytable1", "key_format=S,value_format=S"), msg) + # WT_SESSION.import permitted, not supported in the Python API. self.assertRaisesWithMessage(wiredtiger.WiredTigerError, lambda: self.session.compact("table:mytable"), msg) self.assertRaisesWithMessage(wiredtiger.WiredTigerError, lambda: self.session.drop("table:mytable", None), msg) self.assertRaisesWithMessage(wiredtiger.WiredTigerError, - lambda: self.session.join(cursor, cursor, - "compare=gt,count=10"), msg) + lambda: self.session.join(cursor, cursor, "compare=gt,count=10"), msg) self.assertRaisesWithMessage(wiredtiger.WiredTigerError, lambda: self.session.log_flush("sync=on"), msg) self.assertRaisesWithMessage(wiredtiger.WiredTigerError, @@ -79,33 +74,39 @@ class test_prepare02(wttest.WiredTigerTestCase, suite_subprocess): self.assertRaisesWithMessage(wiredtiger.WiredTigerError, lambda: self.session.rebalance("table:mytable", None), msg) self.assertRaisesWithMessage(wiredtiger.WiredTigerError, - lambda: self.session.rename("table:mytable", "table:mynewtable", - None), msg) + lambda: self.session.rename("table:mytable", "table:mynewtable", None), msg) self.assertRaisesWithMessage(wiredtiger.WiredTigerError, lambda:self.session.reset(), msg) self.assertRaisesWithMessage(wiredtiger.WiredTigerError, lambda: self.session.salvage("table:mytable", None), msg) self.assertRaisesWithMessage(wiredtiger.WiredTigerError, - lambda: self.session.truncate("table:mytable", - None, None, None), msg) + lambda: self.session.truncate("table:mytable", None, None, None), msg) self.assertRaisesWithMessage(wiredtiger.WiredTigerError, lambda: self.session.upgrade("table:mytable", None), msg) self.assertRaisesWithMessage(wiredtiger.WiredTigerError, lambda: self.session.verify("table:mytable", None), msg) self.assertRaisesWithMessage(wiredtiger.WiredTigerError, lambda:self.session.begin_transaction(), msg) + # WT_SESSION.commit_transaction permitted, tested below. self.assertRaisesWithMessage(wiredtiger.WiredTigerError, lambda:self.session.prepare_transaction("prepare_timestamp=2a"), msg) - self.assertRaisesWithMessage(wiredtiger.WiredTigerError, - lambda: self.session.timestamp_transaction( - "read_timestamp=2a"), msg) + # WT_SESSION.rollback_transaction permitted, tested below. + self.session.timestamp_transaction("commit_timestamp=2b") + self.assertTimestampsEqual(self.session.query_timestamp('get=prepare'), '2a') self.assertRaisesWithMessage(wiredtiger.WiredTigerError, lambda:self.session.checkpoint(), msg) self.assertRaisesWithMessage(wiredtiger.WiredTigerError, lambda: self.session.snapshot("name=test"), msg) + # WT_SESSION.transaction_pinned_range permitted, not supported in the Python API. self.assertRaisesWithMessage(wiredtiger.WiredTigerError, lambda:self.session.transaction_sync(), msg) - self.session.rollback_transaction() + self.session.breakpoint() + + # Commit the transaction. Test that no "not permitted in a prepared transaction" error has + # set a transaction error flag, that is, we should still be able to commit successfully. + self.session.timestamp_transaction("commit_timestamp=2b") + self.session.timestamp_transaction("durable_timestamp=2b") + self.session.commit_transaction('commit_timestamp=2a') # Commit after prepare is permitted. self.session.begin_transaction() @@ -115,8 +116,7 @@ class test_prepare02(wttest.WiredTigerTestCase, suite_subprocess): self.session.timestamp_transaction("durable_timestamp=2b") self.session.commit_transaction() - # Setting commit timestamp via timestamp_transaction after - # prepare is also permitted. + # Setting commit timestamp via timestamp_transaction after prepare is also permitted. self.session.begin_transaction() c1 = self.session.open_cursor("table:mytable", None) self.session.prepare_transaction("prepare_timestamp=2a") |