# Copyright (c) 2010 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.

AUTHOR = "Chrome OS Team"
NAME = "firmware_ShellBall"
TIME = "LONG"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"

DOC = """
chromeos-firmwareupdate functional testing.

This script first copies shellball to DUT and runs all functional tests.

Syntax:
   ./run_remote_tests.sh --remote=<IP> -a "xml_config=<xml_config_file>
   shellball_path=<shellball_directory> shellball_name=<shellball_name>
   servo_serial=<serial number>" firmware_ShellBall/control
"""
from autotest_lib.client.common_lib import error

# Convert autoserv args to something usable.
opts = dict([[k, v] for (k, _, v) in [x.partition('=') for x in args]])

def run_shellball(machine):
    # Verify bios path arg.
    if 'shellball_path' and 'shellball_name' not in opts:
        raise error.TestFail('Invalid shellball information.')
    # Setup the client machine.
    host = hosts.create_host(machine)
    job.run_test("firmware_ShellBall", host=host,
                 cmdline_args=args,
                 shellball_path=opts['shellball_path'],
                 shellball_name=opts['shellball_name'],
                 use_faft=True, disable_sysinfo=True)

parallel_simple(run_shellball, machines)
