Kaydet (Commit) afed3a45 authored tarafından Gregory P. Smith's avatar Gregory P. Smith

cleanup test_dbtables to use mkdtemp. cleanup dbtables to pass txn as a

keyword argument whenever possible to avoid bugs and confusion.  (dbtables.py
line 447 self.db.get using txn as a non-keyword was an actual bug due to this)
üst d97110dd
...@@ -20,8 +20,9 @@ _cvsid = '$Id$' ...@@ -20,8 +20,9 @@ _cvsid = '$Id$'
import re import re
import sys import sys
import copy import copy
import xdrlib
import random import random
import struct
import base64
from types import ListType, StringType from types import ListType, StringType
import cPickle as pickle import cPickle as pickle
...@@ -255,7 +256,7 @@ class bsdTableDB : ...@@ -255,7 +256,7 @@ class bsdTableDB :
flags=DB_RMW)) flags=DB_RMW))
tablelist.append(table) tablelist.append(table)
# delete 1st, in case we opened with DB_DUP # delete 1st, in case we opened with DB_DUP
self.db.delete(_table_names_key, txn) self.db.delete(_table_names_key, txn=txn)
self.db.put(_table_names_key, pickle.dumps(tablelist, 1), txn=txn) self.db.put(_table_names_key, pickle.dumps(tablelist, 1), txn=txn)
txn.commit() txn.commit()
...@@ -329,7 +330,7 @@ class bsdTableDB : ...@@ -329,7 +330,7 @@ class bsdTableDB :
# store the table's new extended column list # store the table's new extended column list
if newcolumnlist != oldcolumnlist : if newcolumnlist != oldcolumnlist :
# delete the old one first since we opened with DB_DUP # delete the old one first since we opened with DB_DUP
self.db.delete(columnlist_key, txn) self.db.delete(columnlist_key, txn=txn)
self.db.put(columnlist_key, self.db.put(columnlist_key,
pickle.dumps(newcolumnlist, 1), pickle.dumps(newcolumnlist, 1),
txn=txn) txn=txn)
...@@ -362,10 +363,9 @@ class bsdTableDB : ...@@ -362,10 +363,9 @@ class bsdTableDB :
# Generate a random 64-bit row ID string # Generate a random 64-bit row ID string
# (note: this code has <64 bits of randomness # (note: this code has <64 bits of randomness
# but it's plenty for our database id needs!) # but it's plenty for our database id needs!)
p = xdrlib.Packer() newid = struct.pack('ll',
p.pack_int(int(random.random()*2147483647)) random.randint(0, 2147483647),
p.pack_int(int(random.random()*2147483647)) random.randint(0, 2147483647))
newid = p.get_buffer()
# Guarantee uniqueness by adding this key to the database # Guarantee uniqueness by adding this key to the database
try: try:
...@@ -444,10 +444,10 @@ class bsdTableDB : ...@@ -444,10 +444,10 @@ class bsdTableDB :
try: try:
dataitem = self.db.get( dataitem = self.db.get(
_data_key(table, column, rowid), _data_key(table, column, rowid),
txn) txn=txn)
self.db.delete( self.db.delete(
_data_key(table, column, rowid), _data_key(table, column, rowid),
txn) txn=txn)
except DBNotFoundError: except DBNotFoundError:
# XXXXXXX row key somehow didn't exist, assume no # XXXXXXX row key somehow didn't exist, assume no
# error # error
...@@ -490,13 +490,13 @@ class bsdTableDB : ...@@ -490,13 +490,13 @@ class bsdTableDB :
# delete the data key # delete the data key
try: try:
self.db.delete(_data_key(table, column, rowid), self.db.delete(_data_key(table, column, rowid),
txn) txn=txn)
except DBNotFoundError: except DBNotFoundError:
# XXXXXXX column may not exist, assume no error # XXXXXXX column may not exist, assume no error
pass pass
try: try:
self.db.delete(_rowid_key(table, rowid), txn) self.db.delete(_rowid_key(table, rowid), txn=txn)
except DBNotFoundError: except DBNotFoundError:
# XXXXXXX row key somehow didn't exist, assume no error # XXXXXXX row key somehow didn't exist, assume no error
pass pass
...@@ -652,7 +652,7 @@ class bsdTableDB : ...@@ -652,7 +652,7 @@ class bsdTableDB :
txn = self.env.txn_begin() txn = self.env.txn_begin()
# delete the column list # delete the column list
self.db.delete(_columns_key(table), txn) self.db.delete(_columns_key(table), txn=txn)
cur = self.db.cursor(txn) cur = self.db.cursor(txn)
...@@ -691,7 +691,7 @@ class bsdTableDB : ...@@ -691,7 +691,7 @@ class bsdTableDB :
# hmm, it wasn't there, oh well, that's what we want. # hmm, it wasn't there, oh well, that's what we want.
pass pass
# delete 1st, incase we opened with DB_DUP # delete 1st, incase we opened with DB_DUP
self.db.delete(_table_names_key, txn) self.db.delete(_table_names_key, txn=txn)
self.db.put(_table_names_key, pickle.dumps(tablelist, 1), txn=txn) self.db.put(_table_names_key, pickle.dumps(tablelist, 1), txn=txn)
txn.commit() txn.commit()
......
...@@ -21,6 +21,8 @@ ...@@ -21,6 +21,8 @@
# $Id$ # $Id$
import sys, os, re import sys, os, re
import tempfile
import shutil
try: try:
import cPickle import cPickle
pickle = cPickle pickle = cPickle
...@@ -47,8 +49,8 @@ class TableDBTestCase(unittest.TestCase): ...@@ -47,8 +49,8 @@ class TableDBTestCase(unittest.TestCase):
db_name = 'test-table.db' db_name = 'test-table.db'
def setUp(self): def setUp(self):
homeDir = os.path.join(tempfile.gettempdir(), 'db_home') homeDir = tempfile.mkdtemp()
self.homeDir = homeDir self.testHomeDir = homeDir
try: os.mkdir(homeDir) try: os.mkdir(homeDir)
except os.error: pass except os.error: pass
self.tdb = dbtables.bsdTableDB( self.tdb = dbtables.bsdTableDB(
...@@ -56,10 +58,7 @@ class TableDBTestCase(unittest.TestCase): ...@@ -56,10 +58,7 @@ class TableDBTestCase(unittest.TestCase):
def tearDown(self): def tearDown(self):
self.tdb.close() self.tdb.close()
import glob shutil.rmtree(self.testHomeDir)
files = glob.glob(os.path.join(self.homeDir, '*'))
for file in files:
os.remove(file)
def test01(self): def test01(self):
tabname = "test01" tabname = "test01"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment