Index: autotest/server/hardware_TPMFirmwareServer/hardware_TPMFirmwareServer.py |
diff --git a/autotest/server/hardware_TPMFirmwareServer/hardware_TPMFirmwareServer.py b/autotest/server/hardware_TPMFirmwareServer/hardware_TPMFirmwareServer.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ad8b28ab1262d4252c058915ab6a31859e5efd21 |
--- /dev/null |
+++ b/autotest/server/hardware_TPMFirmwareServer/hardware_TPMFirmwareServer.py |
@@ -0,0 +1,71 @@ |
+# 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 logging |
+import os |
+import shutil |
+import sys |
+from autotest_lib.server import test, autotest |
+from autotest_lib.client.bin import utils |
+from autotest_lib.client.common_lib import error |
+ |
+class hardware_TPMFirmwareServer(test.test): |
+ """ |
+ Test of TPM functionality needed in firmware (server side of the test). |
+ See also client/site_tests/hardware_TPMFirmware. The server side of the |
+ test is used to coordinate the multiple reboots needed to bring the TPM to |
+ a new state (for instance between owned and unowned). |
+ """ |
+ version = 1 |
+ n_client_reboots = 0 |
+ client_at = None |
+ |
+ # Run the client subtest named [subtest]. |
+ def tpm_run(self, subtest, ignore_status=False): |
+ self.client_at.run_test(self.client_test, subtest=subtest) |
+ cstatus = self.job.get_state("client_status") |
+ logging.info("server: client status = %s", cstatus) |
+ self.job.set_state("client_status", None) |
+ if not ignore_status and cstatus != 0: |
+ error.TestFail("client subtest %s failed with status %s" % |
+ (subtest, cstatus)) |
+ return cstatus |
+ |
+ |
+ def reboot_client(self): |
+ # Reboot the client |
+ logging.info('TPMFirmwareServer: rebooting %s number %d' % |
+ (self.client.hostname, self.n_client_reboots)) |
+ self.client.reboot() |
+ self.n_client_reboots += 1 |
+ |
+ |
+ def run_once(self, host=None): |
+ self.client = host |
+ self.client_at = autotest.Autotest(self.client) |
+ self.client_test = 'hardware_TPMFirmware' |
+ |
+ self.job.set_state("client_status", None) |
+ |
+ # Set up the client in the unowned state. |
+ self.reboot_client() |
+ self.tpm_run("tpmtest_clear", ignore_status=True) |
+ |
+ self.reboot_client() |
+ self.tpm_run("tpmtest_enable", ignore_status=True) |
+ |
+ self.reboot_client() |
+ self.tpm_run("tpmtest_readonly") |
+ |
+ self.reboot_client() |
+ self.tpm_run("tpmtest_globallock") |
+ |
+ self.reboot_client() |
+ self.tpm_run("takeownership") |
+ |
+ self.reboot_client() |
+ self.tpm_run("tpmtest_readonly") |
+ |
+ self.reboot_client() |
+ self.tpm_run("tpmtest_globallock") |