# Copyright 2014 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 = "jwerner"
NAME = "firmware_EventLog"
PURPOSE = "Ensure eventlog is written correctly on boot and suspend/resume."
CRITERIA = "This test will fail if entries are missing or have a bad timestamp."
ATTRIBUTES = "suite:faft_bios, suite:faft_bios_au_1, suite:faft_bios_au_2, suite:faft_bios_au_3, suite:faft_lv4, suite:faft_normal, suite:faft_bios_ec3po, suite:faft_bios_tot"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"
JOB_RETRIES = 4

DOC = """
This test ensures that correct event log entries are written after a boot and
a suspend-resume cycle.
"""

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

def run_eventlog(machine):
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test("firmware_EventLog", host=host, cmdline_args=args,
                 disable_sysinfo=True, dev_mode=False)

parallel_simple(run_eventlog, machines)
