# Copyright (c) 2014 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_FWupdateWP"
TIME = "MEDIUM"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"

DOC = """
RO+RW firmware update using chromeos-firmwareupdate --mode=recovery

Example for servo V3:
test_that --board=BOARD --args 'servo_host=SERVO3_IP' DUT_IP firmware_FWupdateWP

Remove servo_host param for V2 servo.
Default mode is recovery, add mode=factory to use factory mode.

Note that the test modifies FWIDs, then restores them. If the test dies in a way
that doesn't run cleanup, then they will be left modified.
In that case, you may want to reflash the firmware to undo the changes.

"""

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_FWupdateWP', host=host, cmdline_args=args)

parallel_simple(run_firmwareupdate, machines)
