| # 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) |