mirror of https://github.com/python/cpython
Add the bsddb.db.DBEnv.lock_id_free method.
Improve test_lock's tempdir creation and cleanup.
This commit is contained in:
parent
ec10a4a402
commit
ac11e02143
|
@ -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 @@ except ImportError:
|
|||
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 @@ 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):
|
||||
|
@ -124,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)
|
||||
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
|
|
|
@ -830,6 +830,8 @@ Extension Modules
|
|||
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
|
||||
|
|
|
@ -4250,6 +4250,24 @@ DBEnv_lock_id(DBEnvObject* self, PyObject* args)
|
|||
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 @@ static PyMethodDef DBEnv_methods[] = {
|
|||
{"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},
|
||||
|
|
Loading…
Reference in New Issue