# 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_DevScreenTimeout"
PURPOSE = "Servo based developer firmware screen timeout test"
CRITERIA = "This test will fail if the timeout period does not match our spec."
SUITE = "faft,faft_bios,faft_dev,faft_lv4"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"

DOC = """
When booting in developer mode, the firmware shows a screen to warn user
the disk image is not secured. If a user press Ctrl-D or a timeout reaches,
it will boot to developer mode. This test is to verify the timeout period.

This test tries to boot the system in developer mode twice.
The first one will repeatly press Ctrl-D on booting in order to reduce
the time on developer warning screen. The second one will do nothing and
wait the developer screen timeout. The time difference of these two boots
is close to the developer screen timeout.
"""

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

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

parallel_simple(run_devscreentimeout, machines)
