# 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"
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
  - 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")

parallel_simple(run_recoverystress, machines)
