Index: xen/xen-unstable.hg/tools/xm-test/tests/vtpm/03_vtpm-susp_res.py =================================================================== --- /dev/null +++ xen/xen-unstable.hg/tools/xm-test/tests/vtpm/03_vtpm-susp_res.py @@ -0,0 +1,120 @@ +#!/usr/bin/python + +# Copyright (C) International Business Machines Corp., 2006 +# Author: Stefan Berger + +# 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") Index: xen/xen-unstable.hg/tools/xm-test/tests/vtpm/Makefile.am =================================================================== --- xen.orig/xen-unstable.hg/tools/xm-test/tests/vtpm/Makefile.am +++ xen/xen-unstable.hg/tools/xm-test/tests/vtpm/Makefile.am @@ -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 = Index: xen/xen-unstable.hg/tools/xm-test/tests/vtpm/01_vtpm-list_pos.py =================================================================== --- xen.orig/xen-unstable.hg/tools/xm-test/tests/vtpm/01_vtpm-list_pos.py +++ xen/xen-unstable.hg/tools/xm-test/tests/vtpm/01_vtpm-list_pos.py @@ -1,18 +1,20 @@ #!/usr/bin/python # Copyright (C) International Business Machines Corp., 2006 -# Author: Stefan Berger # 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") Index: xen/xen-unstable.hg/tools/xm-test/tests/vtpm/02_vtpm-cat_pcrs.py =================================================================== --- xen.orig/xen-unstable.hg/tools/xm-test/tests/vtpm/02_vtpm-cat_pcrs.py +++ xen/xen-unstable.hg/tools/xm-test/tests/vtpm/02_vtpm-cat_pcrs.py @@ -1,28 +1,30 @@ #!/usr/bin/python # Copyright (C) International Business Machines Corp., 2006 -# Author: Stefan Berger # 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: