# 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 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': ['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['version_prefix'] = provision.CROS_VERSION_PREFIX
args_dict['bug_template'] = _BUG_TEMPLATE

dynamic_suite.reimage_and_run(**args_dict)
