blob: cc3581614a9d3964db592061bd776c4c5f7fa5f8 [file] [log] [blame]
# 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
class hardware_TPM(test.test):
version = 1
preserve_srcdir = True
# Tests that we don't want to run for various reasons.
exclusions = {'context': r'GetRegisteredKeys.*|LoadKeyByUUID03|'
r'UnregisterKey03',
'hash': r'TickStampBlob.*',
'init': r'.*',
'nv': r'DefineSpace04',
'tpm': r'GetEventLog.*|CertifySelfTest.*|SetStatus.*',
'transport': r'GetPubEndorsementKey.*|NV_WriteValue.*|'
r'NV_ReadValue.*|Key_UnloadKey.*|'
r'Maintenance.*|VerifyDelegation.*|'
r'GetAuditDigest.*|OwnerGetSRKPubKey.*|'
r'SetOperatorAuth.*|SetStatus.*',
'tspi': r'ChangeAuthAsym.*'}
# Tests that require TPM owner credentials.
owner_required = {'context': r'CloseSignTransport.*',
'cmk': r'.*',
'delegation': r'.*',
'key': r'CreateMigrationBlob.*|ConvertMigrationBlob.*',
'nv': r'.*',
'policy': r'policy_check_lifetime.*',
'transport': r'.*',
'tpm': r'AuthorizeMigrationTicket.*|'
r'CollateIdentityRequest.*|'
r'CreateMaintenanceArchive.*|Delegate.*|'
r'DirWrite.*|GetAuditDigest.*|'
r'GetPubEndorsementKey.*|GetStatus.*|'
r'KeyControlOwner.*|KillMaintenanceFeature.*|'
r'OwnerGetSRKPubKey.*|TakeOwnership.*',
'tspi': r'ChangeAuth05.*|ChangeAuth06.*|'
r'SetAttribUint3208.*'}
def setup(self):
os.chdir(self.srcdir)
utils.make('clean')
utils.make('all')
def run_once(self, suite, owner_secret, test_filter):
excluded_tests_re = None
owner_tests_re = None
test_filter_re = None
if suite in self.exclusions:
excluded_tests_re = re.compile(self.exclusions[suite])
if suite in self.owner_required:
owner_tests_re = re.compile(self.owner_required[suite])
if test_filter:
test_filter_re = re.compile(test_filter)
if owner_secret:
os.environ['TESTSUITE_OWNER_SECRET'] = owner_secret
exclude_owner = not owner_secret
suite_path = '%s/src/tests/%s' % (self.bindir, suite)
tests = sorted(os.listdir(suite_path))
for test in tests:
# Skip excluded tests.
if excluded_tests_re and excluded_tests_re.search(test):
continue
# Skip tests requiring an owner secret if we don't have one.
if exclude_owner and owner_tests_re and owner_tests_re.search(test):
continue
# Skip filtered tests.
if test_filter_re and not test_filter_re.search(test):
continue
utils.system('%s/%s -v 1.2 1>&2' % (suite_path, test))