mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			513 lines
		
	
	
	
		
			18 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			513 lines
		
	
	
	
		
			18 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import unittest
 | |
| import os, glob
 | |
| 
 | |
| from test_all import db, test_support, get_new_environment_path, \
 | |
|         get_new_database_path
 | |
| 
 | |
| #----------------------------------------------------------------------
 | |
| 
 | |
| class DBEnv(unittest.TestCase):
 | |
|     import sys
 | |
|     if sys.version_info < (2, 4) :
 | |
|         def assertTrue(self, expr, msg=None):
 | |
|             self.failUnless(expr,msg=msg)
 | |
| 
 | |
|         def assertFalse(self, expr, msg=None):
 | |
|             self.failIf(expr,msg=msg)
 | |
| 
 | |
|     def setUp(self):
 | |
|         self.homeDir = get_new_environment_path()
 | |
|         self.env = db.DBEnv()
 | |
| 
 | |
|     def tearDown(self):
 | |
|         self.env.close()
 | |
|         del self.env
 | |
|         test_support.rmtree(self.homeDir)
 | |
| 
 | |
| class DBEnv_general(DBEnv) :
 | |
|     if db.version() >= (4, 7) :
 | |
|         def test_lk_partitions(self) :
 | |
|             for i in [10, 20, 40] :
 | |
|                 self.env.set_lk_partitions(i)
 | |
|                 self.assertEqual(i, self.env.get_lk_partitions())
 | |
| 
 | |
|     if db.version() >= (4, 6) :
 | |
|         def test_thread(self) :
 | |
|             for i in [16, 100, 1000] :
 | |
|                 self.env.set_thread_count(i)
 | |
|                 self.assertEqual(i, self.env.get_thread_count())
 | |
| 
 | |
|         def test_cache_max(self) :
 | |
|             for size in [64, 128] :
 | |
|                 size = size*1024*1024  # Megabytes
 | |
|                 self.env.set_cache_max(0, size)
 | |
|                 size2 = self.env.get_cache_max()
 | |
|                 self.assertEqual(0, size2[0])
 | |
|                 self.assertTrue(size <= size2[1])
 | |
|                 self.assertTrue(2*size > size2[1])
 | |
| 
 | |
|     if db.version() >= (4, 4) :
 | |
|         def test_mutex_stat(self) :
 | |
|             self.env.open(self.homeDir, db.DB_CREATE | db.DB_INIT_MPOOL |
 | |
|                     db.DB_INIT_LOCK)
 | |
|             stat = self.env.mutex_stat()
 | |
|             self.assertTrue("mutex_inuse_max" in stat)
 | |
| 
 | |
|         def test_lg_filemode(self) :
 | |
|             for i in [0600, 0660, 0666] :
 | |
|                 self.env.set_lg_filemode(i)
 | |
|                 self.assertEqual(i, self.env.get_lg_filemode())
 | |
| 
 | |
|     if db.version() >= (4, 3) :
 | |
|         def test_mp_max_openfd(self) :
 | |
|             for i in [17, 31, 42] :
 | |
|                 self.env.set_mp_max_openfd(i)
 | |
|                 self.assertEqual(i, self.env.get_mp_max_openfd())
 | |
| 
 | |
|         def test_mp_max_write(self) :
 | |
|             for i in [100, 200, 300] :
 | |
|                 for j in [1, 2, 3] :
 | |
|                     j *= 1000000
 | |
|                     self.env.set_mp_max_write(i, j)
 | |
|                     v=self.env.get_mp_max_write()
 | |
|                     self.assertEqual((i, j), v)
 | |
| 
 | |
|     if db.version() >= (4, 2) :
 | |
|         def test_invalid_txn(self) :
 | |
|             # This environment doesn't support transactions
 | |
|             self.assertRaises(db.DBInvalidArgError, self.env.txn_begin)
 | |
| 
 | |
|         def test_mp_mmapsize(self) :
 | |
|             for i in [16, 32, 64] :
 | |
|                 i *= 1024*1024
 | |
|                 self.env.set_mp_mmapsize(i)
 | |
|                 self.assertEqual(i, self.env.get_mp_mmapsize())
 | |
| 
 | |
|         def test_tmp_dir(self) :
 | |
|             for i in ["a", "bb", "ccc"] :
 | |
|                 self.env.set_tmp_dir(i)
 | |
|                 self.assertEqual(i, self.env.get_tmp_dir())
 | |
| 
 | |
