# Copyright (c) 2016 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_FAFTSetup"
PURPOSE = "Servo based diagnose of FAFT hardware setup"
CRITERIA = "This test will fail if FAFT hardware is not set up correctly."
ATTRIBUTES = "suite:faft_bios, suite:faft_bios_au_1, suite:faft_bios_au_2, suite:faft_bios_au_3, suite:faft_lab, suite:faft_lv2, suite:faft_normal, suite:faft_bios_ec3po, suite:faft_bios_tot, suite:faft_setup, suite:bvt-faft"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"
JOB_RETRIES = 4

DOC = """
This test checks the following FAFT hardware requirement:
  - Warm reset
  - Cold reset
  - Recovery boot with USB stick
  - USB stick is plugged into Servo board, not DUT
  - Keyboard simulation

If this test is run with parameter -a "spec_check=True", then hardware
testability is checked according to spec and without any current
workaround.
  - Strict keyboard simulation
  - Recovery mode with dedicated recovery signal
"""

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

def run_faftsetup(machine):
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test("firmware_FAFTSetup", host=host, cmdline_args=args,
                 disable_sysinfo=True)

parallel_simple(run_faftsetup, machines)
