If the status returned is an errno value, then os_status will be set outside of the bounds of the 'rc' array in Reporter.py which will cause a KeyError exception. Find, message, and adjust - we're failing anyway. --- suites/libvirt-cim/main.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/suites/libvirt-cim/main.py b/suites/libvirt-cim/main.py index a4e33e6..e5f3526 100644 --- a/suites/libvirt-cim/main.py +++ b/suites/libvirt-cim/main.py @@ -23,12 +23,14 @@ # from time import time +from time import sleep from optparse import OptionParser import os import sys sys.path.append('../../lib') import TestSuite from CimTest.Globals import logger, log_param +from CimTest.ReturnCodes import PASS, FAIL, XFAIL, SKIP import commands from VirtLib import groups import ConfigParser @@ -274,6 +276,14 @@ def main(options, args): os_status = os.WEXITSTATUS(status) + # status should be from our test; however, if there's an OS level + # failure, it could be set to errno. But that's included in our + # output, so just set it to FAIL; otherwise, we get a KeyError + # in Reporter.py when trying to index it's 'rc' record + if os_status not in (PASS, FAIL, XFAIL, SKIP): + logger.error("Changing os_status from %d to FAIL", os_status) + os_status = FAIL + testsuite.print_results(test['group'], test['test'], os_status, output) exec_time = end_time - start_time @@ -282,6 +292,11 @@ def main(options, args): if options.print_exec_time: print_exec_time(testsuite, exec_time, " Test execution time:") + # Give ourselves a 3 second pause before running the next + # test to help ensure we have cleaned things up properly just + # in case the cimserver is a little slow to respond + sleep(3) + testsuite.debug("%s\n" % div) if options.print_exec_time: -- 1.8.1.4