From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefan Berger Subject: [PATCH] [xm-test] Repost of tpm driver suspend/resume test Date: Wed, 15 Mar 2006 18:57:34 -0500 Message-ID: <1142467055.4963.1.camel@localhost.localdomain> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-fNmexdnnHjinurWutmr9" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com, ewan@xensource.com List-Id: xen-devel@lists.xenproject.org --=-fNmexdnnHjinurWutmr9 Content-Type: text/plain Content-Transfer-Encoding: 7bit This is is a repost of a previously posted patch to 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 --=-fNmexdnnHjinurWutmr9 Content-Disposition: attachment; filename=xmtest_vtpm_suspres.diff Content-Type: text/x-patch; name=xmtest_vtpm_suspres.diff; charset=UTF-8 Content-Transfer-Encoding: 7bit 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: --=-fNmexdnnHjinurWutmr9 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --=-fNmexdnnHjinurWutmr9--