|         def test_flags(self) :
 | |
|             self.env.set_flags(db.DB_AUTO_COMMIT, 1)
 | |
|             self.assertEqual(db.DB_AUTO_COMMIT, self.env.get_flags())
 | |
|             self.env.set_flags(db.DB_TXN_NOSYNC, 1)
 | |
|             self.assertEqual(db.DB_AUTO_COMMIT | db.DB_TXN_NOSYNC,
 | |
|                     self.env.get_flags())
 | |
|             self.env.set_flags(db.DB_AUTO_COMMIT, 0)
 | |
|             self.assertEqual(db.DB_TXN_NOSYNC, self.env.get_flags())
 | |
|             self.env.set_flags(db.DB_TXN_NOSYNC, 0)
 | |
|             self.assertEqual(0, self.env.get_flags())
 | |
| 
 | |
|         def test_lk_max_objects(self) :
 | |
|             for i in [1000, 2000, 3000] :
 | |
|                 self.env.set_lk_max_objects(i)
 | |
|                 self.assertEqual(i, self.env.get_lk_max_objects())
 | |
| 
 | |
|         def test_lk_max_locks(self) :
 | |
|             for i in [1000, 2000, 3000] :
 | |
|                 self.env.set_lk_max_locks(i)
 | |
|                 self.assertEqual(i, self.env.get_lk_max_locks())
 | |
| 
 | |
|         def test_lk_max_lockers(self) :
 | |
|             for i in [1000, 2000, 3000] :
 | |
|                 self.env.set_lk_max_lockers(i)
 | |
|                 self.assertEqual(i, self.env.get_lk_max_lockers())
 | |
| 
 | |
|         def test_lg_regionmax(self) :
 | |
|             for i in [128, 256, 1024] :
 | |
|                 i = i*1024*1024
 | |
|                 self.env.set_lg_regionmax(i)
 | |
|                 j = self.env.get_lg_regionmax()
 | |
|                 self.assertTrue(i <= j)
 | |
|                 self.assertTrue(2*i > j)
 | |
| 
 | |
|         def test_lk_detect(self) :
 | |
|             flags= [db.DB_LOCK_DEFAULT, db.DB_LOCK_EXPIRE, db.DB_LOCK_MAXLOCKS,
 | |
|                     db.DB_LOCK_MINLOCKS, db.DB_LOCK_MINWRITE,
 | |
|                     db.DB_LOCK_OLDEST, db.DB_LOCK_RANDOM, db.DB_LOCK_YOUNGEST]
 | |
| 
 | |
|             if db.version() >= (4, 3) :
 | |
|                 flags.append(db.DB_LOCK_MAXWRITE)
 | |
| 
 | |
|             for i in flags :
 | |
|                 self.env.set_lk_detect(i)
 | |
|                 self.assertEqual(i, self.env.get_lk_detect())
 | |
| 
 | |
|         def test_lg_dir(self) :
 | |
|             for i in ["a", "bb", "ccc", "dddd"] :
 | |
|                 self.env.set_lg_dir(i)
 | |
|                 self.assertEqual(i, self.env.get_lg_dir())
 | |
| 
 | |
|         def test_lg_bsize(self) :
 | |
|             log_size = 70*1024
 | |
|             self.env.set_lg_bsize(log_size)
 | |
|             self.assertTrue(self.env.get_lg_bsize() >= log_size)
 | |
|             self.assertTrue(self.env.get_lg_bsize() < 4*log_size)
 | |
|             self.env.set_lg_bsize(4*log_size)
 | |
|             self.assertTrue(self.env.get_lg_bsize() >= 4*log_size)
 | |
| 
 | |
|         def test_setget_data_dirs(self) :
 | |
|             dirs = ("a", "b", "c", "d")
 | |
|             for i in dirs :
 | |
|                 self.env.set_data_dir(i)
 | |
|             self.assertEqual(dirs, self.env.get_data_dirs())
 | |
| 
 | |
|         def test_setget_cachesize(self) :
 | |
|             cachesize = (0, 512*1024*1024, 3)
 | |
|             self.env.set_cachesize(*cachesize)
 | |
|             self.assertEqual(cachesize, self.env.get_cachesize())
 | |
| 
 | |
|             cachesize = (0, 1*1024*1024, 5)
 | |
|             self.env.set_cachesize(*cachesize)
 | |
|             cachesize2 = self.env.get_cachesize()
 | |
