# 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_dev"
PURPOSE = "Automated testing of delta payloads generated by paygen."
CRITERIA = "All tests with SUITE=paygen_au_dev 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 dev 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.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=['paygen_au_dev_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)
