[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [test-API PATCH 2/2] proxy: import each testcase file only once, initialize proxy once



On 04/16/2012 03:54 PM, Martin Kletzander wrote:
On 04/16/2012 08:15 AM, Guannan Ren wrote:
     *libvirt-test-api.py: initialize proxy module only once
     *casecfgcheck.py: use proxy object rather than initialize it by
                       itself
     *proxy.py: make get_func_call_dict more flexible
---
  casecfgcheck.py     |    5 +----
  libvirt-test-api.py |   12 +++++-------
  proxy.py            |   22 ++++++++++++++--------
  3 files changed, 20 insertions(+), 19 deletions(-)

diff --git a/casecfgcheck.py b/casecfgcheck.py
index 40d7c6e..9a4f8e6 100644
--- a/casecfgcheck.py
+++ b/casecfgcheck.py
@@ -18,13 +18,10 @@ import proxy

  class CaseCfgCheck(object):
      """validate the options in testcase config file"""
-    def __init__(self, unique_testcases, activities_list):
-        self.unique_testcases = unique_testcases
-
+    def __init__(self, proxy_obj, activities_list):
          # XXX to check the first testcase list in activities_list
          self.activity = activities_list[0]

-        proxy_obj = proxy.Proxy(self.unique_testcases)
          self.case_params = proxy_obj.get_params_variables()

      def check(self):
diff --git a/libvirt-test-api.py b/libvirt-test-api.py
index 385b52d..7b38aaa 100644
--- a/libvirt-test-api.py
+++ b/libvirt-test-api.py
@@ -112,20 +112,18 @@ class Main(object):

          unique_testcases = filterobj.unique_testcases()

+        # __import__ TESTCASE.py once for duplicate testcase names
+        proxy_obj = proxy.Proxy(unique_testcases)
+
          # check the options to each testcase in case config file
-        casechk = CaseCfgCheck(unique_testcases, activities_list)
+        casechk = CaseCfgCheck(proxy_obj, activities_list)
          if casechk.check():
              return 1

          # get a list of unique testcase
          # with 'clean' flag appended to its previous testcase
          unique_testcase_keys = filterobj.unique_testcase_cleansuffix()
-
-        # call and initilize proxy component to
-        # get a list of reference of testcases
-        proxy_obj = proxy.Proxy(unique_testcase_keys)
-
-        cases_func_ref_dict = proxy_obj.get_func_call_dict()
+        cases_func_ref_dict = proxy_obj.get_func_call_dict(unique_testcase_keys)

          # create a null list, then, initilize generator to
          # get the callable testcase function
diff --git a/proxy.py b/proxy.py
index bc82a84..49a0420 100644
--- a/proxy.py
+++ b/proxy.py
@@ -1,6 +1,6 @@
  #!/usr/bin/env python
  #
-# libvirt-test-API is copyright 2010 Red Hat, Inc.
+# libvirt-test-API is copyright 2010, 2012 Red Hat, Inc.
  #
  # libvirt-test-API is free software: you can redistribute it and/or modify it
  # under the terms of the GNU General Public License as published by
@@ -37,12 +37,13 @@ class Proxy(object):
              casename = elements[1]

              casemod_ref = self.get_call_dict(module, casename)
-            self.testcase_ref_dict[testcase_name] = casemod_ref
+            modcase = module + ':' + casename
+            self.testcase_ref_dict[modcase] = casemod_ref

-    def get_func_call_dict(self):
-        """Return running function reference dictionary """
+    def get_func_call_dict(self, unique_testcase_keys):
+        """get reference to functions defined in testcase file """
          func_dict = {}
-        for testcase_name in self.testcases_names:
+        for testcase_name in unique_testcase_keys:
              # Get module, casename
              elements = testcase_name.split(':')
              module = elements[0]
@@ -55,16 +56,21 @@ class Proxy(object):
                  flag = elements[2]
                  func = casename + flag

-            casemod_ref = self.testcase_ref_dict[testcase_name]
+            # use modcase key to get the reference to corresponding
+            # testcase module
+            modcase = module + ':' + casename
+            casemod_ref = self.testcase_ref_dict[modcase]
              var_func_names = dir(casemod_ref)

-            key = module + ':' + casename + ':' + func
+            key = modcase + ':' + func
+            # check if the expected function is present in
+            # the list of string name from dir()
              if func in var_func_names:
                  func_ref = getattr(casemod_ref, func)
                  func_dict[key] = func_ref
              else:
                  raise exception.TestCaseError("function %s not found in %s" % \
-                                              (func, testcase_name))
+                                              (func, modcase))
          return func_dict

      def get_clearfunc_call_dict(self):
ACK both.

Martin

P.S.: This is very useful, I don't have to type it manually =)


           Thanks and pushed.

           Guannan Ren


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]