# Copyright 2014 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

NAME = "infra_ServoDiagnosis"
AUTHOR = "Chrome OS Team"
TIME = "LONG"
TEST_CATEGORY = "Stress"
TEST_CLASS = "platform"
TEST_TYPE = "server"

# N.B.  We deliberately do not say DEPENDENCIES = "servo"; a key
# requirement of this test is that we detect and repair a missing
# servo label.


DOC = """
Test and diagnose the status of a servo attached to a given host.
"""

# We'd like to do the following, so that this test can be run
# from a desktop, but the code below will cause the test not
# to run if the servo is down, which prevents diagnosis.

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

def run(machine):
    host = hosts.create_host(machine)
    job.run_test("infra_ServoDiagnosis", host=host)

parallel_simple(run, machines)