|             self.assertEqual(cachesize[0], cachesize2[0])
 | |
|             self.assertEqual(cachesize[2], cachesize2[2])
 | |
|             # Berkeley DB expands the cache 25% accounting overhead,
 | |
|             # if the cache is small.
 | |
|             self.assertEqual(125, int(100.0*cachesize2[1]/cachesize[1]))
 | |
| 
 | |
|             # You can not change configuration after opening
 | |
|             # the environment.
 | |
|             self.env.open(self.homeDir, db.DB_CREATE | db.DB_INIT_MPOOL)
 | |
|             cachesize = (0, 2*1024*1024, 1)
 | |
|             self.assertRaises(db.DBInvalidArgError,
 | |
|                 self.env.set_cachesize, *cachesize)
 | |
|             self.assertEqual(cachesize2, self.env.get_cachesize())
 | |
| 
 | |
|         def test_set_cachesize_dbenv_db(self) :
 | |
|             # You can not configure the cachesize using
 | |
|             # the database handle, if you are using an environment.
 | |
|             d = db.DB(self.env)
 | |
|             self.assertRaises(db.DBInvalidArgError,
 | |
|                 d.set_cachesize, 0, 1024*1024, 1)
 | |
| 
 | |
|         def test_setget_shm_key(self) :
 | |
|             shm_key=137
 | |
|             self.env.set_shm_key(shm_key)
 | |
|             self.assertEqual(shm_key, self.env.get_shm_key())
 | |
|             self.env.set_shm_key(shm_key+1)
 | |
|             self.assertEqual(shm_key+1, self.env.get_shm_key())
 | |
| 
 | |
|             # You can not change configuration after opening
 | |
|             # the environment.
 | |
|             self.env.open(self.homeDir, db.DB_CREATE | db.DB_INIT_MPOOL)
 | |
|             # If we try to reconfigure cache after opening the
 | |
|             # environment, core dump.
 | |
|             self.assertRaises(db.DBInvalidArgError,
 | |
|                 self.env.set_shm_key, shm_key)
 | |
|             self.assertEqual(shm_key+1, self.env.get_shm_key())
 | |
| 
 | |
|     if db.version() >= (4, 4) :
 | |
|         def test_mutex_setget_max(self) :
 | |
|             v = self.env.mutex_get_max()
 | |
|             v2 = v*2+1
 | |
| 
 | |
|             self.env.mutex_set_max(v2)
 | |
|             self.assertEqual(v2, self.env.mutex_get_max())
 | |
| 
 | |
|             self.env.mutex_set_max(v)
 | |
|             self.assertEqual(v, self.env.mutex_get_max())
 | |
| 
 | |
|             # You can not change configuration after opening
 | |
|             # the environment.
 | |
|             self.env.open(self.homeDir, db.DB_CREATE)
 | |
|             self.assertRaises(db.DBInvalidArgError,
 | |
|                     self.env.mutex_set_max, v2)
 | |
| 
 | |
|         def test_mutex_setget_increment(self) :
 | |
|             v = self.env.mutex_get_increment()
 | |
|             v2 = 127
 | |
| 
 | |
|             self.env.mutex_set_increment(v2)
 | |
|             self.assertEqual(v2, self.env.mutex_get_increment())
 | |
| 
 | |
|             self.env.mutex_set_increment(v)
 | |
|             self.assertEqual(v, self.env.mutex_get_increment())
 | |
| 
 | |
|             # You can not change configuration after opening
 | |
|             # the environment.
 | |
|             self.env.open(self.homeDir, db.DB_CREATE)
 | |
|             self.assertRaises(db.DBInvalidArgError,
 | |
|                     self.env.mutex_set_increment, v2)
 | |
| 
 | |
|         def test_mutex_setget_tas_spins(self) :
 | |
|             self.env.mutex_set_tas_spins(0)  # Default = BDB decides
 | |
|             v = self.env.mutex_get_tas_spins()
 | |
|             v2 = v*2+1
 | |
| 
 | |
|             self.env.mutex_set_tas_spins(v2)
 | |
|             self.assertEqual(v2, self.env.mutex_get_tas_spins())
 | |
| 
 | |
|             self.env.mutex_set_tas_spins(v)
 | |
|             self.assertEqual(v, self.env.mutex_get_tas_spins())
 | |
| 
 | |
|             # In this case, you can change configuration
 | |
|             # after opening the environment.
 | |
|             self.env.open(self.homeDir, db.DB_CREATE)
 | |
