1818import unittest
1919from test .test_support import verbose
2020
21- from bsddb import db
21+ from bsddb import db , dbutils
2222
2323
2424#----------------------------------------------------------------------
@@ -31,6 +31,9 @@ class BaseThreadedTestCase(unittest.TestCase):
3131
3232
3333 def setUp (self ):
34+ if verbose :
35+ dbutils ._deadlock_VerboseFile = sys .stdout
36+
3437 homeDir = os .path .join (os .path .dirname (sys .argv [0 ]), 'db_home' )
3538 self .homeDir = homeDir
3639 try : os .mkdir (homeDir )
@@ -109,7 +112,7 @@ def writerThread(self, d, howMany, writerNum):
109112
110113 for x in range (start , stop ):
111114 key = '%04d' % x
112- d .put ( key , self .makeData (key ))
115+ dbutils . DeadlockWrap ( d .put , key , self .makeData (key ), max_retries = 12 )
113116 if verbose and x % 100 == 0 :
114117 print "%s: records %d - %d finished" % (name , start , x )
115118
@@ -212,7 +215,7 @@ def writerThread(self, d, howMany, writerNum):
212215 # create a bunch of records
213216 for x in xrange (start , stop ):
214217 key = '%04d' % x
215- d .put ( key , self .makeData (key ))
218+ dbutils . DeadlockWrap ( d .put , key , self .makeData (key ), max_retries = 12 )
216219
217220 if verbose and x % 100 == 0 :
218221 print "%s: records %d - %d finished" % (name , start , x )
@@ -221,25 +224,25 @@ def writerThread(self, d, howMany, writerNum):
221224 if random () <= 0.05 :
222225 for y in xrange (start , x ):
223226 key = '%04d' % x
224- data = d .get ( key )
227+ data = dbutils . DeadlockWrap ( d .get , key , max_retries = 12 )
225228 assert data == self .makeData (key )
226229
227230 # flush them
228231 try :
229- d .sync ( )
232+ dbutils . DeadlockWrap ( d .sync , max_retries = 12 )
230233 except db .DBIncompleteError , val :
231234 if verbose :
232235 print "could not complete sync()..."
233236
234237 # read them back, deleting a few
235238 for x in xrange (start , stop ):
236239 key = '%04d' % x
237- data = d .get ( key )
240+ data = dbutils . DeadlockWrap ( d .get , key , max_retries = 12 )
238241 if verbose and x % 100 == 0 :
239242 print "%s: fetched record (%s, %s)" % (name , key , data )
240- assert data == self .makeData (key )
243+ assert data == self .makeData (key ), ( key , data , self . makeData ( key ))
241244 if random () <= 0.10 :
242- d .delete ( key )
245+ dbutils . DeadlockWrap ( d .delete , key , max_retries = 12 )
243246 if verbose :
244247 print "%s: deleted record %s" % (name , key )
245248
@@ -273,7 +276,7 @@ class BTreeSimpleThreaded(SimpleThreadedBase):
273276
274277
275278class HashSimpleThreaded (SimpleThreadedBase ):
276- dbtype = db .DB_BTREE
279+ dbtype = db .DB_HASH
277280
278281
279282#----------------------------------------------------------------------
0 commit comments