Modify TestCase constructor attributes
[functest.git] / functest / core / vnf_base.py
index f5e8605..3c71ec7 100644 (file)
@@ -7,29 +7,26 @@
 # which accompanies this distribution, and is available at
 # http://www.apache.org/licenses/LICENSE-2.0
 
-import time
-
 import inspect
+import time
 
+import functest.core.testcase as base
+from functest.utils.constants import CONST
 import functest.utils.functest_logger as ft_logger
-import functest.utils.openstack_utils as os_utils
 import functest.utils.functest_utils as ft_utils
-import testcase_base as base
-from functest.utils.constants import CONST
+import functest.utils.openstack_utils as os_utils
 
 
-class VnfOnBoardingBase(base.TestcaseBase):
+class VnfOnBoardingBase(base.TestCase):
 
     logger = ft_logger.Logger(__name__).getLogger()
 
-    def __init__(self, project='functest', case='', repo='', cmd=''):
-        super(VnfOnBoardingBase, self).__init__()
-        self.repo = repo
-        self.project_name = project
-        self.case_name = case
-        self.cmd = cmd
+    def __init__(self, **kwargs):
+        super(VnfOnBoardingBase, self).__init__(**kwargs)
+        self.repo = kwargs.get('repo', '')
+        self.cmd = kwargs.get('cmd', '')
         self.details = {}
-        self.data_dir = CONST.dir_functest_data
+        self.result_dir = CONST.dir_results
         self.details['orchestrator'] = {}
         self.details['vnf'] = {}
         self.details['test_vnf'] = {}
@@ -39,14 +36,14 @@ class VnfOnBoardingBase(base.TestcaseBase):
                 'vnf_{}_tenant_name'.format(self.case_name))
             self.tenant_description = CONST.__getattribute__(
                 'vnf_{}_tenant_description'.format(self.case_name))
-        except:
+        except Exception:
             # raise Exception("Unknown VNF case=" + self.case_name)
             self.logger.error("Unknown VNF case={}".format(self.case_name))
 
         try:
             self.images = CONST.__getattribute__(
                 'vnf_{}_tenant_images'.format(self.case_name))
-        except:
+        except Exception:
             self.logger.warn("No tenant image defined for this VNF")
 
     def execute(self):
@@ -58,7 +55,7 @@ class VnfOnBoardingBase(base.TestcaseBase):
         except Exception:
             self.logger.error("Error during VNF Onboarding environment" +
                               "creation", exc_info=True)
-            return base.TestcaseBase.EX_TESTCASE_FAILED
+            return base.TestCase.EX_TESTCASE_FAILED
 
         # Deploy orchestrator
         try:
@@ -87,7 +84,7 @@ class VnfOnBoardingBase(base.TestcaseBase):
                 vnf_ready_time - orchestrator_ready_time, 1)
         except Exception:
             self.logger.error("Error during VNF deployment", exc_info=True)
-            return base.TestcaseBase.EX_TESTCASE_FAILED
+            return base.TestCase.EX_TESTCASE_FAILED
 
         # Test VNF
         try:
@@ -100,7 +97,7 @@ class VnfOnBoardingBase(base.TestcaseBase):
                 test_vnf_done_time - vnf_ready_time, 1)
         except Exception:
             self.logger.error("Error when running VNF tests", exc_info=True)
-            return base.TestcaseBase.EX_TESTCASE_FAILED
+            return base.TestCase.EX_TESTCASE_FAILED
 
         # Clean the system
         self.clean()
@@ -234,7 +231,12 @@ class VnfOnBoardingBase(base.TestcaseBase):
 
     def step_failure(self, error_msg):
         part = inspect.stack()[1][3]
-        self.details[part]['status'] = 'FAIL'
-        self.details[part]['result'] = error_msg
-        self.logger.error("Step failure:{}".format(error_msg))
+        self.logger.error("Step '%s' failed: %s", part, error_msg)
+        try:
+            part_info = self.details[part]
+        except KeyError:
+            self.details[part] = {}
+            part_info = self.details[part]
+        part_info['status'] = 'FAIL'
+        part_info['result'] = error_msg
         raise Exception(error_msg)