# Copyright (c) 2011 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_ECWakeSource"
PURPOSE = "Servo based EC wake source test"
CRITERIA = "This test will fail if EC wake source misbehalved."
ATTRIBUTES = "suite:faft, suite:faft_ec, suite:faft_ec_au_1, suite:faft_ec_au_2, suite:faft_ec_au_3, suite:faft_ec3po, suite:faft_ec_tot"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"
DEPENDENCIES = "ec:cros"
JOB_RETRIES = 4

DOC = """
This test check the functionality of EC waking host from suspend. This includes
power button and lid switch.
"""

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

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

parallel_simple(run_ecwakesource, machines)
