# 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.

from autotest_lib.server import utils

AUTHOR = "Chrome OS Team"
NAME = "firmware_BaseECKeyboard"
PURPOSE = "Servo-based BaseEC keyboard test"
CRITERIA = "This test will fail if BaseEC keyboard misbehaved."
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"

DOC = """
The base should be connected to the servo v4 board through an extra
micro-servo. It talks to the base EC to emulate key-press. It checks
if DUT can correctly receive the keyboard events.
"""

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

def run_baseeckeyboard(machine):
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test("firmware_BaseECKeyboard", host=host, cmdline_args=args,
                 disable_sysinfo=True)

parallel_simple(run_baseeckeyboard, machines)
