import unittest import os, glob from test_all import db, test_support, get_new_environment_path, \ get_new_database_path #---------------------------------------------------------------------- class DB(unittest.TestCase): def setUp(self): self.path = get_new_database_path() self.db = db.DB() def tearDown(self): self.db.close() del self.db test_support.unlink(self.path) class DB_general(DB) : def test_get_open_flags(self) : self.db.open(self.path, dbtype=db.DB_HASH, flags = db.DB_CREATE) self.assertEqual(db.DB_CREATE, self.db.get_open_flags()) def test_get_open_flags2(self) : self.db.open(self.path, dbtype=db.DB_HASH, flags = db.DB_CREATE | db.DB_THREAD) self.assertEqual(db.DB_CREATE | db.DB_THREAD, self.db.get_open_flags()) def test_get_dbname_filename(self) : self.db.open(self.path, dbtype=db.DB_HASH, flags = db.DB_CREATE) self.assertEqual((self.path, None), self.db.get_dbname()) def test_get_dbname_filename_database(self) : name = "jcea-random-name" self.db.open(self.path, dbname=name, dbtype=db.DB_HASH, flags = db.DB_CREATE) self.assertEqual((self.path, name), self.db.get_dbname()) def test_bt_minkey(self) : for i in [17, 108, 1030] : self.db.set_bt_minkey(i) self.assertEqual(i, self.db.get_bt_minkey()) def test_lorder(self) : self.db.set_lorder(1234) self.assertEqual(1234, self.db.get_lorder()) self.db.set_lorder(4321) self.assertEqual(4321, self.db.get_lorder()) self.assertRaises(db.DBInvalidArgError, self.db.set_lorder, 9182) if db.version() >= (4, 6) : def test_priority(self) : flags = [db.DB_PRIORITY_VERY_LOW, db.DB_PRIORITY_LOW, db.DB_PRIORITY_DEFAULT, db.DB_PRIORITY_HIGH, db.DB_PRIORITY_VERY_HIGH] for flag in flags : self.db.set_priority(flag) self.assertEqual(flag, self.db.get_priority()) def test_get_transactional(self) : self.assertFalse(self.db.get_transactional()) self.db.open(self.path, dbtype=db.DB_HASH, flags = db.DB_CREATE) self.assertFalse(self.db.get_transactional()) class DB_hash(DB) : def test_h_ffactor(self) : for ffactor in [4, 16, 256] : self.db.set_h_ffactor(ffactor) self.assertEqual(ffactor, self.db.get_h_ffactor()) def test_h_nelem(self) : for nelem in [1, 2, 4] : nelem = nelem*1024*1024 # Millions self.db.set_h_nelem(nelem) self.assertEqual(nelem, self.db.get_h_nelem()) def test_pagesize(self) : for i in xrange(9, 17) : # From 512 to 65536 i = 1<<i self.db.set_pagesize(i) self.assertEqual(i, self.db.get_pagesize()) # The valid values goes from 512 to 65536 # Test 131072 bytes... self.assertRaises(db.DBInvalidArgError, self.db.set_pagesize, 1<<17) # Test 256 bytes... self.assertRaises(db.DBInvalidArgError, self.db.set_pagesize, 1<<8) class DB_txn(DB) : def setUp(self) : self.homeDir = get_new_environment_path() self.env = db.DBEnv() self.env.open(self.homeDir, db.DB_CREATE | db.DB_INIT_MPOOL | db.DB_INIT_LOG | db.DB_INIT_TXN) self.db = db.DB(self.env) def tearDown(self) : self.db.close() del self.db self.env.close() del self.env test_support.rmtree(self.homeDir) def test_flags(self) : self.db.set_flags(db.DB_CHKSUM) self.assertEqual(db.DB_CHKSUM, self.db.get_flags()) self.db.set_flags(db.DB_TXN_NOT_DURABLE) self.assertEqual(db.DB_TXN_NOT_DURABLE | db.DB_CHKSUM, self.db.get_flags()) def test_get_transactional(self) : self.assertFalse(self.db.get_transactional()) # DB_AUTO_COMMIT = Implicit transaction self.db.open("XXX", dbtype=db.DB_HASH, flags = db.DB_CREATE | db.DB_AUTO_COMMIT) self.assertTrue(self.db.get_transactional()) class DB_recno(DB) : def test_re_pad(self) : for i in [' ', '*'] : # Check chars self.db.set_re_pad(i) self.assertEqual(ord(i), self.db.get_re_pad()) for i in [97, 65] : # Check integers self.db.set_re_pad(i) self.assertEqual(i, self.db.get_re_pad()) def test_re_delim(self) : for i in [' ', '*'] : # Check chars self.db.set_re_delim(i) self.assertEqual(ord(i), self.db.get_re_delim()) for i in [97, 65] : # Check integers self.db.set_re_delim(i) self.assertEqual(i, self.db.get_re_delim()) def test_re_source(self) : for i in ["test", "test2", "test3"] : self.db.set_re_source(i) self.assertEqual(i, self.db.get_re_source()) class DB_queue(DB) : def test_re_len(self) : for i in [33, 65, 300, 2000] : self.db.set_re_len(i) self.assertEqual(i, self.db.get_re_len()) def test_q_extentsize(self) : for i in [1, 60, 100] : self.db.set_q_extentsize(i) self.assertEqual(i, self.db.get_q_extentsize()) def test_suite(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(DB_general)) suite.addTest(unittest.makeSuite(DB_txn)) suite.addTest(unittest.makeSuite(DB_hash)) suite.addTest(unittest.makeSuite(DB_recno)) suite.addTest(unittest.makeSuite(DB_queue)) return suite if __name__ == '__main__': unittest.main(defaultTest='test_suite')