# Copyright (c) 2016 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 = "platform_ExternalUSBBootStress.50"
PURPOSE = "Servo based USB boot stress test"
CRITERIA = "This test will fail if the device fails to boot."
TIME = "LONG"
TEST_CATEGORY = "Functional"
TEST_CLASS = "platform"
TEST_TYPE = "server"
# Stop running the test due to crbug.com/654478
# ATTRIBUTES = "suite:usb_detect_stress"
# DEPENDENCIES = "servo_state:WORKING"


DOC = """
This test uses servo to simulate USB connect/removal events during boot
"""

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

def run(machine):
    host = hosts.create_host(machine, servo_args=servo_args)

    reboots = int(args_dict.get('reboots', 50))

    job.run_test("platform_ExternalUSBBootStress", host=host,
                 disable_sysinfo=True, reboots=reboots)

parallel_simple(run, machines)
