[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[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@xxxxxxxxxxxxxxxxxx>
---

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@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.