This will allow for adding of additional tests with out modifying the "code." One would just add the testname.py file to the test_dir and edit the comfig file. --- client/tests/kvm_runtest_2/kvm_runtest_2.py | 32 +++++++++++++++++++------- 1 files changed, 23 insertions(+), 9 deletions(-) diff --git a/client/tests/kvm_runtest_2/kvm_runtest_2.py b/client/tests/kvm_runtest_2/kvm_runtest_2.py index fda7282..b6477f5 100644 --- a/client/tests/kvm_runtest_2/kvm_runtest_2.py +++ b/client/tests/kvm_runtest_2/kvm_runtest_2.py @@ -2,6 +2,7 @@ import sys import os +import inspect import time import shelve import random @@ -21,26 +22,26 @@ class test_routine: class kvm_runtest_2(test.test): version = 1 + def setup(self): pass def initialize(self): - # Define the test routines corresponding to different values of the 'type' field + # directory where to look for tests + self.test_dir = os.path.join(self.bindir, "kvm_tests") + + # pre-defined the test routines corresponding to different values of the 'type' field self.test_routines = { - # type module name routine + # type module name routine name "steps": test_routine("kvm_guest_wizard", "run_steps"), "stepmaker": test_routine("stepmaker", "run_stepmaker"), - "boot": test_routine("kvm_tests", "run_boot"), - "migration": test_routine("kvm_tests", "run_migration"), - "yum_update": test_routine("kvm_tests", "run_yum_update"), - "autotest": test_routine("kvm_tests", "run_autotest"), "kvm_install": test_routine("kvm_install", "run_kvm_install"), - "linux_s3": test_routine("kvm_tests", "run_linux_s3"), } - + # Make it possible to import modules from the test's bindir sys.path.append(self.bindir) - + sys.path.append(self.test_dir) + def run_once(self, params): import kvm_log import kvm_utils @@ -74,6 +75,12 @@ class kvm_runtest_2(test.test): type = params.get("type") routine_obj = self.test_routines.get(type) # If type could not be found in self.test_routines... + # look for test in kvm_tests directory, where type = 'testname' + # defined in file 'testname'.py and test routine method run_'testname' + if os.path.isfile(os.path.join(self.test_dir,type+".py")): + module_name = type + routine_name = "run_"+module_name + routine_obj = test_routine(moudule_name,routine_name) if not routine_obj: message = "Unsupported test type: %s" % type kvm_log.error(message) @@ -83,6 +90,13 @@ class kvm_runtest_2(test.test): # Dynamically import the module module = __import__(routine_obj.module_name) # Get the needed routine + try: + inspect.isfunction(eval("module."+routine_obj.routine_name)) + except Exception, e: + kvm_log.error("Test failed: %s" % e) + kvm_log.error("could not load:%s" % eval("module."+routine_obj.routine_name)) + raise + routine_obj.routine = eval("module." + routine_obj.routine_name) # Preprocess -- 1.6.0.6 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html