# 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 = "chromeos-installer@google.com"
NAME = "paygen_au_canary"
PURPOSE = "Automated testing of delta payloads generated by paygen."
CRITERIA = "All tests with SUITE=paygen_au_canary must pass."

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

DOC = """
This suite is similar to the au suite except that it's generated during paygen
and does not close the tree when the tests fail. There will be one test per
delta generated by paygen for a given release image. These tests (control
files) are generated at the time we are generating delta payloads, uploaded
by paygen, and expected to be kicked off by paygen. This suite can be re-run
at anytime using atest or the autotest web frontend.

Note: the control files used by this suite are auto-generated and the template
control file is in server/site_tests/autoupdate_EndToEndTest/control.

Note: this suite only tests deltas from the canary channel.

@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 import provision
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(devserver_url)
ds.stage_artifacts(build, artifacts=['paygen_au_canary_suite'])

# TODO(sosa): Really should skip_reimage but suite logic does not currently
# work without reimaging.
dynamic_suite.reimage_and_run(
    build=build, board=board, name=NAME, job=job, pool=pool,
    check_hosts=check_hosts, add_experimental=True, num=num,
    file_bugs=file_bugs, priority=priority, timeout=timeout,
    max_runtime_mins=60, devserver_url=devserver_url,
    version_prefix=provision.CROS_VERSION_PREFIX)
