From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Huff Subject: [PATCH] Modified kvm_runtest_2.py to look for tests in kvm_tests/ Date: Tue, 28 Apr 2009 17:48:46 -0400 Message-ID: <1240955328-23358-2-git-send-email-dhuff@redhat.com> References: <1240955328-23358-1-git-send-email-dhuff@redhat.com> Cc: David Huff To: kvm@vger.kernel.org Return-path: Received: from mx2.redhat.com ([66.187.237.31]:58866 "EHLO mx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753720AbZD1VtY (ORCPT ); Tue, 28 Apr 2009 17:49:24 -0400 Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id n3SLnO1i004201 for ; Tue, 28 Apr 2009 17:49:24 -0400 In-Reply-To: <1240955328-23358-1-git-send-email-dhuff@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: 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