14
# For Pythons w/distutils pybsddb
21
from bsddb3 import test_support
23
from test import test_support
25
from test_all import verbose, get_new_environment_path, get_new_database_path
13
from test_all import db, test_support, verbose, get_new_environment_path, \
101
90
def populateDB(self, _txn=None):
104
for x in range(self._numKeys/2):
93
for x in range(self._numKeys//2):
105
94
key = '%04d' % (self._numKeys - x) # insert keys in reverse order
106
95
data = self.makeData(key)
107
96
d.put(key, data, _txn)
109
98
d.put('empty value', '', _txn)
111
for x in range(self._numKeys/2-1):
100
for x in range(self._numKeys//2-1):
112
101
key = '%04d' % x # and now some in forward order
113
102
data = self.makeData(key)
114
103
d.put(key, data, _txn)
152
141
except db.DBNotFoundError, val:
153
self.assertEqual(val[0], db.DB_NOTFOUND)
143
if sys.version_info[0] < 3 :
144
self.assertEqual(val[0], db.DB_NOTFOUND)
146
self.assertEqual(val.args[0], db.DB_NOTFOUND)
154
147
if verbose: print val
156
149
self.fail("expected exception")
170
163
d.put('abcd', 'this should fail', flags=db.DB_NOOVERWRITE)
171
164
except db.DBKeyExistError, val:
172
self.assertEqual(val[0], db.DB_KEYEXIST)
166
if sys.version_info[0] < 3 :
167
self.assertEqual(val[0], db.DB_KEYEXIST)
169
self.assertEqual(val.args[0], db.DB_KEYEXIST)
173
170
if verbose: print val
175
172
self.fail("expected exception")
256
253
self.assertEqual(d['new record'], 'a replacement record')
258
self.assertEqual(d.has_key('0001'), 1)
259
self.assertEqual(d.has_key('spam'), 0)
255
# We check also the positional parameter
256
self.assertEqual(d.has_key('0001', None), 1)
257
# We check also the keyword parameter
258
self.assertEqual(d.has_key('spam', txn=None), 0)
261
260
items = d.items()
262
261
self.assertEqual(len(items), self._numKeys+1)
303
302
except db.DBNotFoundError, val:
304
303
if get_raises_error:
305
self.assertEqual(val[0], db.DB_NOTFOUND)
305
if sys.version_info[0] < 3 :
306
self.assertEqual(val[0], db.DB_NOTFOUND)
308
self.assertEqual(val.args[0], db.DB_NOTFOUND)
306
309
if verbose: print val
324
327
except db.DBNotFoundError, val:
325
328
if get_raises_error:
326
self.assertEqual(val[0], db.DB_NOTFOUND)
330
if sys.version_info[0] < 3 :
331
self.assertEqual(val[0], db.DB_NOTFOUND)
333
self.assertEqual(val.args[0], db.DB_NOTFOUND)
327
334
if verbose: print val
347
354
n = c.set('bad key')
348
355
except db.DBNotFoundError, val:
349
self.assertEqual(val[0], db.DB_NOTFOUND)
357
if sys.version_info[0] < 3 :
358
self.assertEqual(val[0], db.DB_NOTFOUND)
360
self.assertEqual(val.args[0], db.DB_NOTFOUND)
350
361
if verbose: print val
352
363
if set_raises_error:
361
372
n = c.get_both('0404', 'bad data')
362
373
except db.DBNotFoundError, val:
363
self.assertEqual(val[0], db.DB_NOTFOUND)
375
if sys.version_info[0] < 3 :
376
self.assertEqual(val[0], db.DB_NOTFOUND)
378
self.assertEqual(val.args[0], db.DB_NOTFOUND)
364
379
if verbose: print val
366
381
if get_raises_error:
389
404
rec = c.current()
390
405
except db.DBKeyEmptyError, val:
391
406
if get_raises_error:
392
self.assertEqual(val[0], db.DB_KEYEMPTY)
408
if sys.version_info[0] < 3 :
409
self.assertEqual(val[0], db.DB_KEYEMPTY)
411
self.assertEqual(val.args[0], db.DB_KEYEMPTY)
393
412
if verbose: print val
395
414
self.fail("unexpected DBKeyEmptyError")
434
453
# a bug may cause a NULL pointer dereference...
435
454
apply(getattr(c, method), args)
436
455
except db.DBError, val:
437
self.assertEqual(val[0], 0)
457
if sys.version_info[0] < 3 :
458
self.assertEqual(val[0], 0)
460
self.assertEqual(val.args[0], 0)
438
461
if verbose: print val
440
463
self.fail("no exception raised when using a buggy cursor's"
681
700
except db.DBIncompleteError:
684
if db.version() >= (4,0):
685
statDict = self.env.log_stat(0);
686
self.assert_(statDict.has_key('magic'))
687
self.assert_(statDict.has_key('version'))
688
self.assert_(statDict.has_key('cur_file'))
689
self.assert_(statDict.has_key('region_nowait'))
703
statDict = self.env.log_stat(0);
704
self.assert_(statDict.has_key('magic'))
705
self.assert_(statDict.has_key('version'))
706
self.assert_(statDict.has_key('cur_file'))
707
self.assert_(statDict.has_key('region_nowait'))
691
709
# must have at least one log file present:
692
710
logs = self.env.log_archive(db.DB_ARCH_ABS | db.DB_ARCH_LOG)
812
826
rec = c.set("dup1")
813
827
self.assertEqual(rec, ('dup1', 'The'))
816
self.assertEqual(next, ('dup1', 'quick'))
830
self.assertEqual(next_reg, ('dup1', 'quick'))
818
832
rec = c.set("dup1")
819
833
count = c.count()
956
970
envflags = db.DB_THREAD | db.DB_INIT_MPOOL | db.DB_INIT_LOCK
973
class PrivateObject(unittest.TestCase) :
975
if sys.version_info[:3] < (2, 4, 0):
976
def assertTrue(self, expr, msg=None):
977
self.failUnless(expr,msg=msg)
982
def test01_DefaultIsNone(self) :
983
self.assertEqual(self.obj.get_private(), None)
985
def test02_assignment(self) :
986
a = "example of private object"
987
self.obj.set_private(a)
988
b = self.obj.get_private()
989
self.assertTrue(a is b) # Object identity
991
def test03_leak_assignment(self) :
993
a = "example of private object"
994
refcount = sys.getrefcount(a)
995
self.obj.set_private(a)
996
self.assertEqual(refcount+1, sys.getrefcount(a))
997
self.obj.set_private(None)
998
self.assertEqual(refcount, sys.getrefcount(a))
1000
def test04_leak_GC(self) :
1002
a = "example of private object"
1003
refcount = sys.getrefcount(a)
1004
self.obj.set_private(a)
1006
self.assertEqual(refcount, sys.getrefcount(a))
1008
class DBEnvPrivateObject(PrivateObject) :
1010
self.obj = db.DBEnv()
1012
class DBPrivateObject(PrivateObject) :
1016
class CrashAndBurn(unittest.TestCase) :
1017
def test01_OpenCrash(self) :
1018
# See http://bugs.python.org/issue3307
1019
self.assertRaises(db.DBInvalidArgError, db.DB, None, 65535)
959
1022
#----------------------------------------------------------------------
960
1023
#----------------------------------------------------------------------
979
1042
suite.addTest(unittest.makeSuite(HashDUPWithThreadTestCase))
980
1043
suite.addTest(unittest.makeSuite(BTreeMultiDBTestCase))
981
1044
suite.addTest(unittest.makeSuite(HashMultiDBTestCase))
1045
suite.addTest(unittest.makeSuite(DBEnvPrivateObject))
1046
suite.addTest(unittest.makeSuite(DBPrivateObject))
1047
#suite.addTest(unittest.makeSuite(CrashAndBurn))