Index: root/xen-unstable.hg/tools/xm-test/tests/vtpm/05_vtpm-loc_migr.py =================================================================== --- /dev/null +++ root/xen-unstable.hg/tools/xm-test/tests/vtpm/05_vtpm-loc_migr.py @@ -0,0 +1,100 @@ +#!/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; locally migrate the domain and +# check list of pcrs again +# This test does local (non-live) migration. + +from XmTestLib import * +from vtpm_utils import * +import commands +import os +import os.path + +config = {"vtpm":"instance=1,backend=0"} +domain = XmTestDomain(extraConfig=config) +consoleHistory = "" + +try: + console = domain.start() +except DomainError, e: + if verbose: + print e.extra + vtpm_cleanup(domain.getName()) + FAIL("Unable to create domain") + +domName = domain.getName() + +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"]): + vtpm_cleanup(domName) + FAIL("TPM frontend support not compiled into (domU?) kernel") + +consoleHistory = console.getHistory() +domain.closeConsole() + +old_domid = domid(domName) + +loop = 0 +while loop < 3: + try: + status, ouptut = traceCommand("xm migrate %s localhost" % + domName, + timeout=90) + except TimeoutError, e: + saveLog(consoleHistory) + vtpm_cleanup(domName) + FAIL(str(e)) + + if status != 0: + saveLog(consoleHistory) + vtpm_cleanup(domName) + FAIL("xm migrate did not succeed. External device migration activated?") + + + domName = domain.getName() + new_domid = domid(domName) + + if (old_domid == new_domid): + vtpm_cleanup(domName) + FAIL("xm migrate failed, domain id is still %s (loop=%d)" % + (old_domid,loop)) + + try: + console = domain.getConsole() + 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)) + loop += 1 + +domain.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: root/xen-unstable.hg/tools/xm-test/tests/vtpm/Makefile.am =================================================================== --- root.orig/xen-unstable.hg/tools/xm-test/tests/vtpm/Makefile.am +++ root/xen-unstable.hg/tools/xm-test/tests/vtpm/Makefile.am @@ -3,7 +3,8 @@ SUBDIRS = TESTS = 01_vtpm-list_pos.test \ 02_vtpm-cat_pcrs.test \ 03_vtpm-susp_res.test \ - 04_vtpm-loc_migr.test + 04_vtpm-loc_migr.test \ + 05_vtpm-loc_migr.test XFAIL_TESTS = Index: root/xen-unstable.hg/tools/xm-test/tests/vtpm/04_vtpm-loc_migr.py =================================================================== --- root.orig/xen-unstable.hg/tools/xm-test/tests/vtpm/04_vtpm-loc_migr.py +++ root/xen-unstable.hg/tools/xm-test/tests/vtpm/04_vtpm-loc_migr.py @@ -6,6 +6,7 @@ # Positive Test: create domain with virtual TPM attached at build time, # check list of pcrs; locally migrate the domain and # check list of pcrs again +# This test does local live migration. from XmTestLib import * from vtpm_utils import * @@ -50,40 +51,44 @@ domain.closeConsole() old_domid = domid(domName) -try: - status, ouptut = traceCommand("xm migrate -l %s localhost" % - domName, - timeout=90) -except TimeoutError, e: - saveLog(consoleHistory) - vtpm_cleanup(domName) - FAIL(str(e)) - -if status != 0: - saveLog(consoleHistory) - vtpm_cleanup(domName) - FAIL("xm migrate did not succeed. External device migration activated?") - - -domName = domain.getName() -new_domid = domid(domName) - -if (old_domid == new_domid): - vtpm_cleanup(domName) - FAIL("xm migrate failed, domain id is still %s" % old_domid) - -try: - console = domain.getConsole() -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)) +loop = 0 +while loop < 3: + try: + status, ouptut = traceCommand("xm migrate -l %s localhost" % + domName, + timeout=90) + except TimeoutError, e: + saveLog(consoleHistory) + vtpm_cleanup(domName) + FAIL(str(e)) + + if status != 0: + saveLog(consoleHistory) + vtpm_cleanup(domName) + FAIL("xm migrate did not succeed. External device migration activated?") + + + domName = domain.getName() + new_domid = domid(domName) + + if (old_domid == new_domid): + vtpm_cleanup(domName) + FAIL("xm migrate failed, domain id is still %s (loop=%d)" % + (old_domid,loop)) + + try: + console = domain.getConsole() + 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)) + loop += 1 domain.closeConsole()