# Copyright 2018 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.powerwash_before_rollback"
METADATA = {
  "contacts": [
    "chromeos-core-services@google.com",
    "chromeos-sw-engprod@google.com"
  ],
  "bug_component": "b:908319",
  "criteria": "Tests powerwash and rollback after an update."
}
TIME = "MEDIUM"
TEST_CATEGORY = "Functional"
TEST_CLASS = "platform"
TEST_TYPE = "server"
ATTRIBUTES = "suite:bvt-installer, suite:satlab-qual-bvt-installer, suite:distributed_lab_qual_bvt_shard1"
PY_VERSION = 3

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 then powerwashes the device.

It tests rollback using the update_engine_client rather than manipulating the
UI.

"""

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, powerwash_before_rollback=True,
                 disable_sysinfo=True)


# Invoke parallel tests.
parallel_simple(run_test, machines)
