blob: bd8931f97ab550aefbbed5c071e1c14f4e15413e [file] [log] [blame] [edit]
# 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.
import datetime
from autotest_lib.client.bin import test
from autotest_lib.client.common_lib import error, smogcheck_tpm, smogcheck_util
class hardware_TPMtspi(test.test):
version = 1
def setup(self):
smogcheck_util.enableI2C()
def _prepareTpmController(self):
"""Prepare a TpmController instance for use.
Returns:
an operational TpmControler instance, ready to use.
"""
try:
return smogcheck_tpm.TpmController()
except smogcheck_tpm.SmogcheckError, e:
raise error.TestFail('Error creating a TpmController: %s', e)
def run_once(self):
self.tpm_obj = self._prepareTpmController()
start_time = datetime.datetime.now()
try:
self.tpm_obj.setupContext()
self.tpm_obj.getTpmVersion()
self.tpm_obj.runTpmSelfTest()
# TODO(tgao): uncomment to enable.
#self.tpm_obj.takeTpmOwnership()
# TODO(tgao): uncomment to enable.
#self.tpm_obj.clearTpm()
# TODO(tgao): uncomment to enable.
#self.tpm_obj.setTpmActive('status')
# TODO(tgao): uncomment to enable.
#self.tpm_obj.setTpmActive('deactivate')
# TODO(tgao): uncomment to enable.
#self.tpm_obj.setTpmActive('activate')
# TODO(tgao): uncomment to enable.
#self.tpm_obj.setTpmActive('temp')
# TODO(tgao): uncomment to enable.
#self.tpm_obj.setTpmClearable('status')
# TODO(tgao): uncomment to enable.
#self.tpm_obj.setTpmClearable('owner')
# TODO(tgao): uncomment to enable.
#self.tpm_obj.setTpmClearable('force')
except smogcheck_tpm.SmogcheckError, e:
raise error.TestFail('Error: %r' % e)
finally:
# Close TPM context
if self.tpm_obj.closeContext():
raise error.TestFail('Error closing tspi context')
end_time = datetime.datetime.now()
smogcheck_util.computeTimeElapsed(end_time, start_time)