Tony Breeds
2006-Oct-20 03:21 UTC
[Xen-devel] [PATCH 7/10][TOOLS][XM-TEST] Add ability to inspect messages from domain for arbitrary strings
Add ability to inspect messages from domain for arbitrary strings. Used on PowerPC to FAIL(), if the guest domain hits a BUG() and enters XMON. Signed-off-by: Tony Breeds <tony@bakeyournoodle.com> --- tools/xm-test/lib/XmTestLib/Console.py | 5 +++++ tools/xm-test/lib/XmTestLib/arch.py | 20 ++++++++++++++++++++ 2 files changed, 25 insertions(+) --- a/tools/xm-test/lib/XmTestLib/Console.py Thu Oct 19 12:00:21 2006 +1000 +++ b/tools/xm-test/lib/XmTestLib/Console.py Thu Oct 19 12:09:21 2006 +1000 @@ -31,6 +31,7 @@ import fcntl import fcntl import select +import arch from Test import * TIMEDOUT = 1 @@ -120,6 +121,7 @@ class XmConsole: def __getprompt(self, fd): timeout = 0 bytes = 0 + buffer = "" while timeout < 180: # eat anything while total bytes less than limit else raise RUNAWAY while (not self.limit) or (bytes < self.limit): @@ -130,6 +132,7 @@ class XmConsole: if self.debugMe: sys.stdout.write(foo) bytes += 1 + buffer += foo except Exception, exn: raise ConsoleError(str(exn)) else: @@ -137,6 +140,8 @@ class XmConsole: else: raise ConsoleError("Console run-away (exceeded %i bytes)" % self.limit, RUNAWAY) + # Check to see if the buffer contains anything interetsing + arch.checkBuffer(buffer) # press enter os.write(self.consoleFd, "\n") # look for prompt diff -r 2cc5afde2692 -r 6bad455e70de tools/xm-test/lib/XmTestLib/arch.py --- a/tools/xm-test/lib/XmTestLib/arch.py Thu Oct 19 12:00:21 2006 +1000 +++ b/tools/xm-test/lib/XmTestLib/arch.py Thu Oct 19 12:09:21 2006 +1000 @@ -25,6 +25,8 @@ import config import config import commands +from Test import * + BLOCK_ROOT_DEV = "hda" # This isn''t truly platform related but it makes the code tidier @@ -38,6 +40,9 @@ def getRdPath(): return rdpath # Begin: Intel ia32 and ia64 as well as AMD 32-bit and 64-bit processors +def ia_checkBuffer(buffer): + return + def ia_minSafeMem(): return 32 @@ -81,6 +86,19 @@ ia_HVMDefaults = {"memory" : # End : Intel ia32 and ia64 as well as AMD 32-bit and 64-bit processors # Begin: PowerPC +def ppc_checkBuffer(buffer): + checks = [ + {"pattern" : re.compile("^\d+:mon>\s*$", re.MULTILINE), + "message" : "domain trapped into XMON"}, + ] + + for i in range(0, len(checks)): + check=checks[i] + if check.get(''pattern'').search(buffer): + FAIL(check.get(''message'')) + + return + def ppc_minSafeMem(): return 64 @@ -116,6 +134,7 @@ if _arch == "x86" or _arch == "ia64": if _arch == "x86" or _arch == "ia64": minSafeMem = ia_minSafeMem getDefaultKernel = ia_getDefaultKernel + checkBuffer = ia_checkBuffer if config.ENABLE_HVM_SUPPORT: configDefaults = ia_HVMDefaults else: @@ -123,6 +142,7 @@ elif _arch == "powerpc": elif _arch == "powerpc": minSafeMem = ppc_minSafeMem getDefaultKernel = ppc_getDefaultKernel + checkBuffer = ppc_checkBuffer configDefaults = ppc_ParavirtDefaults else: raise ValueError, "Unknown architecture!" _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel