# 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.

from autotest_lib.server import utils

AUTHOR = "Intel"
NAME = "firmware_RecoveryStress.rec_force_mrc"
PURPOSE = "Servo based recovery stress test"
CRITERIA = "This test will fail if DUT failed to boot into USB OS"
TIME = "SHORT"
TEST_CATEGORY = "Stress"
TEST_CLASS = "firmware"
TEST_TYPE = "server"
JOB_RETRIES = 4

DOC = """
This test checks the following FAFT hardware requirement:
  - Recovery boot with USB stick using power_state:rec_force_mrc
  - USB stick is plugged into Servo board, not DUT
"""

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

def run_recoverystress(machine):
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test("firmware_RecoveryStress", host=host, cmdline_args=args,
                 disable_sysinfo=True, reboot_iterations=15, mode="rec_force_mrc")

parallel_simple(run_recoverystress, machines)
