public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: David Huff <dhuff@redhat.com>
To: kvm@vger.kernel.org
Cc: David Huff <dhuff@redhat.com>
Subject: [PATCH] Modified kvm_runtest_2.py to look for tests in kvm_tests/
Date: Tue, 28 Apr 2009 17:48:46 -0400	[thread overview]
Message-ID: <1240955328-23358-2-git-send-email-dhuff@redhat.com> (raw)
In-Reply-To: <1240955328-23358-1-git-send-email-dhuff@redhat.com>

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


  reply	other threads:[~2009-04-28 21:49 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-04-28 21:48 kvm_autotest: dynamically load tests David Huff
2009-04-28 21:48 ` David Huff [this message]
2009-05-27 11:58   ` [PATCH] Modified kvm_runtest_2.py to look for tests in kvm_tests/ Uri Lublin
2009-04-28 21:48 ` [PATCH] Added "stock" or existing test to ./kvm_tests/ David Huff
2009-04-28 21:48 ` [PATCH] removed old kvm_test.py, tests now in seprate subdir David Huff
2009-05-27 11:46 ` kvm_autotest: dynamically load tests Uri Lublin
2009-05-27 12:14   ` David Huff
2009-05-27 17:00     ` sudhir kumar
  -- strict thread matches above, loose matches on Subject: below --
2009-05-26 16:26 [KVM_AUTOTEST] patch set to " David Huff
2009-05-26 16:27 ` [PATCH] Modified kvm_runtest_2.py to look for tests in kvm_tests/ David Huff
     [not found] <346382647.1061041244007938766.JavaMail.root@zmail05.collab.prod.int.phx2.redhat.com>
2009-06-03  5:47 ` Michael Goldish

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1240955328-23358-2-git-send-email-dhuff@redhat.com \
    --to=dhuff@redhat.com \
    --cc=kvm@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox