From mboxrd@z Thu Jan 1 00:00:00 1970 From: Uri Lublin Subject: Re: [PATCH] Modified kvm_runtest_2.py to look for tests in kvm_tests/ Date: Wed, 27 May 2009 14:58:02 +0300 Message-ID: <4A1D2ACA.9000100@redhat.com> References: <1240955328-23358-1-git-send-email-dhuff@redhat.com> <1240955328-23358-2-git-send-email-dhuff@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org To: David Huff Return-path: Received: from mx2.redhat.com ([66.187.237.31]:52466 "EHLO mx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757172AbZE0L6E (ORCPT ); Wed, 27 May 2009 07:58:04 -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 n4RBw50t027455 for ; Wed, 27 May 2009 07:58:05 -0400 In-Reply-To: <1240955328-23358-2-git-send-email-dhuff@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: David Huff wrote: > 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 routine_obj exists, use it, instead of dynamically load according to 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) 1. Nit: Please leave a space after comma. 2. Typo moudule_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)) 1. Nit: f = eval("module."+routine_obj.routine_name) inspect.isfunction(f) ... routing_obj.routing = f 2. If you call inspect.isfunction(), check its return-value. It can return false. ( If you do not call inspect it would fail later when routine_obj.routine is called ). Regards, Uri.