|             self.env.mutex_set_tas_spins(v2)
 | |
| 
 | |
|         def test_mutex_setget_align(self) :
 | |
|             v = self.env.mutex_get_align()
 | |
|             v2 = 64
 | |
|             if v == 64 :
 | |
|                 v2 = 128
 | |
| 
 | |
|             self.env.mutex_set_align(v2)
 | |
|             self.assertEqual(v2, self.env.mutex_get_align())
 | |
| 
 | |
|             # Requires a nonzero power of two
 | |
|             self.assertRaises(db.DBInvalidArgError,
 | |
|                     self.env.mutex_set_align, 0)
 | |
|             self.assertRaises(db.DBInvalidArgError,
 | |
|                     self.env.mutex_set_align, 17)
 | |
| 
 | |
|             self.env.mutex_set_align(2*v2)
 | |
|             self.assertEqual(2*v2, self.env.mutex_get_align())
 | |
| 
 | |
|             # You can not change configuration after opening
 | |
|             # the environment.
 | |
|             self.env.open(self.homeDir, db.DB_CREATE)
 | |
|             self.assertRaises(db.DBInvalidArgError,
 | |
|                     self.env.mutex_set_align, v2)
 | |
| 
 | |
| 
 | |
| class DBEnv_log(DBEnv) :
 | |
|     def setUp(self):
 | |
|         DBEnv.setUp(self)
 | |
|         self.env.open(self.homeDir, db.DB_CREATE | db.DB_INIT_MPOOL | db.DB_INIT_LOG)
 | |
| 
 | |
|     def test_log_file(self) :
 | |
|         log_file = self.env.log_file((1, 1))
 | |
|         self.assertEqual("log.0000000001", log_file[-14:])
 | |
| 
 | |
|     if db.version() >= (4, 4) :
 | |
|         # The version with transactions is checked in other test object
 | |
|         def test_log_printf(self) :
 | |
|             msg = "This is a test..."
 | |
|             self.env.log_printf(msg)
 | |
|             logc = self.env.log_cursor()
 | |
|             self.assertTrue(msg in (logc.last()[1]))
 | |
| 
 | |
|     if db.version() >= (4, 7) :
 | |
|         def test_log_config(self) :
 | |
|             self.env.log_set_config(db.DB_LOG_DSYNC | db.DB_LOG_ZERO, 1)
 | |
|             self.assertTrue(self.env.log_get_config(db.DB_LOG_DSYNC))
 | |
|             self.assertTrue(self.env.log_get_config(db.DB_LOG_ZERO))
 | |
|             self.env.log_set_config(db.DB_LOG_ZERO, 0)
 | |
|             self.assertTrue(self.env.log_get_config(db.DB_LOG_DSYNC))
 | |
|             self.assertFalse(self.env.log_get_config(db.DB_LOG_ZERO))
 | |
| 
 | |
| 
 | |
| class DBEnv_log_txn(DBEnv) :
 | |
|     def setUp(self):
 | |
|         DBEnv.setUp(self)
 | |
|         self.env.open(self.homeDir, db.DB_CREATE | db.DB_INIT_MPOOL |
 | |
|                 db.DB_INIT_LOG | db.DB_INIT_TXN)
 | |
| 
 | |
|     if db.version() >= (4, 5) :
 | |
|         def test_tx_max(self) :
 | |
|             txns=[]
 | |
|             def tx() :
 | |
|                 for i in xrange(self.env.get_tx_max()) :
 | |
|                     txns.append(self.env.txn_begin())
 | |
| 
 | |
|             tx()
 | |
|             self.assertRaises(MemoryError, tx)
 | |
| 
 | |
|             # Abort the transactions before garbage collection,
 | |
|             # to avoid "warnings".
 | |
|             for i in txns :
 | |
|                 i.abort()
 | |
| 
 | |
|     if db.version() >= (4, 4) :
 | |
|         # The version without transactions is checked in other test object
 | |
|         def test_log_printf(self) :
 | |
|             msg = "This is a test..."
 | |
|             txn = self.env.txn_begin()
 | |
|             self.env.log_printf(msg, txn=txn)
 | |
|             txn.commit()
 | |
|             logc = self.env.log_cursor()
 | |
|             logc.last()  # Skip the commit
 | |
|             self.assertTrue(msg in (logc.prev()[1]))
 | |
| 
 | |
|             msg = "This is another test..."
 | |
