[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