# 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_FwScreenPressPower"
PURPOSE = "Servo based power button 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, and to_norm screens),
and then presses the power button in order to power the machine down.
"""

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

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

parallel_simple(run_fwscreenpresspower, machines)
