# Copyright 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 = "servohost_Reboot.force_reboot"
PURPOSE = "Perform a safe forced reboot of a servo host."
TIME = "SHORT"
TEST_CATEGORY = "General"
TEST_TYPE = "server"

DOC = """
This test will lock all the duts that share the same servo host to ensure there
is no disruption to the duts when the servo host is rebooted.  This is to give
a safe avenue to reboot a servo host responsible for multiple duts.
"""

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)
    job.run_test('servohost_Reboot', host=host, force_reboot=True)

parallel_simple(run, machines)
