[Python-checkins] r58851 - in python/trunk: Lib/bsddb/test/test_lock.py Misc/NEWS Modules/_bsddb.c

gregory.p.smith python-checkins at python.org
Mon Nov 5 03:56:32 CET 2007


Author: gregory.p.smith
Date: Mon Nov  5 03:56:31 2007
New Revision: 58851

Modified:
   python/trunk/Lib/bsddb/test/test_lock.py
   python/trunk/Misc/NEWS
   python/trunk/Modules/_bsddb.c
Log:
Add the bsddb.db.DBEnv.lock_id_free method.
Improve test_lock's tempdir creation and cleanup.


Modified: python/trunk/Lib/bsddb/test/test_lock.py
==============================================================================
--- python/trunk/Lib/bsddb/test/test_lock.py	(original)
+++ python/trunk/Lib/bsddb/test/test_lock.py	Mon Nov  5 03:56:31 2007
@@ -2,10 +2,12 @@
 TestCases for testing the locking sub-system.
 """
 
-import sys, os, string
+import os
+from pprint import pprint
+import shutil
+import sys
 import tempfile
 import time
-from pprint import pprint
 
 try:
     from threading import Thread, currentThread
@@ -30,21 +32,15 @@
 class LockingTestCase(unittest.TestCase):
 
     def setUp(self):
-        homeDir = os.path.join(tempfile.gettempdir(), 'db_home')
-        self.homeDir = homeDir
-        try: os.mkdir(homeDir)
-        except os.error: pass
+        self.homeDir = tempfile.mkdtemp('.test_lock')
         self.env = db.DBEnv()
-        self.env.open(homeDir, db.DB_THREAD | db.DB_INIT_MPOOL |
-                      db.DB_INIT_LOCK | db.DB_CREATE)
+        self.env.open(self.homeDir, db.DB_THREAD | db.DB_INIT_MPOOL |
+                                    db.DB_INIT_LOCK | db.DB_CREATE)
 
 
     def tearDown(self):
         self.env.close()
-        import glob
-        files = glob.glob(os.path.join(self.homeDir, '*'))
-        for file in files:
-            os.remove(file)
+        shutil.rmtree(self.homeDir)
 
 
     def test01_simple(self):
@@ -62,8 +58,8 @@
         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):
@@ -124,6 +120,8 @@
         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)
 
 
 #----------------------------------------------------------------------

Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Mon Nov  5 03:56:31 2007
@@ -830,6 +830,8 @@
   DB users should use DB.put(k, v) when they want to store duplicates; not
   DB[k] = v.
 
+- Add the bsddb.db.DBEnv.lock_id_free method.
+
 - Bug #1686475: Support stat'ing open files on Windows again.
 
 - Patch #1185447: binascii.b2a_qp() now correctly quotes binary characters

Modified: python/trunk/Modules/_bsddb.c
==============================================================================
--- python/trunk/Modules/_bsddb.c	(original)
+++ python/trunk/Modules/_bsddb.c	Mon Nov  5 03:56:31 2007
@@ -4250,6 +4250,24 @@
     return PyInt_FromLong((long)theID);
 }
 
+#if (DBVER >= 40)
+static PyObject*
+DBEnv_lock_id_free(DBEnvObject* self, PyObject* args)
+{
+    int err;
+    u_int32_t theID;
+
+    if (!PyArg_ParseTuple(args, "I:lock_id_free", &theID))
+        return NULL;
+
+    CHECK_ENV_NOT_CLOSED(self);
+    MYDB_BEGIN_ALLOW_THREADS;
+    err = self->db_env->lock_id_free(self->db_env, theID);
+    MYDB_END_ALLOW_THREADS;
+    RETURN_IF_ERR();
+    RETURN_NONE();
+}
+#endif
 
 static PyObject*
 DBEnv_lock_put(DBEnvObject* self, PyObject* args)
@@ -5125,6 +5143,9 @@
     {"lock_detect",     (PyCFunction)DBEnv_lock_detect,      METH_VARARGS},
     {"lock_get",        (PyCFunction)DBEnv_lock_get,         METH_VARARGS},
     {"lock_id",         (PyCFunction)DBEnv_lock_id,          METH_VARARGS},
+#if (DBVER >= 40)
+    {"lock_id_free",    (PyCFunction)DBEnv_lock_id_free,     METH_VARARGS},
+#endif
     {"lock_put",        (PyCFunction)DBEnv_lock_put,         METH_VARARGS},
     {"lock_stat",       (PyCFunction)DBEnv_lock_stat,        METH_VARARGS},
     {"log_archive",     (PyCFunction)DBEnv_log_archive,      METH_VARARGS},


More information about the Python-checkins mailing list