# Copyright (c) 2012 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_FwScreenCloseLid"
PURPOSE = "Servo based lid close triggered shutdown during firmware screens."
CRITERIA = "This test will fail if DUT doesn't shutdown"
SUITE = "faft,faft_bios,faft_dev,faft_lv4"
TIME = "MEDIUM"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"

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 triggers
firmware screens (developer, remove, insert, yuck, to_norm screens),
and then closes the lid in order to power the machine down.
"""

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

def run_fwscreencloselid(machine):
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test("firmware_FwScreenCloseLid", host=host, cmdline_args=args,
                 disable_sysinfo=True, dev_mode=True, tag="dev")

parallel_simple(run_fwscreencloselid, machines)
