1# Copyright 2018 The Chromium OS Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5from autotest_lib.client.common_lib import error 6from autotest_lib.client.common_lib.cros import tpm_utils 7from autotest_lib.server import autotest 8from autotest_lib.server import test 9 10 11class platform_CryptohomeTpmLiveTestServer(test.test): 12 """A test that runs platform_CryptohomeTpmLiveTest and clears the TPM as 13 necessary.""" 14 version = 1 15 16 def run_once(self, host=None): 17 self.client = host 18 19 # Skip the test if the TPM is unavailable. 20 tpm_status = tpm_utils.TPMStatus(self.client) 21 if 'Enabled' not in tpm_status: 22 raise error.TestError('Error obtaining TPM enabled state. Status ' 23 'returned by cryptohome: ' + str(tpm_status)) 24 if not tpm_status['Enabled']: 25 return 26 27 # Clear the TPM, so that the client test is able to obtain the TPM owner 28 # password. 29 tpm_utils.ClearTPMOwnerRequest(self.client, wait_for_ready=True) 30 31 # Run the client test which executes the cryptohome's TPM live test. 32 autotest.Autotest(self.client).run_test( 33 'platform_CryptohomeTpmLiveTest', check_client_result=True) 34 35 # Clean the TPM up, so that the TPM state clobbered by the TPM live 36 # tests doesn't affect subsequent tests. 37 tpm_utils.ClearTPMOwnerRequest(self.client) 38