# Copyright (c) 2020 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 = "Chrome OS Team"
NAME = "firmware_FWupdateThenSleep.wp"
ATTRIBUTES = "suite:faft_bios_ro_qual, suite:faft_bios_rw_qual"
TIME = "MEDIUM"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"

DOC = """
RW firmware update using chromeos-firmwareupdate --mode=recovery --wp=1, then
sleep and wake, then make sure the host responds and the flash contents
don't change.

Example:
test_that --board=BOARD --args 'servo_host=SERVO_IP' DUT_IP firmware_FWupdateThenSleep.wp
"""

from autotest_lib.client.common_lib import utils

args_dict = utils.args_to_dict(args)
servo_args = hosts.CrosHost.get_servo_arguments(args_dict)

def run_firmwareupdate(machine):
    # Setup the client machine.
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test('firmware_FWupdateThenSleep', host=host, cmdline_args=args,
                 wp=1)

parallel_simple(run_firmwareupdate, machines)
