# Copyright 2013 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

from autotest_lib.client.common_lib import utils

AUTHOR = "ChromiumOS"
NAME = "autoupdate_Rollback"
METADATA = {
  "contacts": [
    "chromeos-core-services@google.com",
    "chromeos-sw-engprod@google.com"
  ],
  "bug_component": "b:908319",
  "criteria": "Tests rollback after an update."
}
TIME = "MEDIUM"
TEST_TYPE = "server"
ATTRIBUTES = "suite:bvt-installer, suite:satlab-qual-bvt-installer, suite:distributed_lab_qual_bvt_shard1"

DOC = """
This is a rollback test for ChromeOS releases. It first updates a machine and
then invokes rollback to boot from its previously booted partition. It tests
rollback using the update_engine_client rather than manipulating the UI.

Refer to autoupdate_Basic's control.delta file for instructions on how to run
this test locally from your workstation.

"""

args_dict = utils.args_to_dict(args)
job_repo_url = args_dict.get('job_repo_url')


def run_test(machine):
    """Execute a test configuration on a given machine."""
    host = hosts.create_host(machine)
    job.run_test("autoupdate_Rollback", host=host,
                 job_repo_url=job_repo_url)


# Invoke parallel tests.
parallel_simple(run_test, machines)
