10a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoimport unittest 20a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoimport os, glob 30a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 40a8c90248264a8b26970b4473770bcc3df8515fJosh Gaofrom test_all import db, test_support, get_new_environment_path, \ 50a8c90248264a8b26970b4473770bcc3df8515fJosh Gao get_new_database_path 60a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 70a8c90248264a8b26970b4473770bcc3df8515fJosh Gao#---------------------------------------------------------------------- 80a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 90a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoclass DB(unittest.TestCase): 100a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def setUp(self): 110a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.path = get_new_database_path() 120a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.db = db.DB() 130a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 140a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def tearDown(self): 150a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.db.close() 160a8c90248264a8b26970b4473770bcc3df8515fJosh Gao del self.db 170a8c90248264a8b26970b4473770bcc3df8515fJosh Gao test_support.unlink(self.path) 180a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 190a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoclass DB_general(DB) : 200a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_get_open_flags(self) : 210a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.db.open(self.path, dbtype=db.DB_HASH, flags = db.DB_CREATE) 220a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(db.DB_CREATE, self.db.get_open_flags()) 230a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 240a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_get_open_flags2(self) : 250a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.db.open(self.path, dbtype=db.DB_HASH, flags = db.DB_CREATE | 260a8c90248264a8b26970b4473770bcc3df8515fJosh Gao db.DB_THREAD) 270a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(db.DB_CREATE | db.DB_THREAD, self.db.get_open_flags()) 280a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 290a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_get_dbname_filename(self) : 300a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.db.open(self.path, dbtype=db.DB_HASH, flags = db.DB_CREATE) 310a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual((self.path, None), self.db.get_dbname()) 320a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 330a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_get_dbname_filename_database(self) : 340a8c90248264a8b26970b4473770bcc3df8515fJosh Gao name = "jcea-random-name" 350a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.db.open(self.path, dbname=name, dbtype=db.DB_HASH, 360a8c90248264a8b26970b4473770bcc3df8515fJosh Gao flags = db.DB_CREATE) 370a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual((self.path, name), self.db.get_dbname()) 380a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 390a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_bt_minkey(self) : 400a8c90248264a8b26970b4473770bcc3df8515fJosh Gao for i in [17, 108, 1030] : 410a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.db.set_bt_minkey(i) 420a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(i, self.db.get_bt_minkey()) 430a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 440a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_lorder(self) : 450a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.db.set_lorder(1234) 460a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(1234, self.db.get_lorder()) 470a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.db.set_lorder(4321) 480a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(4321, self.db.get_lorder()) 490a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertRaises(db.DBInvalidArgError, self.db.set_lorder, 9182) 500a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 510a8c90248264a8b26970b4473770bcc3df8515fJosh Gao if db.version() >= (4, 6) : 520a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_priority(self) : 530a8c90248264a8b26970b4473770bcc3df8515fJosh Gao flags = [db.DB_PRIORITY_VERY_LOW, db.DB_PRIORITY_LOW, 540a8c90248264a8b26970b4473770bcc3df8515fJosh Gao db.DB_PRIORITY_DEFAULT, db.DB_PRIORITY_HIGH, 550a8c90248264a8b26970b4473770bcc3df8515fJosh Gao db.DB_PRIORITY_VERY_HIGH] 560a8c90248264a8b26970b4473770bcc3df8515fJosh Gao for flag in flags : 570a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.db.set_priority(flag) 580a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(flag, self.db.get_priority()) 590a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 600a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_get_transactional(self) : 610a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertFalse(self.db.get_transactional()) 620a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.db.open(self.path, dbtype=db.DB_HASH, flags = db.DB_CREATE) 630a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertFalse(self.db.get_transactional()) 640a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 650a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoclass DB_hash(DB) : 660a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_h_ffactor(self) : 670a8c90248264a8b26970b4473770bcc3df8515fJosh Gao for ffactor in [4, 16, 256] : 680a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.db.set_h_ffactor(ffactor) 690a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(ffactor, self.db.get_h_ffactor()) 700a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 710a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_h_nelem(self) : 720a8c90248264a8b26970b4473770bcc3df8515fJosh Gao for nelem in [1, 2, 4] : 730a8c90248264a8b26970b4473770bcc3df8515fJosh Gao nelem = nelem*1024*1024 # Millions 740a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.db.set_h_nelem(nelem) 750a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(nelem, self.db.get_h_nelem()) 760a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 770a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_pagesize(self) : 780a8c90248264a8b26970b4473770bcc3df8515fJosh Gao for i in xrange(9, 17) : # From 512 to 65536 790a8c90248264a8b26970b4473770bcc3df8515fJosh Gao i = 1<<i 800a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.db.set_pagesize(i) 810a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(i, self.db.get_pagesize()) 820a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 830a8c90248264a8b26970b4473770bcc3df8515fJosh Gao # The valid values goes from 512 to 65536 840a8c90248264a8b26970b4473770bcc3df8515fJosh Gao # Test 131072 bytes... 850a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertRaises(db.DBInvalidArgError, self.db.set_pagesize, 1<<17) 860a8c90248264a8b26970b4473770bcc3df8515fJosh Gao # Test 256 bytes... 870a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertRaises(db.DBInvalidArgError, self.db.set_pagesize, 1<<8) 880a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 890a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoclass DB_txn(DB) : 900a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def setUp(self) : 910a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.homeDir = get_new_environment_path() 920a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.env = db.DBEnv() 930a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.env.open(self.homeDir, db.DB_CREATE | db.DB_INIT_MPOOL | 940a8c90248264a8b26970b4473770bcc3df8515fJosh Gao db.DB_INIT_LOG | db.DB_INIT_TXN) 950a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.db = db.DB(self.env) 960a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 970a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def tearDown(self) : 980a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.db.close() 990a8c90248264a8b26970b4473770bcc3df8515fJosh Gao del self.db 1000a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.env.close() 1010a8c90248264a8b26970b4473770bcc3df8515fJosh Gao del self.env 1020a8c90248264a8b26970b4473770bcc3df8515fJosh Gao test_support.rmtree(self.homeDir) 1030a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 1040a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_flags(self) : 1050a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.db.set_flags(db.DB_CHKSUM) 1060a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(db.DB_CHKSUM, self.db.get_flags()) 1070a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.db.set_flags(db.DB_TXN_NOT_DURABLE) 1080a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(db.DB_TXN_NOT_DURABLE | db.DB_CHKSUM, 1090a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.db.get_flags()) 1100a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 1110a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_get_transactional(self) : 1120a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertFalse(self.db.get_transactional()) 1130a8c90248264a8b26970b4473770bcc3df8515fJosh Gao # DB_AUTO_COMMIT = Implicit transaction 1140a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.db.open("XXX", dbtype=db.DB_HASH, 1150a8c90248264a8b26970b4473770bcc3df8515fJosh Gao flags = db.DB_CREATE | db.DB_AUTO_COMMIT) 1160a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertTrue(self.db.get_transactional()) 1170a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 1180a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoclass DB_recno(DB) : 1190a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_re_pad(self) : 1200a8c90248264a8b26970b4473770bcc3df8515fJosh Gao for i in [' ', '*'] : # Check chars 1210a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.db.set_re_pad(i) 1220a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(ord(i), self.db.get_re_pad()) 1230a8c90248264a8b26970b4473770bcc3df8515fJosh Gao for i in [97, 65] : # Check integers 1240a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.db.set_re_pad(i) 1250a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(i, self.db.get_re_pad()) 1260a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 1270a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_re_delim(self) : 1280a8c90248264a8b26970b4473770bcc3df8515fJosh Gao for i in [' ', '*'] : # Check chars 1290a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.db.set_re_delim(i) 1300a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(ord(i), self.db.get_re_delim()) 1310a8c90248264a8b26970b4473770bcc3df8515fJosh Gao for i in [97, 65] : # Check integers 1320a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.db.set_re_delim(i) 1330a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(i, self.db.get_re_delim()) 1340a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 1350a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_re_source(self) : 1360a8c90248264a8b26970b4473770bcc3df8515fJosh Gao for i in ["test", "test2", "test3"] : 1370a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.db.set_re_source(i) 1380a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(i, self.db.get_re_source()) 1390a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 1400a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoclass DB_queue(DB) : 1410a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_re_len(self) : 1420a8c90248264a8b26970b4473770bcc3df8515fJosh Gao for i in [33, 65, 300, 2000] : 1430a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.db.set_re_len(i) 1440a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(i, self.db.get_re_len()) 1450a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 1460a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_q_extentsize(self) : 1470a8c90248264a8b26970b4473770bcc3df8515fJosh Gao for i in [1, 60, 100] : 1480a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.db.set_q_extentsize(i) 1490a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(i, self.db.get_q_extentsize()) 1500a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 1510a8c90248264a8b26970b4473770bcc3df8515fJosh Gaodef test_suite(): 1520a8c90248264a8b26970b4473770bcc3df8515fJosh Gao suite = unittest.TestSuite() 1530a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 1540a8c90248264a8b26970b4473770bcc3df8515fJosh Gao suite.addTest(unittest.makeSuite(DB_general)) 1550a8c90248264a8b26970b4473770bcc3df8515fJosh Gao suite.addTest(unittest.makeSuite(DB_txn)) 1560a8c90248264a8b26970b4473770bcc3df8515fJosh Gao suite.addTest(unittest.makeSuite(DB_hash)) 1570a8c90248264a8b26970b4473770bcc3df8515fJosh Gao suite.addTest(unittest.makeSuite(DB_recno)) 1580a8c90248264a8b26970b4473770bcc3df8515fJosh Gao suite.addTest(unittest.makeSuite(DB_queue)) 1590a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 1600a8c90248264a8b26970b4473770bcc3df8515fJosh Gao return suite 1610a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 1620a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoif __name__ == '__main__': 1630a8c90248264a8b26970b4473770bcc3df8515fJosh Gao unittest.main(defaultTest='test_suite') 164