Home | History | Annotate | Download | only in test_suites
      1 # Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 AUTHOR = "akeshet, chromeos-lab-infrastructure"
      6 NAME = "test_that_wrapper"
      7 PURPOSE = "Wrapper for ad-hoc suites kicked of by test_that tool."
      8 
      9 TIME = "SHORT"
     10 TEST_CATEGORY = "General"
     11 TEST_CLASS = "suite"
     12 TEST_TYPE = "Server"
     13 
     14 DOC = """
     15 This is a wrapper suite for lab jobs that get kicked off by developers
     16 running the test_that tool on their desks, but targetting devices in the lab.
     17 
     18 @param build: The name of the image to test.
     19               Ex: x86-mario-release/R17-1412.33.0-a1-b29
     20 @param board: The board to test on. Ex: x86-mario
     21 @param pool: The pool of machines to utilize for scheduling. If pool=None
     22              board is used.
     23 @param check_hosts: require appropriate live hosts to exist in the lab.
     24 @param SKIP_IMAGE: (optional) If present and True, don't re-image devices.
     25 """
     26 
     27 import logging, shlex
     28 
     29 import common
     30 from autotest_lib.server.cros.dynamic_suite import dynamic_suite
     31 from autotest_lib.site_utils import test_runner_utils
     32 from autotest_lib.site_utils import test_that
     33 from autotest_lib.server.cros import provision
     34 
     35 # Values specified in this bug template will override default values when
     36 # filing bugs on tests that are a part of this suite. If left unspecified
     37 # the bug filer will fallback to it's defaults.
     38 _BUG_TEMPLATE = {
     39     'labels': ['test_that_wrapper'],
     40     'owner': '',
     41     'status': None,
     42     'summary': None,
     43     'title': None,
     44 }
     45 
     46 # TODO(crbug.com/758427): suite_args needed to support being run by old Autotest
     47 if 'tests' not in args_dict:
     48     try:
     49        arguments = test_that.parse_arguments(shlex.split(suite_args))
     50     except SystemExit:
     51         logging.error('Unable to parse test_that arguments %s, suite aborting',
     52                       shlex.split(suite_args))
     53         raise
     54     args_dict['tests'] = arguments.tests
     55 
     56 parsed_test_arguments = [test_runner_utils.get_predicate_for_test_arg(test_arg)
     57                          for test_arg in args_dict['tests']]
     58 sub_predicates, descriptions = zip(*parsed_test_arguments)
     59 
     60 logging.info('This is a test_that triggered suite, consisting of:')
     61 for desc in descriptions:
     62     logging.info('A %s.', desc)
     63 
     64 combined_predicate = lambda test: any(f(test) for f in sub_predicates)
     65 
     66 args_dict['name'] = NAME
     67 args_dict.setdefault('max_runtime_mins', 20)
     68 args_dict['predicate'] = combined_predicate
     69 args_dict['job'] = job
     70 args_dict['add_experimental'] = True
     71 args_dict['version_prefix'] = provision.CROS_VERSION_PREFIX
     72 args_dict['bug_template'] = _BUG_TEMPLATE
     73 
     74 dynamic_suite.reimage_and_run(**args_dict)
     75