Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a21bdea

Browse files
committed
Cleanups, and conversion of assert to assertEqual()
1 parent 71731d7 commit a21bdea

1 file changed

Lines changed: 69 additions & 71 deletions

File tree

Lib/bsddb/test/test_thread.py

Lines changed: 69 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,31 @@
1-
"""
2-
TestCases for multi-threaded access to a DB.
1+
"""TestCases for multi-threaded access to a DB.
32
"""
43

5-
import sys, os, string
6-
import tempfile
4+
import os
5+
import sys
76
import time
7+
import errno
8+
import shutil
9+
import tempfile
810
from pprint import pprint
911
from whrandom import random
1012

13+
try:
14+
True, False
15+
except NameError:
16+
True = 1
17+
False = 0
18+
19+
DASH = '-'
20+
1121
try:
1222
from threading import Thread, currentThread
13-
have_threads = 1
23+
have_threads = True
1424
except ImportError:
15-
have_threads = 0
16-
25+
have_threads = False
1726

1827
import unittest
1928
from test_all import verbose
20-
2129
from bsddb import db, dbutils
2230

2331
#----------------------------------------------------------------------
@@ -28,15 +36,16 @@ class BaseThreadedTestCase(unittest.TestCase):
2836
dbsetflags = 0
2937
envflags = 0
3038

31-
3239
def setUp(self):
3340
if verbose:
3441
dbutils._deadlock_VerboseFile = sys.stdout
3542

3643
homeDir = os.path.join(os.path.dirname(sys.argv[0]), 'db_home')
3744
self.homeDir = homeDir
38-
try: os.mkdir(homeDir)
39-
except os.error: pass
45+
try:
46+
os.mkdir(homeDir)
47+
except OSError, e:
48+
if e.errno <> errno.EEXIST: raise
4049
self.env = db.DBEnv()
4150
self.setEnvOpts()
4251
self.env.open(homeDir, self.envflags | db.DB_CREATE)
@@ -47,22 +56,16 @@ def setUp(self):
4756
self.d.set_flags(self.dbsetflags)
4857
self.d.open(self.filename, self.dbtype, self.dbopenflags|db.DB_CREATE)
4958

50-
5159
def tearDown(self):
5260
self.d.close()
5361
self.env.close()
54-
import glob
55-
files = glob.glob(os.path.join(self.homeDir, '*'))
56-
for file in files:
57-
os.remove(file)
58-
62+
shutil.rmtree(self.homeDir)
5963

6064
def setEnvOpts(self):
6165
pass
6266

63-
6467
def makeData(self, key):
65-
return string.join([key] * 5, '-')
68+
return DASH.join([key] * 5)
6669

6770

6871
#----------------------------------------------------------------------
@@ -75,7 +78,6 @@ class ConcurrentDataStoreBase(BaseThreadedTestCase):
7578
writers = 0
7679
records = 1000
7780

78-
7981
def test01_1WriterMultiReaders(self):
8082
if verbose:
8183
print '\n', '-=' * 30
@@ -102,11 +104,11 @@ def test01_1WriterMultiReaders(self):
102104
for t in threads:
103105
t.join()
104106

105-
106107
def writerThread(self, d, howMany, writerNum):
107108
#time.sleep(0.01 * writerNum + 0.01)
108109
name = currentThread().getName()
109-
start, stop = howMany * writerNum, howMany * (writerNum + 1) - 1
110+
start = howMany * writerNum
111+
stop = howMany * (writerNum + 1) - 1
110112
if verbose:
111113
print "%s: creating records %d - %d" % (name, start, stop)
112114

@@ -117,7 +119,8 @@ def writerThread(self, d, howMany, writerNum):
117119
if verbose and x % 100 == 0:
118120
print "%s: records %d - %d finished" % (name, start, x)
119121

120-
if verbose: print "%s: finished creating records" % name
122+
if verbose:
123+
print "%s: finished creating records" % name
121124

122125
## # Each write-cursor will be exclusive, the only one that can update the DB...
123126
## if verbose: print "%s: deleting a few records" % name
@@ -130,8 +133,8 @@ def writerThread(self, d, howMany, writerNum):
130133
## c.delete()
131134

132135
## c.close()
133-
if verbose: print "%s: thread finished" % name
134-
136+
if verbose:
137+
print "%s: thread finished" % name
135138

136139
def readerThread(self, d, readerNum):
137140
time.sleep(0.01 * readerNum)
@@ -142,16 +145,17 @@ def readerThread(self, d, readerNum):
142145
count = 0
143146
rec = c.first()
144147
while rec:
145-
count = count + 1
148+
count += 1
146149
key, data = rec
147-
assert self.makeData(key) == data
150+
self.assertEqual(self.makeData(key), data)
148151
rec = c.next()
149-
if verbose: print "%s: found %d records" % (name, count)
152+
if verbose:
153+
print "%s: found %d records" % (name, count)
150154
c.close()
151155
time.sleep(0.05)
152156

153-
if verbose: print "%s: thread finished" % name
154-
157+
if verbose:
158+
print "%s: thread finished" % name
155159

156160

157161
class BTreeConcurrentDataStore(ConcurrentDataStoreBase):
@@ -167,6 +171,7 @@ class HashConcurrentDataStore(ConcurrentDataStoreBase):
167171
readers = 10
168172
records = 1000
169173

174+
170175
#----------------------------------------------------------------------
171176

172177
class SimpleThreadedBase(BaseThreadedTestCase):
@@ -176,11 +181,9 @@ class SimpleThreadedBase(BaseThreadedTestCase):
176181
writers = 3
177182
records = 1000
178183

179-
180184
def setEnvOpts(self):
181185
self.env.set_lk_detect(db.DB_LOCK_DEFAULT)
182186

183-
184187
def test02_SimpleLocks(self):
185188
if verbose:
186189
print '\n', '-=' * 30
@@ -205,11 +208,10 @@ def test02_SimpleLocks(self):
205208
for t in threads:
206209
t.join()
207210

208-
209-
210211
def writerThread(self, d, howMany, writerNum):
211212
name = currentThread().getName()
212-
start, stop = howMany * writerNum, howMany * (writerNum + 1) - 1
213+
start = howMany * writerNum
214+
stop = howMany * (writerNum + 1) - 1
213215
if verbose:
214216
print "%s: creating records %d - %d" % (name, start, stop)
215217

@@ -227,7 +229,7 @@ def writerThread(self, d, howMany, writerNum):
227229
for y in xrange(start, x):
228230
key = '%04d' % x
229231
data = dbutils.DeadlockWrap(d.get, key, max_retries=12)
230-
assert data == self.makeData(key)
232+
self.assertEqual(data, self.makeData(key))
231233

232234
# flush them
233235
try:
@@ -242,14 +244,14 @@ def writerThread(self, d, howMany, writerNum):
242244
data = dbutils.DeadlockWrap(d.get, key, max_retries=12)
243245
if verbose and x % 100 == 0:
244246
print "%s: fetched record (%s, %s)" % (name, key, data)
245-
assert data == self.makeData(key), (key, data, self.makeData(key))
247+
self.assertEqual(data, self.makeData(key))
246248
if random() <= 0.10:
247249
dbutils.DeadlockWrap(d.delete, key, max_retries=12)
248250
if verbose:
249251
print "%s: deleted record %s" % (name, key)
250252

251-
if verbose: print "%s: thread finished" % name
252-
253+
if verbose:
254+
print "%s: thread finished" % name
253255

254256
def readerThread(self, d, readerNum):
255257
time.sleep(0.01 * readerNum)
@@ -260,17 +262,17 @@ def readerThread(self, d, readerNum):
260262
count = 0
261263
rec = c.first()
262264
while rec:
263-
count = count + 1
265+
count += 1
264266
key, data = rec
265-
assert self.makeData(key) == data
267+
self.assertEqual(self.makeData(key), data)
266268
rec = c.next()
267-
if verbose: print "%s: found %d records" % (name, count)
269+
if verbose:
270+
print "%s: found %d records" % (name, count)
268271
c.close()
269272
time.sleep(0.05)
270273

271-
if verbose: print "%s: thread finished" % name
272-
273-
274+
if verbose:
275+
print "%s: thread finished" % name
274276

275277

276278
class BTreeSimpleThreaded(SimpleThreadedBase):
@@ -284,7 +286,6 @@ class HashSimpleThreaded(SimpleThreadedBase):
284286
#----------------------------------------------------------------------
285287

286288

287-
288289
class ThreadedTransactionsBase(BaseThreadedTestCase):
289290
dbopenflags = db.DB_THREAD | db.DB_AUTO_COMMIT
290291
envflags = (db.DB_THREAD |
@@ -296,15 +297,12 @@ class ThreadedTransactionsBase(BaseThreadedTestCase):
296297
readers = 0
297298
writers = 0
298299
records = 2000
299-
300300
txnFlag = 0
301301

302-
303302
def setEnvOpts(self):
304303
#self.env.set_lk_detect(db.DB_LOCK_DEFAULT)
305304
pass
306305

307-
308306
def test03_ThreadedTransactions(self):
309307
if verbose:
310308
print '\n', '-=' * 30
@@ -334,12 +332,11 @@ def test03_ThreadedTransactions(self):
334332
for t in threads:
335333
t.join()
336334

337-
self.doLockDetect = 0
335+
self.doLockDetect = False
338336
dt.join()
339337

340-
341338
def doWrite(self, d, name, start, stop):
342-
finished = 0
339+
finished = False
343340
while not finished:
344341
try:
345342
txn = self.env.txn_begin(None, self.txnFlag)
@@ -349,29 +346,30 @@ def doWrite(self, d, name, start, stop):
349346
if verbose and x % 100 == 0:
350347
print "%s: records %d - %d finished" % (name, start, x)
351348
txn.commit()
352-
finished = 1
349+
finished = True
353350
except (db.DBLockDeadlockError, db.DBLockNotGrantedError), val:
354351
if verbose:
355352
print "%s: Aborting transaction (%s)" % (name, val[1])
356353
txn.abort()
357354
time.sleep(0.05)
358355

359-
360-
361356
def writerThread(self, d, howMany, writerNum):
362357
name = currentThread().getName()
363-
start, stop = howMany * writerNum, howMany * (writerNum + 1) - 1
358+
start = howMany * writerNum
359+
stop = howMany * (writerNum + 1) - 1
364360
if verbose:
365361
print "%s: creating records %d - %d" % (name, start, stop)
366362

367363
step = 100
368364
for x in range(start, stop, step):
369365
self.doWrite(d, name, x, min(stop, x+step))
370366

371-
if verbose: print "%s: finished creating records" % name
372-
if verbose: print "%s: deleting a few records" % name
367+
if verbose:
368+
print "%s: finished creating records" % name
369+
if verbose:
370+
print "%s: deleting a few records" % name
373371

374-
finished = 0
372+
finished = False
375373
while not finished:
376374
try:
377375
recs = []
@@ -384,38 +382,39 @@ def writerThread(self, d, howMany, writerNum):
384382
d.delete(key, txn)
385383
recs.append(key)
386384
txn.commit()
387-
finished = 1
388-
if verbose: print "%s: deleted records %s" % (name, recs)
385+
finished = True
386+
if verbose:
387+
print "%s: deleted records %s" % (name, recs)
389388
except (db.DBLockDeadlockError, db.DBLockNotGrantedError), val:
390389
if verbose:
391390
print "%s: Aborting transaction (%s)" % (name, val[1])
392391
txn.abort()
393392
time.sleep(0.05)
394393

395-
if verbose: print "%s: thread finished" % name
396-
394+
if verbose:
395+
print "%s: thread finished" % name
397396

398397
def readerThread(self, d, readerNum):
399398
time.sleep(0.01 * readerNum + 0.05)
400399
name = currentThread().getName()
401400

402401
for loop in range(5):
403-
finished = 0
402+
finished = False
404403
while not finished:
405404
try:
406405
txn = self.env.txn_begin(None, self.txnFlag)
407406
c = d.cursor(txn)
408407
count = 0
409408
rec = c.first()
410409
while rec:
411-
count = count + 1
410+
count += 1
412411
key, data = rec
413-
assert self.makeData(key) == data
412+
self.assertEqual(self.makeData(key), data)
414413
rec = c.next()
415414
if verbose: print "%s: found %d records" % (name, count)
416415
c.close()
417416
txn.commit()
418-
finished = 1
417+
finished = True
419418
except (db.DBLockDeadlockError, db.DBLockNotGrantedError), val:
420419
if verbose:
421420
print "%s: Aborting transaction (%s)" % (name, val[1])
@@ -425,11 +424,11 @@ def readerThread(self, d, readerNum):
425424

426425
time.sleep(0.05)
427426

428-
if verbose: print "%s: thread finished" % name
429-
427+
if verbose:
428+
print "%s: thread finished" % name
430429

431430
def deadlockThread(self):
432-
self.doLockDetect = 1
431+
self.doLockDetect = True
433432
while self.doLockDetect:
434433
time.sleep(0.5)
435434
try:
@@ -442,7 +441,6 @@ def deadlockThread(self):
442441
pass
443442

444443

445-
446444
class BTreeThreadedTransactions(ThreadedTransactionsBase):
447445
dbtype = db.DB_BTREE
448446
writers = 3

0 commit comments

Comments
 (0)