# Copyright (c) 2012 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"
PURPOSE = "Test basic, required functionality."
CRITERIA = "All tests with SUITE=bvt must pass."

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

DOC = """
This is the Build Verification Test suite. It should consist of SHORT tests
that validate critical functionality. Critical functionality includes but is
not limited to tests that cover the ability to acquire connectivity, perform
-crash reporting, get updates, and allow a user to log in. A test failure in
this suite means that the build is dead in the water and will not be passed
on to QA. Tests that check critical pathways but are long running need to be
pared down and added to this suite on a case by case basis. The longer running
version can continue to run in other suites such as the regression suite. If you
are unsure if your test belongs in this suite email:
chromeos-lab-infrastructure@google.com.

This suite sets num to 4 in the reimage_and_run call to make sure we run
across 4 different machines. This overrides the CROS.sharding_factor option in
the global_config.


@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 dynamic_suite

dynamic_suite.reimage_and_run(
    build=build, board=board, name='bvt', job=job, pool=pool,
    check_hosts=check_hosts, add_experimental=True, num=4,
    skip_reimage=dynamic_suite.skip_reimage(globals()))
