| # Copyright (c) 2012 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| AUTHOR = "akeshet, chromeos-lab-infrastructure" |
| NAME = "test_that_wrapper" |
| PURPOSE = "Wrapper for ad-hoc suites kicked of by test_that tool." |
| CRITERIA = "All tests must pass." |
| |
| TIME = "SHORT" |
| TEST_CATEGORY = "General" |
| TEST_CLASS = "suite" |
| TEST_TYPE = "Server" |
| |
| DOC = """ |
| This is a wrapper suite for lab jobs that get kicked off by developers |
| running the test_that tool on their desks, but targetting devices in the lab. |
| |
| @param build: The name of the image to test. |
| Ex: x86-mario-release/R17-1412.33.0-a1-b29 |
| @param board: The board to test on. Ex: x86-mario |
| @param pool: The pool of machines to utilize for scheduling. If pool=None |
| board is used. |
| @param check_hosts: require appropriate live hosts to exist in the lab. |
| @param SKIP_IMAGE: (optional) If present and True, don't re-image devices. |
| """ |
| |
| import logging, shlex |
| |
| import common |
| from autotest_lib.server.cros.dynamic_suite import dynamic_suite |
| from autotest_lib.site_utils import test_that |
| from autotest_lib.server.cros import provision |
| |
| # Values specified in this bug template will override default values when |
| # filing bugs on tests that are a part of this suite. If left unspecified |
| # the bug filer will fallback to it's defaults. |
| _BUG_TEMPLATE = { |
| 'labels': ['test_that_wrapper'], |
| 'owner': '', |
| 'status': None, |
| 'summary': None, |
| 'title': None, |
| 'ccs': ['beeps@chromium.org'] |
| } |
| |
| |
| try: |
| arguments = test_that.parse_arguments(shlex.split(suite_args)) |
| except SystemExit: |
| logging.error('Unable to parse test_that arguments %s, suite aborting', |
| shlex.split(suite_args)) |
| raise |
| |
| parsed_test_arguments = [test_that.get_predicate_for_test_arg(test_arg) |
| for test_arg in arguments.tests] |
| sub_predicates, descriptions = zip(*parsed_test_arguments) |
| |
| logging.info('This is a test_that triggered suite, consisting of:') |
| for desc in descriptions: |
| logging.info('A %s.', desc) |
| |
| combined_predicate = lambda test: any(f(test) for f in sub_predicates) |
| |
| dynamic_suite.reimage_and_run( |
| build=build, board=board, name=NAME, job=job, pool=pool, |
| check_hosts=check_hosts, add_experimental=True, num=num, |
| file_bugs=file_bugs, priority=priority, timeout_mins=timeout_mins, |
| max_runtime_mins=20, bug_template=_BUG_TEMPLATE, |
| devserver_url=devserver_url, version_prefix=provision.CROS_VERSION_PREFIX, |
| predicate=combined_predicate, wait_for_results=wait_for_results, |
| job_retry=job_retry) |