|             txn = self.env.txn_begin()
 | |
|             self.env.log_printf(msg, txn=txn)
 | |
|             txn.abort()  # Do not store the new message
 | |
|             logc.last()  # Skip the abort
 | |
|             self.assertTrue(msg not in (logc.prev()[1]))
 | |
| 
 | |
|             msg = "This is a third test..."
 | |
|             txn = self.env.txn_begin()
 | |
|             self.env.log_printf(msg, txn=txn)
 | |
|             txn.commit()  # Do not store the new message
 | |
|             logc.last()  # Skip the commit
 | |
|             self.assertTrue(msg in (logc.prev()[1]))
 | |
| 
 | |
| 
 | |
| class DBEnv_memp(DBEnv):
 | |
|     def setUp(self):
 | |
|         DBEnv.setUp(self)
 | |
|         self.env.open(self.homeDir, db.DB_CREATE | db.DB_INIT_MPOOL | db.DB_INIT_LOG)
 | |
|         self.db = db.DB(self.env)
 | |
|         self.db.open("test", db.DB_HASH, db.DB_CREATE, 0660)
 | |
| 
 | |
|     def tearDown(self):
 | |
|         self.db.close()
 | |
|         del self.db
 | |
|         DBEnv.tearDown(self)
 | |
| 
 | |
|     def test_memp_1_trickle(self) :
 | |
|         self.db.put("hi", "bye")
 | |
|         self.assertTrue(self.env.memp_trickle(100) > 0)
 | |
| 
 | |
| # Preserve the order, do "memp_trickle" test first
 | |
|     def test_memp_2_sync(self) :
 | |
|         self.db.put("hi", "bye")
 | |
|         self.env.memp_sync()  # Full flush
 | |
|         # Nothing to do...
 | |
|         self.assertTrue(self.env.memp_trickle(100) == 0)
 | |
| 
 | |
|         self.db.put("hi", "bye2")
 | |
|         self.env.memp_sync((1, 0))  # NOP, probably
 | |
|         # Something to do... or not
 | |
|         self.assertTrue(self.env.memp_trickle(100) >= 0)
 | |
| 
 | |
|         self.db.put("hi", "bye3")
 | |
|         self.env.memp_sync((123, 99))  # Full flush
 | |
|         # Nothing to do...
 | |
|         self.assertTrue(self.env.memp_trickle(100) == 0)
 | |
| 
 | |
|     def test_memp_stat_1(self) :
 | |
|         stats = self.env.memp_stat()  # No param
 | |
|         self.assertTrue(len(stats)==2)
 | |
|         self.assertTrue("cache_miss" in stats[0])
 | |
|         stats = self.env.memp_stat(db.DB_STAT_CLEAR)  # Positional param
 | |
|         self.assertTrue("cache_miss" in stats[0])
 | |
|         stats = self.env.memp_stat(flags=0)  # Keyword param
 | |
|         self.assertTrue("cache_miss" in stats[0])
 | |
| 
 | |
|     def test_memp_stat_2(self) :
 | |
|         stats=self.env.memp_stat()[1]
 | |
|         self.assertTrue(len(stats))==1
 | |
|         self.assertTrue("test" in stats)
 | |
|         self.assertTrue("page_in" in stats["test"])
 | |
| 
 | |
| class DBEnv_logcursor(DBEnv):
 | |
|     def setUp(self):
 | |
|         DBEnv.setUp(self)
 | |
|         self.env.open(self.homeDir, db.DB_CREATE | db.DB_INIT_MPOOL |
 | |
|                 db.DB_INIT_LOG | db.DB_INIT_TXN)
 | |
|         txn = self.env.txn_begin()
 | |
|         self.db = db.DB(self.env)
 | |
|         self.db.open("test", db.DB_HASH, db.DB_CREATE, 0660, txn=txn)
 | |
|         txn.commit()
 | |
|         for i in ["2", "8", "20"] :
 | |
|             txn = self.env.txn_begin()
 | |
|             self.db.put(key = i, data = i*int(i), txn=txn)
 | |
|             txn.commit()
 | |
| 
 | |
|     def tearDown(self):
 | |
|         self.db.close()
 | |
|         del self.db
 | |
|         DBEnv.tearDown(self)
 | |
| 
 | |
|     def _check_return(self, value) :
 | |
|         self.assertTrue(isinstance(value, tuple))
 | |
|         self.assertEqual(len(value), 2)
 | |
