# Copyright 2018 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 = "jaydeepmehta@chromium.org"
NAME = "cts-hardware"
PURPOSE = "Special hardware only test-suite for ARC++ CTS qualification."
CRITERIA = "All tests with SUITE=cts-hardware must pass."

TIME = "LONG"
TEST_CATEGORY = "General"
TEST_CLASS = "suite"
TEST_TYPE = "Server"

DOC = """
ChromeOS ARC++ tests.
"""

import common
from autotest_lib.server.cros.dynamic_suite import dynamic_suite


def predicate(test):
  if not hasattr(test, 'suite') or not hasattr(test, 'name'):
    return False
  if not NAME in test.suite.split(','):
    return False
  # Moblab specific workflow:
  # Moblab prepares retry test package list using test failures in TF stdout.
  # `args_dics['tests']` holds list of items in format abi.CtsPackageName.
  #   ie. ['arm,CtsAppTestCases', 'x86.CtsCameraTestCases', ...]
  # `test.name` holds the actual autotest test name.
  #   ie. cheets_CTS_P.x86.CtsMediaTestCases.other
  name = test.name.split('.')
  if 'tests' in args_dict and name[1]+'.'+name[2] not in args_dict['tests']:
    return False
  return True

args_dict['name'] = NAME
args_dict['job'] = job
args_dict['file_bugs'] = False
args_dict['max_runtime_mins'] = 10080
args_dict['timeout_mins'] = 10080
args_dict['add_experimental'] = True
args_dict['predicate'] = predicate
dynamic_suite.reimage_and_run(**args_dict)

