summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
Diffstat (limited to 'Lib')
-rw-r--r--Lib/bsddb/test/test_lock.py15
-rw-r--r--Lib/bsddb/test/test_misc.py28
2 files changed, 37 insertions, 6 deletions
diff --git a/Lib/bsddb/test/test_lock.py b/Lib/bsddb/test/test_lock.py
index fcab283..bbd88bd 100644
--- a/Lib/bsddb/test/test_lock.py
+++ b/Lib/bsddb/test/test_lock.py
@@ -2,11 +2,12 @@
TestCases for testing the locking sub-system.
"""
+import os
+from pprint import pprint
import shutil
-import sys, os
+import sys
import tempfile
import time
-from pprint import pprint
try:
from threading import Thread, currentThread
@@ -31,10 +32,10 @@ except ImportError:
class LockingTestCase(unittest.TestCase):
def setUp(self):
- self.homeDir = tempfile.mkdtemp()
+ self.homeDir = tempfile.mkdtemp('.test_lock')
self.env = db.DBEnv()
self.env.open(self.homeDir, db.DB_THREAD | db.DB_INIT_MPOOL |
- db.DB_INIT_LOCK | db.DB_CREATE)
+ db.DB_INIT_LOCK | db.DB_CREATE)
def tearDown(self):
@@ -57,8 +58,8 @@ class LockingTestCase(unittest.TestCase):
self.env.lock_put(lock)
if verbose:
print("Released lock: %s" % lock)
-
-
+ if db.version() >= (4,0):
+ self.env.lock_id_free(anID)
def test02_threaded(self):
@@ -119,6 +120,8 @@ class LockingTestCase(unittest.TestCase):
self.env.lock_put(lock)
if verbose:
print("%s: Released %s lock: %s" % (name, lt, lock))
+ if db.version() >= (4,0):
+ self.env.lock_id_free(anID)
#----------------------------------------------------------------------
diff --git a/Lib/bsddb/test/test_misc.py b/Lib/bsddb/test/test_misc.py
index b3248ce..b7a6710 100644
--- a/Lib/bsddb/test/test_misc.py
+++ b/Lib/bsddb/test/test_misc.py
@@ -85,6 +85,34 @@ class MiscTestCase(unittest.TestCase):
db1.close()
os.unlink(self.filename)
+ def test_DB_set_flags_persists(self):
+ if db.version() < (4,2):
+ # The get_flags API required for this to work is only available
+ # in BerkeleyDB >= 4.2
+ return
+ try:
+ db1 = db.DB()
+ db1.set_flags(db.DB_DUPSORT)
+ db1.open(self.filename, db.DB_HASH, db.DB_CREATE)
+ db1[b'a'] = b'eh'
+ db1[b'a'] = b'A'
+ self.assertEqual([(b'a', b'A')], db1.items())
+ db1.put(b'a', b'Aa')
+ self.assertEqual([(b'a', b'A'), (b'a', b'Aa')], db1.items())
+ db1.close()
+ db1 = db.DB()
+ # no set_flags call, we're testing that it reads and obeys
+ # the flags on open.
+ db1.open(self.filename, db.DB_HASH)
+ self.assertEqual([(b'a', b'A'), (b'a', b'Aa')], db1.items())
+ # if it read the flags right this will replace all values
+ # for key b'a' instead of adding a new one. (as a dict should)
+ db1[b'a'] = b'new A'
+ self.assertEqual([(b'a', b'new A')], db1.items())
+ finally:
+ db1.close()
+ os.unlink(self.filename)
+
#----------------------------------------------------------------------