|         self.assertTrue(isinstance(value[0], tuple))
 | |
|         self.assertEqual(len(value[0]), 2)
 | |
|         self.assertTrue(isinstance(value[0][0], int))
 | |
|         self.assertTrue(isinstance(value[0][1], int))
 | |
|         self.assertTrue(isinstance(value[1], str))
 | |
| 
 | |
|     # Preserve test order
 | |
|     def test_1_first(self) :
 | |
|         logc = self.env.log_cursor()
 | |
|         v = logc.first()
 | |
|         self._check_return(v)
 | |
|         self.assertTrue((1, 1) < v[0])
 | |
|         self.assertTrue(len(v[1])>0)
 | |
| 
 | |
|     def test_2_last(self) :
 | |
|         logc = self.env.log_cursor()
 | |
|         lsn_first = logc.first()[0]
 | |
|         v = logc.last()
 | |
|         self._check_return(v)
 | |
|         self.assertTrue(lsn_first < v[0])
 | |
| 
 | |
|     def test_3_next(self) :
 | |
|         logc = self.env.log_cursor()
 | |
|         lsn_last = logc.last()[0]
 | |
|         self.assertEqual(logc.next(), None)
 | |
|         lsn_first = logc.first()[0]
 | |
|         v = logc.next()
 | |
|         self._check_return(v)
 | |
|         self.assertTrue(lsn_first < v[0])
 | |
|         self.assertTrue(lsn_last > v[0])
 | |
| 
 | |
|         v2 = logc.next()
 | |
|         self.assertTrue(v2[0] > v[0])
 | |
|         self.assertTrue(lsn_last > v2[0])
 | |
| 
 | |
|         v3 = logc.next()
 | |
|         self.assertTrue(v3[0] > v2[0])
 | |
|         self.assertTrue(lsn_last > v3[0])
 | |
| 
 | |
|     def test_4_prev(self) :
 | |
|         logc = self.env.log_cursor()
 | |
|         lsn_first = logc.first()[0]
 | |
|         self.assertEqual(logc.prev(), None)
 | |
|         lsn_last = logc.last()[0]
 | |
|         v = logc.prev()
 | |
|         self._check_return(v)
 | |
|         self.assertTrue(lsn_first < v[0])
 | |
|         self.assertTrue(lsn_last > v[0])
 | |
| 
 | |
|         v2 = logc.prev()
 | |
|         self.assertTrue(v2[0] < v[0])
 | |
|         self.assertTrue(lsn_first < v2[0])
 | |
| 
 | |
|         v3 = logc.prev()
 | |
|         self.assertTrue(v3[0] < v2[0])
 | |
|         self.assertTrue(lsn_first < v3[0])
 | |
| 
 | |
|     def test_5_current(self) :
 | |
|         logc = self.env.log_cursor()
 | |
|         logc.first()
 | |
|         v = logc.next()
 | |
|         self.assertEqual(v, logc.current())
 | |
| 
 | |
|     def test_6_set(self) :
 | |
|         logc = self.env.log_cursor()
 | |
|         logc.first()
 | |
|         v = logc.next()
 | |
|         self.assertNotEqual(v, logc.next())
 | |
|         self.assertNotEqual(v, logc.next())
 | |
|         self.assertEqual(v, logc.set(v[0]))
 | |
| 
 | |
|     def test_explicit_close(self) :
 | |
|         logc = self.env.log_cursor()
 | |
|         logc.close()
 | |
|         self.assertRaises(db.DBCursorClosedError, logc.next)
 | |
| 
 | |
|     def test_implicit_close(self) :
 | |
|         logc =  [self.env.log_cursor() for i in xrange(10)]
 | |
|         self.env.close()  # This close should close too all its tree
 | |
|         for i in logc :
 | |
|             self.assertRaises(db.DBCursorClosedError, i.next)
 | |
| 
 | |
| def test_suite():
 | |
|     suite = unittest.TestSuite()
 | |
| 
 | |
|     suite.addTest(unittest.makeSuite(DBEnv_general))
 | |
|     suite.addTest(unittest.makeSuite(DBEnv_memp))
 | |
|     suite.addTest(unittest.makeSuite(DBEnv_logcursor))
 | |
|     suite.addTest(unittest.makeSuite(DBEnv_log))
 | |
|     suite.addTest(unittest.makeSuite(DBEnv_log_txn))
 | |
| 
 | |
|     return suite
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     unittest.main(defaultTest='test_suite')
 | 
