| #!/usr/bin/python -u |
| # |
| # autotest <control file> - run the autotest control file specified. |
| # |
| import os, sys |
| import common |
| from optparse import OptionParser |
| from autotest_lib.client.bin import job |
| from autotest_lib.client.common_lib import global_config |
| |
| |
| # Use the name of the binary to find the real installation directory |
| # aka $AUTODIR. Update our path to include the $AUTODIR/bin/tests |
| # directory and ensure we have $AUTODIR in our environment. |
| autodirbin = os.path.dirname(os.path.realpath(sys.argv[0])) |
| autodir = os.path.dirname(autodirbin) |
| |
| sys.path.insert(0, autodirbin) |
| |
| os.environ['AUTODIR'] = autodir |
| os.environ['AUTODIRBIN'] = autodirbin |
| os.environ['PYTHONPATH'] = autodirbin |
| |
| parser = OptionParser(usage='Usage: %prog [options] <control-file>') |
| |
| parser.add_option("-a", "--args", dest='args', |
| help="additional args to pass to control file") |
| |
| parser.add_option("-c", "--continue", dest="cont", action="store_true", |
| default=False, help="continue previously started job") |
| |
| parser.add_option("-t", "--tag", dest="tag", type="string", default="default", |
| help="set the job tag") |
| |
| parser.add_option("-H", "--harness", dest="harness", type="string", default='', |
| help="set the harness type") |
| |
| parser.add_option("-P", "--harness_args", dest="harness_args", type="string", default='', |
| help="arguments delivered to harness") |
| |
| parser.add_option("-U", "--user", dest="user", type="string", |
| default='', help="set the job username") |
| |
| parser.add_option("-l", "--external_logging", dest="log", action="store_true", |
| default=False, help="enable external logging") |
| |
| parser.add_option('--verbose', dest='verbose', action='store_true', |
| help='Include DEBUG messages in console output') |
| |
| parser.add_option('--quiet', dest='verbose', action='store_false', |
| help='Not include DEBUG messages in console output') |
| |
| parser.add_option('--hostname', dest='hostname', type='string', |
| default=None, action='store', |
| help='Take this as the hostname of this machine ' |
| '(given by autoserv)') |
| |
| parser.add_option('--output_dir', dest='output_dir', |
| type='string', default="", action='store', |
| help='Specify an alternate path to store test result logs') |
| |
| parser.add_option('--client_test_setup', dest='client_test_setup', |
| type='string', default=None, action='store', |
| help='a comma seperated list of client tests to prebuild on ' |
| 'the server. Use all to prebuild all of them.') |
| |
| parser.add_option('--tap', dest='tap_report', action='store_true', |
| default=None, help='Deprecated, do not use.') |
| |
| def usage(): |
| parser.print_help() |
| sys.exit(1) |
| |
| options, args = parser.parse_args() |
| |
| # Check for a control file if not in prebuild mode. |
| if len(args) != 1 and options.client_test_setup is None: |
| print "Missing control file!" |
| usage() |
| |
| drop_caches = global_config.global_config.get_config_value('CLIENT', |
| 'drop_caches', |
| type=bool, |
| default=True) |
| |
| if options.client_test_setup: |
| from autotest_lib.client.bin import setup_job |
| exit_code = 0 |
| try: |
| setup_job.setup_tests(options) |
| except: |
| exit_code = 1 |
| sys.exit(exit_code) |
| |
| # JOB: run the specified job control file. |
| job.runjob(os.path.realpath(args[0]), drop_caches, options) |