# Copyright 2019 The ChromiumOS Authors
# 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 = "seancarpenter, waihong"
NAME = "firmware_FAFTRPC.updater"
METADATA = {
    "contacts": [
        "chromeos-faft@google.com",
        "seancarpenter@google.com",
        "waihong@chromium.org",
    ],
    "bug_component": "b:792402",  # ChromeOS > Platform > Enablement > Firmware > FAFT
    "criteria": "Verify that the RPC system, and all updater RPCs, work as expected",
}
ATTRIBUTES = "suite:faft_smoke"
DEPENDENCIES = "servo_state:WORKING"
TIME = "SHORT"
TEST_TYPE = "server"

DOC = """
This test checks that all RPC functions on the updater subsystem are connected,
and that they roughly work as expected.

"""

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


def run_faftrpc(machine):
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test(
        "firmware_FAFTRPC",
        host=host,
        cmdline_args=args,
        disable_sysinfo=True,
        category_under_test="updater",
        tag="updater",
    )


parallel_simple(run_faftrpc, machines)
