# Copyright 2012 The ChromiumOS Authors
# 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 = "ChromeOS Team"
NAME = "firmware_ConsecutiveBoot.dev"
METADATA = {
        "contacts": ["chromeos-faft@google.com", "jbettis@chromium.org"],
        "bug_component": "b:792402", # ChromeOS > Platform > Enablement > Firmware > FAFT
        "criteria": "Servo based consecutive boot test"
}
ATTRIBUTES = "suite:faft_stress"
DEPENDENCIES = "servo_state:WORKING"
TIME = "SHORT"
TEST_TYPE = "server"

DOC = """
This test is intended to be run with many iterations to ensure that the DUT
does boot into ChromeOS and then does power off later in developer mode.

The iteration should be specified by the parameter -a "faft_iterations=10".
"""

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

args.append('faft_waitup_time=60')
args.append('faft_localrun=1')

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

parallel_simple(run_consecutive_boot, machines)
