# Copyright 2018 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.

from autotest_lib.client.common_lib import utils

AUTHOR = "Chromium OS"
NAME = "autoupdate_Rollback.powerwash_before_rollback"
TIME = "MEDIUM"
TEST_CATEGORY = "Functional"
TEST_CLASS = "platform"
TEST_TYPE = "server"
# TODO: Add this back to suite:bvt-installer once crbug/988481 is addressed
ATTRIBUTES = ""

DOC = """
This is a rollback test for Chrome OS 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)
