# 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.batteryonly"
ATTRIBUTES = "suite:faft_bios_ro_qual, suite:faft_bios_rw_qual"
TIME = "MEDIUM"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"

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

If running on Servo V4 Type-C with power passthrough, the test can
change the power supply state.  Otherwise, it will require manually
removing AC power before starting the test.

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

from autotest_lib.client.common_lib import utils

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

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

parallel_simple(run_firmwareupdate, machines)
