# Copyright (c) 2016 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_TPMNotCorruptedDevMode"
PURPOSE = "Ensure kernel and fw version in TPM isn't corrupted in dev mode."
CRITERIA = "This test will fail if dev mode corrupts the kernel or fw version."
ATTRIBUTES = "suite:faft, suite:faft_bios, suite:faft_lv2"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"


DOC = """
This test requires a USB disk plugged-in, which contains a Chrome OS test
image (built by "build_image test"). On runtime, this test first switches
DUT to developer mode. It then checks the kernel and firmware version stored in
the TPM. It then boots into normal mode and checks the kernel and firmware
version in the TPM to ensure they weren't corrupted.
"""

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

def run_tpm_not_corrupted_dev_mode(machine):
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test("firmware_TPMNotCorruptedDevMode", host=host, cmdline_args=args,
                 disable_sysinfo=True, dev_mode=True, tag="dev")

parallel_simple(run_tpm_not_corrupted_dev_mode, machines)
