[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] Test suspend and resume cycles of the TPM front- and backend.



# HG changeset patch
# User emellor@xxxxxxxxxxxxxxxxxxxxxx
# Node ID e36f95b43bf1c3e04eea31d10db5bb2d0db6eefe
# Parent  b78cab886a1e12b7c75e9623b4c4f8b3da2a6525
Test suspend and resume cycles of the TPM front- and backend.
Now that sysfs is mounted in the RAM disk of the test environment, the
test code does not need to do this anymore. This patch also simplifies
previous tests and the APIs used there. If prerequisites are not met
(vtpm manager not running) the patch will 'skip'.

Signed-off-by: Stefan Berger <stefanb@xxxxxxxxxx>

diff -r b78cab886a1e -r e36f95b43bf1 
tools/xm-test/tests/vtpm/01_vtpm-list_pos.py
--- a/tools/xm-test/tests/vtpm/01_vtpm-list_pos.py      Tue Mar 21 00:19:24 2006
+++ b/tools/xm-test/tests/vtpm/01_vtpm-list_pos.py      Tue Mar 21 00:28:29 2006
@@ -1,18 +1,20 @@
 #!/usr/bin/python
 
 # Copyright (C) International Business Machines Corp., 2006
-# Author: Stefan Berger <stefanb@xxxxxxxxxx)
+# Author: Stefan Berger <stefanb@xxxxxxxxxx>
 
 # Positive Test: create domain with virtual TPM attached at build time,
 #                verify list
 
 
 from XmTestLib import *
+import commands
+import os
 
 def vtpm_cleanup(domName):
-       # Since this is only a temporary domain I clean up the domain from the
-       # virtual TPM directory
-       traceCommand("/etc/xen/scripts/vtpm-delete %s" % domName)
+    # Since this is only a temporary domain I clean up the domain from the
+    # virtual TPM directory
+    os.system("/etc/xen/scripts/vtpm-delete %s" % domName)
 
 if ENABLE_HVM_SUPPORT:
     SKIP("vtpm-list not supported for HVM domains")
diff -r b78cab886a1e -r e36f95b43bf1 
tools/xm-test/tests/vtpm/02_vtpm-cat_pcrs.py
--- a/tools/xm-test/tests/vtpm/02_vtpm-cat_pcrs.py      Tue Mar 21 00:19:24 2006
+++ b/tools/xm-test/tests/vtpm/02_vtpm-cat_pcrs.py      Tue Mar 21 00:28:29 2006
@@ -1,28 +1,30 @@
 #!/usr/bin/python
 
 # Copyright (C) International Business Machines Corp., 2006
-# Author: Stefan Berger <stefanb@xxxxxxxxxx)
+# Author: Stefan Berger <stefanb@xxxxxxxxxx>
 
 # Positive Test: create domain with virtual TPM attached at build time,
 #                check list of pcrs
 
 from XmTestLib import *
+import commands
+import os
+import os.path
 
 def vtpm_cleanup(domName):
-       # Since this is only a temporary domain I clean up the domain from the
-       # virtual TPM directory
-       traceCommand("/etc/xen/scripts/vtpm-delete %s" % domName)
+    # Since this is only a temporary domain I clean up the domain from the
+    # virtual TPM directory
+    os.system("/etc/xen/scripts/vtpm-delete %s" % domName)
 
 if ENABLE_HVM_SUPPORT:
     SKIP("vtpm-list not supported for HVM domains")
 
-status, output = traceCommand("ls /dev/tpm0")
-if re.search("No such file or directory",output):
+if os.path.exists("/dev/tpm0") == False:
     SKIP("This machine has no hardware TPM; cannot run this test")
 
-status, output = traceCommand("ps aux | grep vtpm_manager | grep -v grep")
+output = commands.getoutput("ps aux | grep vtpm_manager | grep -v grep")
 if output == "":
-    FAIL("virtual TPM manager must be started to run this test")
+    SKIP("virtual TPM manager must be started to run this test")
 
 # vtpm manager has been detected
 config = {"vtpm":"instance=1,backend=0"}
@@ -46,20 +48,10 @@
 
 try:
     console.sendInput("input")
-    run = console.runCmd("ls /sys")
 except ConsoleError, e:
     saveLog(console.getHistory())
     vtpm_cleanup(domName)
     FAIL(str(e))
-
-if re.search("No such file",run["output"]):
-    try:
-        run = console.runCmd("mkdir /sys")
-        run = console.runCmd("mount -t sysfs /sys /sys")
-    except ConsoleError, e:
-        saveLog(console.getHistory())
-        vtpm_cleanup(domName)
-        FAIL(str(e))
 
 try:
     run = console.runCmd("cat /sys/devices/platform/tpm_vtpm/pcrs")
