# Copyright (c) 2013 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_TPMVersionCheck"
PURPOSE = "Crossystem reports tpm version correctly"
CRITERIA = "This test will fail if crossystem reports tpm version incorrectly"
SUITE = "faft,faft_ec,faft_ec_wp"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"

DOC = """
This test will fail if crossystem does not report correctly.
"""

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

def run_tpmcheck(machine):
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test("firmware_TPMVersionCheck", host=host, cmdline_args=args,
                 disable_sysinfo=True, dev_mode=False, ec_wp=True,
                 tag="ec_wp")

parallel_simple(run_tpmcheck, machines)
