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