summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/test/suite/test_assert03.py
diff options
context:
space:
mode:
authorAlex Gorrod <alexander.gorrod@mongodb.com>2017-10-10 16:29:49 +1100
committerAlex Gorrod <alexander.gorrod@mongodb.com>2017-10-10 16:37:55 +1100
commit39998ac6928c4e7f3acd2f7ee2fc5fb4df056c18 (patch)
treec075233cd32c6ec0205af77db475836c0fba60e9 /src/third_party/wiredtiger/test/suite/test_assert03.py
parentdd094ce1bc1fb424ccc6dd71939e5c7a30159e2e (diff)
downloadmongo-39998ac6928c4e7f3acd2f7ee2fc5fb4df056c18.tar.gz
Import wiredtiger: 0cd3d5bbd8a5c8779f1129c6754b4463403e788f from branch mongodb-3.6
ref: 6f561957cb..0cd3d5bbd8 for: 3.5.14 WT-3200 LSM bug: Failed lookup in bloom filter. WT-3435 Lookaside eviction should be able to save unstable updates WT-3453 Enhance lookaside table test coverage in Python suite WT-3559 Detect when a checkpoint races with metadata changes WT-3579 Enhance support for running wtperf workloads with workgen WT-3582 Cache stuck full of internal pages WT-3593 Add an API to enforce consistent use of timestamps (#3667) WT-3599 reconciliation calculates block matching checksums too frequently. WT-3600 timestamp API lets you set timestamps with invalid characters WT-3612 Improve documentation of durability with backup cursors WT-3613 test/format cache full with LSM WT-3618 WT remove solaris from evergreen builds WT-3620 POSIX thread attribute structures must be destroyed WT-3621 Add test for full backups with concurrent table creation WT-3622 Allow upper case hexadecimal timestamps WT-3627 test_txn14.test_txn14.test_log_flush timeout WT-3631 Convert timestamps to integers in Python tests before comparing WT-3636 Account for page image sizes in cache consistently WT-3638 format failure, update list without complete visible record WT-3639 Test/format tried to drop named checkpoints during a hot backup WT-3641 Track maximum timestamp used in each btree WT-3642 Avoid lookaside reads for dead trees
Diffstat (limited to 'src/third_party/wiredtiger/test/suite/test_assert03.py')
-rw-r--r--src/third_party/wiredtiger/test/suite/test_assert03.py86
1 files changed, 86 insertions, 0 deletions
diff --git a/src/third_party/wiredtiger/test/suite/test_assert03.py b/src/third_party/wiredtiger/test/suite/test_assert03.py
new file mode 100644
index 00000000000..36d4936a82e
--- /dev/null
+++ b/src/third_party/wiredtiger/test/suite/test_assert03.py
@@ -0,0 +1,86 @@
+#!/usr/bin/env python
+#
+# Public Domain 2014-2017 MongoDB, Inc.
+# Public Domain 2008-2014 WiredTiger, Inc.
+#
+# This is free and unencumbered software released into the public domain.
+#
+# Anyone is free to copy, modify, publish, use, compile, sell, or
+# distribute this software, either in source code form or as a compiled
+# binary, for any purpose, commercial or non-commercial, and by any
+# means.
+#
+# In jurisdictions that recognize copyright laws, the author or authors
+# of this software dedicate any and all copyright interest in the
+# software to the public domain. We make this dedication for the benefit
+# of the public at large and to the detriment of our heirs and
+# successors. We intend this dedication to be an overt act of
+# relinquishment in perpetuity of all present and future rights to this
+# software under copyright law.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+# OTHER DEALINGS IN THE SOFTWARE.
+#
+# test_assert03.py
+# Test changing assert setting via alter.
+#
+
+from suite_subprocess import suite_subprocess
+import wiredtiger, wttest
+
+class test_assert03(wttest.WiredTigerTestCase, suite_subprocess):
+ conn_config = 'log=(enabled)'
+ base_uri = 'file:assert03.wt'
+ cfg = 'key_format=S,value_format=S'
+ always = 'assert=(commit_timestamp=always)'
+ never = 'assert=(commit_timestamp=never)'
+ none = 'assert=(commit_timestamp=none)'
+
+ def test_assert03(self):
+
+ #if not wiredtiger.timestamp_build() or not wiredtiger.diagnostic_build():
+ # self.skipTest('requires a timestamp and diagnostic build')
+ if not wiredtiger.timestamp_build():
+ self.skipTest('requires a timestamp build')
+
+ # Create a data item at the default setting
+ self.session.create(self.base_uri, self.cfg)
+ c = self.session.open_cursor(self.base_uri)
+ self.session.begin_transaction()
+ c['key0'] = 'value0'
+ self.session.commit_transaction()
+ c.close()
+
+ # Now rotate through the alter settings and verify the data.
+ # The always setting should fail.
+ self.session.alter(self.base_uri, self.always)
+ c = self.session.open_cursor(self.base_uri)
+ self.session.begin_transaction()
+ c['key1'] = 'value1'
+ msg = "/none set on this transaction/"
+ self.assertRaisesWithMessage(wiredtiger.WiredTigerError,
+ lambda:self.assertEquals(self.session.commit_transaction(), 0), msg)
+ c.close()
+
+ # The never and none settings should succeed.
+ self.session.alter(self.base_uri, self.never)
+ c = self.session.open_cursor(self.base_uri)
+ self.session.begin_transaction()
+ c['key2'] = 'value2'
+ self.session.commit_transaction()
+ c.close()
+
+ self.session.alter(self.base_uri, self.none)
+ c = self.session.open_cursor(self.base_uri)
+ self.session.begin_transaction()
+ c['key3'] = 'value3'
+ self.session.commit_transaction()
+ c.close()
+
+if __name__ == '__main__':
+ wttest.run()