# Copyright 2017 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_CompareChipFwToShellBall"
PURPOSE = "Compare the chip firmware versions to those in the shellball"
CRITERIA = "This test will pass if installed and available firmware match."
DEPENDENCIES = "servo_state:WORKING"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"
JOB_RETRIES = 0

DOC = """
This test compares the installed chip firmware versions to those in the
shallball.  If they no not match, it will fail.
"""

from autotest_lib.client.common_lib import utils

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

def run_compare_chip(machine):
    # Setup the client machine.
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test('firmware_CompareChipFwToShellBall',
                 host=host, cmdline_args=args)


parallel_simple(run_compare_chip, machines)
