| 
									
										
										
										
											2002-11-19 17:47:07 +00:00
										 |  |  | # Test driver for bsddb package. | 
					
						
							|  |  |  | """
 | 
					
						
							|  |  |  | Run all test cases. | 
					
						
							|  |  |  | """
 | 
					
						
							| 
									
										
										
										
											2008-02-24 18:47:03 +00:00
										 |  |  | import os | 
					
						
							| 
									
										
										
										
											2002-11-19 17:47:07 +00:00
										 |  |  | import sys | 
					
						
							| 
									
										
										
										
											2008-02-24 18:47:03 +00:00
										 |  |  | import tempfile | 
					
						
							| 
									
										
										
										
											2008-01-27 17:13:07 +00:00
										 |  |  | import time | 
					
						
							| 
									
										
										
										
											2002-11-19 17:47:07 +00:00
										 |  |  | import unittest | 
					
						
							| 
									
										
										
										
											2010-02-02 15:57:45 +00:00
										 |  |  | from test.test_support import requires, run_unittest, import_module | 
					
						
							| 
									
										
										
										
											2009-03-30 23:05:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-31 18:32:17 +00:00
										 |  |  | # Skip test if _bsddb module was not built. | 
					
						
							|  |  |  | import_module('_bsddb') | 
					
						
							| 
									
										
										
										
											2010-02-02 08:37:35 +00:00
										 |  |  | # Silence Py3k warning | 
					
						
							|  |  |  | import_module('bsddb', deprecated=True) | 
					
						
							| 
									
										
										
										
											2002-11-19 17:47:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-12-30 20:53:18 +00:00
										 |  |  | # When running as a script instead of within the regrtest framework, skip the | 
					
						
							|  |  |  | # requires test, since it's obvious we want to run them. | 
					
						
							| 
									
										
										
										
											2007-04-25 17:29:52 +00:00
										 |  |  | if __name__ != '__main__': | 
					
						
							| 
									
										
										
										
											2002-12-30 20:53:18 +00:00
										 |  |  |     requires('bsddb') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | verbose = False | 
					
						
							| 
									
										
										
										
											2002-11-19 17:47:07 +00:00
										 |  |  | if 'verbose' in sys.argv: | 
					
						
							| 
									
										
										
										
											2002-12-30 20:53:18 +00:00
										 |  |  |     verbose = True | 
					
						
							| 
									
										
										
										
											2002-11-19 17:47:07 +00:00
										 |  |  |     sys.argv.remove('verbose') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if 'silent' in sys.argv:  # take care of old flag, just in case | 
					
						
							| 
									
										
										
										
											2002-12-30 20:53:18 +00:00
										 |  |  |     verbose = False | 
					
						
							| 
									
										
										
										
											2002-11-19 17:47:07 +00:00
										 |  |  |     sys.argv.remove('silent') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-01-27 17:13:07 +00:00
										 |  |  | class TimingCheck(unittest.TestCase): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     """This class is not a real test.  Its purpose is to print a message
 | 
					
						
							|  |  |  |     periodically when the test runs slowly.  This will prevent the buildbots | 
					
						
							|  |  |  |     from timing out on slow machines."""
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # How much time in seconds before printing a 'Still working' message. | 
					
						
							|  |  |  |     # Since this is run at most once between each test module, use a smaller | 
					
						
							|  |  |  |     # interval than other tests. | 
					
						
							|  |  |  |     _PRINT_WORKING_MSG_INTERVAL = 4 * 60 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # next_time is used as a global variable that survives each instance. | 
					
						
							|  |  |  |     # This is necessary since a new instance will be created for each test. | 
					
						
							|  |  |  |     next_time = time.time() + _PRINT_WORKING_MSG_INTERVAL | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def testCheckElapsedTime(self): | 
					
						
							|  |  |  |         # Print still working message since these tests can be really slow. | 
					
						
							|  |  |  |         now = time.time() | 
					
						
							|  |  |  |         if self.next_time <= now: | 
					
						
							|  |  |  |             TimingCheck.next_time = now + self._PRINT_WORKING_MSG_INTERVAL | 
					
						
							|  |  |  |             sys.__stdout__.write('  test_bsddb3 still working, be patient...\n') | 
					
						
							|  |  |  |             sys.__stdout__.flush() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-11-19 17:47:07 +00:00
										 |  |  | # For invocation through regrtest | 
					
						
							|  |  |  | def test_main(): | 
					
						
							| 
									
										
										
										
											2008-05-25 07:14:09 +00:00
										 |  |  |     from bsddb import db | 
					
						
							|  |  |  |     from bsddb.test import test_all | 
					
						
							| 
									
										
										
										
											2008-05-27 13:26:02 +00:00
										 |  |  |     test_all.set_test_path_prefix(os.path.join(tempfile.gettempdir(), | 
					
						
							|  |  |  |                                  'z-test_bsddb3-%s' % | 
					
						
							|  |  |  |                                  os.getpid())) | 
					
						
							| 
									
										
										
										
											2008-05-25 07:14:09 +00:00
										 |  |  |     # Please leave this print in, having this show up in the buildbots | 
					
						
							|  |  |  |     # makes diagnosing problems a lot easier. | 
					
						
							|  |  |  |     print >>sys.stderr, db.DB_VERSION_STRING | 
					
						
							| 
									
										
										
										
											2008-05-27 13:26:02 +00:00
										 |  |  |     print >>sys.stderr, 'Test path prefix: ', test_all.get_test_path_prefix() | 
					
						
							| 
									
										
										
										
											2008-02-24 18:47:03 +00:00
										 |  |  |     try: | 
					
						
							| 
									
										
										
										
											2008-05-25 07:14:09 +00:00
										 |  |  |         run_unittest(test_all.suite(module_prefix='bsddb.test.', | 
					
						
							|  |  |  |                                     timing_check=TimingCheck)) | 
					
						
							|  |  |  |     finally: | 
					
						
							|  |  |  |         # The only reason to remove db_home is in case if there is an old | 
					
						
							|  |  |  |         # one lying around.  This might be by a different user, so just | 
					
						
							|  |  |  |         # ignore errors.  We should always make a unique name now. | 
					
						
							|  |  |  |         try: | 
					
						
							| 
									
										
										
										
											2008-05-27 13:26:02 +00:00
										 |  |  |             test_all.remove_test_path_directory() | 
					
						
							| 
									
										
										
										
											2008-05-25 07:14:09 +00:00
										 |  |  |         except: | 
					
						
							|  |  |  |             pass | 
					
						
							| 
									
										
										
										
											2002-12-30 20:53:18 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-11-19 17:47:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-05-25 07:14:09 +00:00
										 |  |  | if __name__ == '__main__': | 
					
						
							| 
									
										
										
										
											2007-04-25 17:29:52 +00:00
										 |  |  |     test_main() |