# Copyright 2016 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 = "ihf@chromium.org"
NAME = "deqp"
PURPOSE = "Special suite for specifically running dEQP on ChromeOS"
CRITERIA = "All tests with SUITE=deqp must pass."

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

DOC = """
ChromeOS ARC++ tests.

@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 common
from autotest_lib.server.cros import provision
from autotest_lib.server.cros.dynamic_suite import dynamic_suite


# 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 its defaults.
_BUG_TEMPLATE = {
    'labels': ['Type-Bug'],
    'owner': 'ihf@chromium.org'
}

HOURS = 60  # minutes in an hour
DAYS = 24 * HOURS  # minutes in a day
# A bit longer than the longest running job in the suite.
args_dict['max_runtime_mins'] = 1.5 * DAYS
# Accept result delays for this suite due to temporary lab overload.
args_dict['timeout_mins'] = 3 * DAYS

args_dict['name'] = NAME
args_dict['file_bugs'] = False
args_dict['job'] = job
args_dict['add_experimental'] = True
args_dict['bug_template'] = _BUG_TEMPLATE

dynamic_suite.reimage_and_run(**args_dict)