# 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_ConsecutiveBoot.500"
PURPOSE = "Servo based consecutive boot test (500 iterations)"
CRITERIA = "This test will fail if DUT fails to boot from power-off"
ATTRIBUTES = "suite:faft_stress"
DEPENDENCIES = "servo_state:WORKING"
TIME = "SHORT"
TEST_CATEGORY = "Stress"
TEST_CLASS = "firmware"
TEST_TYPE = "server"
PY_VERSION = 3

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

Runs 500 iterations.
"""

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

args.append('faft_iterations=500')
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=False, tag="normal")

parallel_simple(run_consecutive_boot, machines)
