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.
fixed typo
---
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..6420191 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(module_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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html