# Copyright 2017 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 = "Chrome OS Team"
NAME = "bvt-arc"
PURPOSE = "Test basic functionality of ARC."

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

DOC = """
This is the portion of the Build Verification Test suite required
for devices supporting ARC.  Tests in this suite must pass in the
CQ, and in the Chrome and Android PFQs.  Test failures prevent code
from being included in the tree or in canary builds:
  * Failures in the canary turn the tree red, block lower priority
    tests for the build, and generally mean that QA cannot further
    evaluate the build's fitness for release.
  * Chrome OS CLs must pass these tests in the Commit Queue prior to
    being accepted into the tree.
  * A new Chrome or Android build must pass these tests prior to the
    build being included in a Chrome OS canary build.

Requirements for a test to be in this suite:
 1. The test should be SHORT or MEDIUM, and should not require any
    specialized lab resources.
 2. A test failure should indicate one or more of the following
    impacts is possible:
     * The failure may prevent discovery of other ARC bugs.
     * The failure may block ordinary development tasks for ARC.
 3. A test failure must reliably indicate a bug in the product, and
    not a bug in the test.
 4. The test must be hermetic.  That is, the test should have no
    dependencies on external network resources.

@param build: The name of the image to test.
              Ex: veyron_minnie-release/R60-9575.0.0
@param board: The board to test on. Ex: veyron_minnie
@param pool: The pool of machines to utilize for scheduling.
"""

import common
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': ['bvt'],
    'owner': '',
    'status': None,
    'summary': None,
    'title': None,
}

args_dict['max_runtime_mins'] = 60
args_dict['name'] = 'bvt-arc'
args_dict['job'] = job
args_dict['bug_template'] = _BUG_TEMPLATE

dynamic_suite.reimage_and_run(**args_dict)
