OLD | NEW |
---|---|
1 # Shell class for a test, inherited by all individual tests | 1 # Shell class for a test, inherited by all individual tests |
2 # | 2 # |
3 # Methods: | 3 # Methods: |
4 # __init__ initialise | 4 # __init__ initialise |
5 # initialize run once for each job | 5 # initialize run once for each job |
6 # setup run once for each new version of the test installed | 6 # setup run once for each new version of the test installed |
7 # run run the test (wrapped by job.run_test()) | 7 # run run the test (wrapped by job.run_test()) |
8 # | 8 # |
9 # Data: | 9 # Data: |
10 # job backreference to the job this test instance is part of | 10 # job backreference to the job this test instance is part of |
11 # outputdir eg. results/<job>/<testname.tag> | 11 # outputdir eg. results/<job>/<testname.tag> |
12 # resultsdir eg. results/<job>/<testname.tag>/results | 12 # resultsdir eg. results/<job>/<testname.tag>/results |
13 # profdir eg. results/<job>/<testname.tag>/profiling | 13 # profdir eg. results/<job>/<testname.tag>/profiling |
14 # debugdir eg. results/<job>/<testname.tag>/debug | 14 # debugdir eg. results/<job>/<testname.tag>/debug |
15 # bindir eg. tests/<test> | 15 # bindir eg. tests/<test> |
16 # src eg. tests/<test>/src | 16 # src eg. tests/<test>/src |
17 # tmpdir eg. tmp/<tempname>_<testname.tag> | 17 # tmpdir eg. tmp/<tempname>_<testname.tag> |
18 | 18 |
19 import fcntl, getpass, os, re, sys, shutil, tarfile, tempfile, time, traceback | 19 import fcntl, getpass, os, re, sys, shutil, tarfile, tempfile, time, traceback |
20 import warnings, logging, glob, resource | 20 import warnings, logging, glob, resource |
21 | 21 |
22 from datetime import datetime | |
petkov
2010/11/24 20:36:53
sort
thieule
2010/11/30 23:05:08
Done.
| |
22 from autotest_lib.client.common_lib import error | 23 from autotest_lib.client.common_lib import error |
23 from autotest_lib.client.bin import utils | 24 from autotest_lib.client.bin import utils |
24 | 25 |
25 | 26 |
26 class base_test(object): | 27 class base_test(object): |
27 preserve_srcdir = False | 28 preserve_srcdir = False |
28 network_destabilizing = False | 29 network_destabilizing = False |
29 | 30 |
30 def __init__(self, job, bindir, outputdir): | 31 def __init__(self, job, bindir, outputdir): |
31 self.job = job | 32 self.job = job |
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
411 p_args, p_dargs = _cherry_pick_args(self.execute, | 412 p_args, p_dargs = _cherry_pick_args(self.execute, |
412 args, dargs) | 413 args, dargs) |
413 | 414 |
414 _call_test_function(self.execute, *p_args, **p_dargs) | 415 _call_test_function(self.execute, *p_args, **p_dargs) |
415 except Exception: | 416 except Exception: |
416 try: | 417 try: |
417 logging.exception('Exception escaping from test:') | 418 logging.exception('Exception escaping from test:') |
418 except: | 419 except: |
419 pass # don't let logging exceptions here interfere | 420 pass # don't let logging exceptions here interfere |
420 | 421 |
422 # Save the VM state immediately after the test failure. | |
423 # This is a NOOP if the the test isn't running in a VM or | |
424 # if the VM is not properly configured to save state. | |
425 now = datetime.now().strftime('%I:%M:%S.%f') | |
426 checkpoint_name = '%s-%s' % (self.tagged_testname, now) | |
427 utils.save_vm_state(checkpoint_name) | |
428 | |
421 # Save the exception while we run our cleanup() before | 429 # Save the exception while we run our cleanup() before |
422 # reraising it. | 430 # reraising it. |
423 exc_info = sys.exc_info() | 431 exc_info = sys.exc_info() |
424 try: | 432 try: |
425 try: | 433 try: |
426 if run_cleanup: | 434 if run_cleanup: |
427 _cherry_pick_call(self.cleanup, *args, **dargs) | 435 _cherry_pick_call(self.cleanup, *args, **dargs) |
428 except Exception: | 436 except Exception: |
429 print 'Ignoring exception during cleanup() phase:' | 437 print 'Ignoring exception during cleanup() phase:' |
430 traceback.print_exc() | 438 traceback.print_exc() |
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
682 if before_iteration_hook: | 690 if before_iteration_hook: |
683 mytest.register_before_iteration_hook(before_iteration_hook) | 691 mytest.register_before_iteration_hook(before_iteration_hook) |
684 if after_iteration_hook: | 692 if after_iteration_hook: |
685 mytest.register_after_iteration_hook(after_iteration_hook) | 693 mytest.register_after_iteration_hook(after_iteration_hook) |
686 mytest._exec(args, dargs) | 694 mytest._exec(args, dargs) |
687 finally: | 695 finally: |
688 os.chdir(pwd) | 696 os.chdir(pwd) |
689 if after_test_hook: | 697 if after_test_hook: |
690 after_test_hook(mytest) | 698 after_test_hook(mytest) |
691 shutil.rmtree(mytest.tmpdir, ignore_errors=True) | 699 shutil.rmtree(mytest.tmpdir, ignore_errors=True) |
OLD | NEW |