Home | History | Annotate | Download | only in test_suites
      1 # Copyright 2015 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 = "shuqianz, chromeos-infra"
      6 NAME = "suite_attr_wrapper"
      7 
      8 TIME = "SHORT"
      9 TEST_CATEGORY = "General"
     10 TEST_CLASS = "suite"
     11 TEST_TYPE = "Server"
     12 
     13 DOC = """
     14 This is a wrapper suite to trigger tests that satisfy any attribute boolean
     15 expression.
     16 
     17 @param build: The name of the image to test.
     18               Ex: x86-mario-release/R17-1412.33.0-a1-b29
     19 @param board: The board to test on. Ex: x86-mario
     20 @param pool: The pool of machines to utilize for scheduling. If pool=None
     21              board is used.
     22 @param check_hosts: require appropriate live hosts to exist in the lab.
     23 @param SKIP_IMAGE: (optional) If present and True, don't re-image devices.
     24 """
     25 import ast, logging
     26 
     27 import common
     28 from autotest_lib.server.cros.dynamic_suite import dynamic_suite
     29 from autotest_lib.server.cros.dynamic_suite import suite
     30 from autotest_lib.server.cros import provision
     31 
     32 suite_args_dict = ast.literal_eval(args_dict['suite_args'])
     33 
     34 # Get the predicate object from attr_filter argument
     35 try:
     36     attr = suite_args_dict['attr_filter']
     37     attr_predicate = suite.Suite.matches_attribute_expression_predicate(attr)
     38 except KeyError:
     39     logging.error('Unable to find the attribute boolean expression used to '
     40                   'trigger tests in suite_args %s, please use attr_filter '
     41                   'keyword to specify it. suite aborting' % suite_args_dict)
     42     raise
     43 
     44 # Update suite_args_dict into args_dict
     45 args_dict.update(suite_args_dict)
     46 args_dict['predicate'] = attr_predicate
     47 args_dict.setdefault('name', NAME)
     48 args_dict['job'] = job
     49 args_dict.setdefault('version_prefix', provision.CROS_VERSION_PREFIX)
     50 
     51 dynamic_suite.reimage_and_run(**args_dict)
     52