# 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.client.common_lib import utils

AUTHOR = "Chrome OS Team"
NAME = "platform_InstallRecoveryImage.local"
TIME = "MEDIUM"
TEST_CATEGORY = "Install"
TEST_CLASS = "platform"
TEST_TYPE = "server"

DOC = """
This test installs a recovery image that's already on the usb stick attached to
a servo onto a servo-connected DUT.
This is useful for testing the recovery process and imaging servo-connected
Devices under Test (DUTs).
Here is the command to install a recovery image;
test_that --board=<board name> <IP addres> platform_InstallRecoveryImage.local
"""

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

def run(machine):
    # Setup the client machine.
    host = hosts.create_host(machine, servo_args=servo_args)
    job.fast = True
    job.run_test("platform_InstallRecoveryImage", host=host,
                 disable_sysinfo=True, image=None, local=True)

parallel_simple(run, machines)
