# 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"
DEPENDENCIES = "servo_state:WORKING"
TIME = "MEDIUM"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"
PY_VERSION = 3

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)
