# Copyright (c) 2011 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.server import utils

AUTHOR = "Chrome OS Team"
NAME = "firmware_UserRequestRecovery.ec_wp"
PURPOSE = "Request recovery mode and check it next reboot."
CRITERIA = "This test will fail if firmware does not enter recovery mode"
ATTRIBUTES = "suite:faft, suite:faft_ec, suite:faft_ec_au_1, suite:faft_ec_au_2, suite:faft_ec_au_3, suite:faft_ec_wp, suite:faft_ec3po, suite:faft_ec_tot"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"
DEPENDENCIES = "ec:cros"
JOB_RETRIES = 4

DOC = """
This test requires a USB disk plugged-in, which contains a Chrome OS test
image (built by "build_image --test"). On runtime, this test first requests
a recovery mode on next boot by setting the crossystem recovery_request
flag. It then triggers recovery mode by unplugging and plugging in the USB
disk and checks success of it.
"""

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

def run_userrequestrecovery(machine):
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test("firmware_UserRequestRecovery", host=host, cmdline_args=args,
                 disable_sysinfo=True, dev_mode=False, ec_wp=True, tag="ec_wp")

parallel_simple(run_userrequestrecovery, machines)
