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@us.ibm.com>
This commit is contained in:
emellor@leeni.uk.xensource.com committed 2006-03-21 01:28:29 +01:00
1 parent 452c180f44
commit 3a9669c79f
4 files changed
+138 -23

No files matched your search

+6 -4
View File
@@ -1,18 +1,20 @@
#!/usr/bin/python
# Copyright (C) International Business Machines Corp., 2006
# Author: Stefan Berger <stefanb@us.ibm.com)
# Author: Stefan Berger <stefanb@us.ibm.com>
# 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")
+10 -18
View File
@@ -1,28 +1,30 @@
#!/usr/bin/python
# Copyright (C) International Business Machines Corp., 2006
# Author: Stefan Berger <stefanb@us.ibm.com)
# Author: Stefan Berger <stefanb@us.ibm.com>
# 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,21 +48,11 @@ except ConsoleError, e:
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")
except ConsoleError, e:
+2 -1
View File
@@ -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 =
@@ -0,0 +1,120 @@
#!/usr/bin/python
# Copyright (C) International Business Machines Corp., 2006
# Author: Stefan Berger <stefanb@us.ibm.com>
# 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")
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.