From 2845b97df68da9387c400fb1eca5f6dbce1ddefa Mon Sep 17 00:00:00 2001 From: Luigi Semenzato Date: Fri, 8 Oct 2010 11:33:07 -0700 Subject: [PATCH] Autotest that the TPM is in a sane state. Change-Id: I2b0a692e9b6a6ef4df59f3555fc20f3abef28cd8 BUG=6061 TEST=ran on latest dogfood Review URL: http://codereview.chromium.org/3530018 --- autotest/client/hardware_TPMCheck/control | 18 +++++++ .../hardware_TPMCheck/hardware_TPMCheck.py | 47 +++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 autotest/client/hardware_TPMCheck/control create mode 100644 autotest/client/hardware_TPMCheck/hardware_TPMCheck.py diff --git a/autotest/client/hardware_TPMCheck/control b/autotest/client/hardware_TPMCheck/control new file mode 100644 index 0000000000..8e22a7fd84 --- /dev/null +++ b/autotest/client/hardware_TPMCheck/control @@ -0,0 +1,18 @@ +# Copyright (c) 2010 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. + +NAME = "hardware_TPMCheck" +AUTHOR = "The Chromium OS Authors" +PURPOSE = "Basic check of the TPM state" +CRITERIA = "Check that the TPM is in the expected state for use in Chrome OS." +TIME = "SHORT" +TEST_CATEGORY = "Functional" +TEST_CLASS = "Hardware" +TEST_TYPE = "Client" + +DOC = """ + A basic sanity check of the state of the TPM (Trusted Platform Module) +""" + +job.run_test('hardware_TPMCheck') diff --git a/autotest/client/hardware_TPMCheck/hardware_TPMCheck.py b/autotest/client/hardware_TPMCheck/hardware_TPMCheck.py new file mode 100644 index 0000000000..f2fae7e968 --- /dev/null +++ b/autotest/client/hardware_TPMCheck/hardware_TPMCheck.py @@ -0,0 +1,47 @@ +# Copyright (c) 2010 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. + +import os, re +from autotest_lib.client.bin import test, utils +from autotest_lib.client.common_lib import error + +def dict_from_command(command): + dict = {} + out = os.popen(command) + for linecr in out.readlines(): + line = linecr.strip() + match = re.match("([^ ]+) (.*)", line) + k = match.group(1) + v = match.group(2) + dict[k] = v + return dict + +def expect(d, key, value): + if (d[key] != value): + utils.system("start tcsd", ignore_status=True) + raise error.TestError("expecting %s = %s, receiving %s = %s" % + (key, value, key, d[key])) + +class hardware_TPMCheck(test.test): + version = 1 + + def run_once(self): + utils.system("stop tcsd", ignore_status=True) + + d = dict_from_command("tpmc getvf"); + expect(d, "deactivated", "0") + expect(d, "physicalPresence", "0") + expect(d, "physicalPresenceLock", "1") + expect(d, "bGlobalLock", "1") + + d = dict_from_command("tpmc getpf"); + expect(d, "disable", "0") + expect(d, "ownership", "1") + expect(d, "deactivated", "0") + expect(d, "physicalPresenceHWEnable", "0") + expect(d, "physicalPresenceCMDEnable", "1") + expect(d, "physicalPresenceLifetimeLock", "1") + expect(d, "nvLocked", "1") + + utils.system("start tcsd", ignore_status=True)