# Copyright (c) 2013 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 = "au"
PURPOSE = "Automated testing of autoupdate done by continuous builders."
CRITERIA = "All tests with SUITE=au must pass."

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

DOC = """
This is the equivalent of the build verification suite but for autoupdate in the
sense that this suite contains the Autoupdate Verification tests that must pass
with every build.

Note: the control files used by this suite are auto-generated by Chromium OS
builds which use the template control file from
server/site_tests/autoupdate_EndToEndTest/control.

@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.
"""

import common
from autotest_lib.client.common_lib.cros import dev_server
from autotest_lib.server.cros.dynamic_suite import dynamic_suite

# Needs to be done to generate the control files for the suite.
ds = dev_server.ImageServer.resolve(build)
ds.stage_artifacts(build, artifacts=['au_suite'])

dynamic_suite.reimage_and_run(
    build=build, board=board, name='au', job=job, pool=pool,
    check_hosts=check_hosts, add_experimental=True, num=num,
    file_bugs=file_bugs, skip_reimage=True,
    max_runtime_mins=60)
