If using a kernel with xmon enabled, when triggering a BUG() we enter
xmon. This effectively stalls the xm-tests process. This patch teaches
xm-test to recognise the xmon prompt and FAIL the test.
This patch requires applies on top of my previous xm-test patches
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(+)
---
diff -r 21738b37ac32 tools/xm-test/lib/XmTestLib/Console.py
--- a/tools/xm-test/lib/XmTestLib/Console.py Wed Oct 04 14:54:10 2006 +1000
+++ b/tools/xm-test/lib/XmTestLib/Console.py Thu Oct 05 13:15:49 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 21738b37ac32 tools/xm-test/lib/XmTestLib/arch.py
--- a/tools/xm-test/lib/XmTestLib/arch.py Wed Oct 04 14:54:10 2006 +1000
+++ b/tools/xm-test/lib/XmTestLib/arch.py Thu Oct 05 13:15:49 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!"
Yours Tony
linux.conf.au http://linux.conf.au/ || http://lca2007.linux.org.au/
Jan 15-20 2007 The Australian Linux Technical Conference!
_______________________________________________
Xen-ppc-devel mailing list
Xen-ppc-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ppc-devel
|