普通文本  |  41行  |  1.43 KB

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

from autotest_lib.client.bin import test, utils
from autotest_lib.client.common_lib import error
from autotest_lib.client.cros import service_stopper


class kernel_TPMStress(test.test):
    "TPM communication stress test"
    version = 1


    def initialize(self):
        self._services = service_stopper.ServiceStopper(['cryptohomed',
                                                         'chapsd',
                                                         'attestationd',
                                                         'tpm_managerd',
                                                         'tcsd', 'trunksd'])
        self._services.stop_services()


    def run_once(self):
        # On a Mario, running the test with 1000 iterations takes 89 seconds,
        # and with 2000 iterations 163 seconds, i.e. the incremental time for 1
        # iteration is 74ms.
        n_iterations = 3000

        try:
            for iteration in range(n_iterations):
                utils.system("tpmc getpf")
        except Exception:
            raise error.TestError(("TPM communication error at " +
                                   "iteration %d of %d") %
                                  (iteration, n_iterations))


    def cleanup(self):
        self._services.restore_services()