diff -r b78cab886a1e -r e36f95b43bf1 tools/xm-test/tests/vtpm/Makefile.am
--- a/tools/xm-test/tests/vtpm/Makefile.am      Tue Mar 21 00:19:24 2006
+++ b/tools/xm-test/tests/vtpm/Makefile.am      Tue Mar 21 00:28:29 2006
@@ -2,7 +2,8 @@
 SUBDIRS =
 
 TESTS = 01_vtpm-list_pos.test \
-        02_vtpm-cat_pcrs.test
+        02_vtpm-cat_pcrs.test \
+        03_vtpm-susp_res.test
 
 XFAIL_TESTS =
 
diff -r b78cab886a1e -r e36f95b43bf1 
xen-unstable.hg/tools/xm-test/tests/vtpm/03_vtpm-susp_res.py
--- /dev/null   Tue Mar 21 00:19:24 2006
+++ b/xen-unstable.hg/tools/xm-test/tests/vtpm/03_vtpm-susp_res.py      Tue Mar 
21 00:28:29 2006
@@ -0,0 +1,120 @@
+#!/usr/bin/python
+
+# Copyright (C) International Business Machines Corp., 2006
+# Author: Stefan Berger <stefanb@xxxxxxxxxx>
+
+# Positive Test: create domain with virtual TPM attached at build time,
+#                check list of pcrs; suspend and resume the domain and
+#                check list of pcrs again
+
+from XmTestLib import *
+import commands
+import os
+import os.path
+
+def vtpm_cleanup(domName):
+    # Since this is only a temporary domain I clean up the domain from the
+    # virtual TPM directory
+    os.system("/etc/xen/scripts/vtpm-delete %s" % domName)
+
+if ENABLE_HVM_SUPPORT:
+    SKIP("vtpm-list not supported for HVM domains")
+
+if os.path.exists("/dev/tpm0") == False:
+    SKIP("This machine has no hardware TPM; cannot run this test")
+
+output = commands.getoutput("ps aux | grep vtpm_manager | grep -v grep")
+if output == "":
+    SKIP("virtual TPM manager must be started to run this test")
+
+# vtpm manager has been detected
+config = {"vtpm":"instance=1,backend=0"}
+domain = XmTestDomain(extraConfig=config)
+
+try:
+    domain.start()
+except DomainError, e:
+    if verbose:
+        print e.extra
+    vtpm_cleanup(domain.getName())
+    FAIL("Unable to create domain")
+
+domName = domain.getName()
+
+try:
+    console = XmConsole(domain.getName())
+except ConsoleError, e:
+    vtpm_cleanup(domName)
+    FAIL(str(e))
+
+try:
+    console.sendInput("input")
+except ConsoleError, e:
+    saveLog(console.getHistory())
+    vtpm_cleanup(domName)
+    FAIL(str(e))
+
+try:
+    run = console.runCmd("cat /sys/devices/platform/tpm_vtpm/pcrs")
+except ConsoleError, e:
+    saveLog(console.getHistory())
+    vtpm_cleanup(domName)
+    FAIL(str(e))
+
+if re.search("No such file",run["output"]):
+    FAIL("TPM frontend support not compiled into (domU?) kernel")
+
+console.closeConsole()
+
+try:
+    status, ouptut = traceCommand("xm save %s %s.save" %
+                                  (domName, domName),
+                                  timeout=30)
+except TimeoutError, e:
+    saveLog(console.getHistory())
+    vtpm_cleanup(domName)
+    FAIL(str(e))
+
+if status != 0:
+    saveLog(console.getHistory())
+    vtpm_cleanup(domName)
+    FAIL("xm save did not succeed")
+
+try:
+    status, ouptut = traceCommand("xm restore %s.save" %
+                                  (domName),
+                                  timeout=30)
+except TimeoutError, e:
+    os.remove("%s.save" % domName)
+    saveLog(console.getHistory())
+    vtpm_cleanup(domName)
+    FAIL(str(e))
+
+os.remove("%s.save" % domName)
+
+if status != 0:
+    saveLog(console.getHistory())
+    vtpm_cleanup(domName)
+    FAIL("xm restore did not succeed")
+
+try:
+    console = XmConsole(domain.getName())
+except ConsoleError, e:
+    vtpm_cleanup(domName)
+    FAIL(str(e))
+
+try:
+    run = console.runCmd("cat /sys/devices/platform/tpm_vtpm/pcrs")
+except ConsoleError, e:
+    saveLog(console.getHistory())
+    vtpm_cleanup(domName)
+    FAIL(str(e))
+
+console.closeConsole()
+
+domain.stop()
+
+vtpm_cleanup(domName)
+
+if not re.search("PCR-00:",run["output"]):
+       FAIL("Virtual TPM is not working correctly on /dev/vtpm on backend 
side")

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.