aboutsummaryrefslogtreecommitdiffstats
path: root/functest/core/feature_base.py
diff options
context:
space:
mode:
authorSerena Feng <feng.xiaowei@zte.com.cn>2016-12-09 08:54:09 +0000
committerGerrit Code Review <gerrit@opnfv.org>2016-12-09 08:54:09 +0000
commitdafed654965a05cab6891b53df80f11e37a1750a (patch)
tree1d8e48e6b3396df1352023446154db266e0561c0 /functest/core/feature_base.py
parent3e8707b400695269f2f9737fb8e094419a461f6a (diff)
parentc5c6dce10bfa43dacd3043ebe9942689eed8b9a4 (diff)
Merge "abstract umbrella part to make integration code simpler"
Diffstat (limited to 'functest/core/feature_base.py')
-rw-r--r--functest/core/feature_base.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/functest/core/feature_base.py b/functest/core/feature_base.py
new file mode 100644
index 00000000..01a27f30
--- /dev/null
+++ b/functest/core/feature_base.py
@@ -0,0 +1,58 @@
+import time
+
+import testcase_base as base
+import functest.utils.functest_utils as ft_utils
+import functest.utils.functest_logger as ft_logger
+
+
+class FeatureBase(base.TestcaseBase):
+ def __init__(self, project='functest', case='', repo='', cmd=''):
+ super(FeatureBase, self).__init__()
+ self.project_name = project
+ self.case_name = case
+ self.cmd = cmd
+ self.repo = self.get_conf('general.directories.{}'.format(repo))
+ self.result_file = self.get_result_file()
+ self.logger = ft_logger.Logger(project).getLogger()
+
+ def run(self, **kwargs):
+ self.prepare()
+ self.start_time = time.time()
+ ret = ft_utils.execute_command(self.cmd, output_file=self.result_file)
+ self.stop_time = time.time()
+ self.post()
+ self.parse_results(ret)
+ self.log_results()
+ return base.TestcaseBase.EX_OK
+
+ def prepare(self, **kwargs):
+ pass
+
+ def post(self, **kwargs):
+ pass
+
+ def parse_results(self, ret):
+ exit_code = base.TestcaseBase.EX_OK
+ if ret == 0:
+ self.logger.info("{} OK".format(self.project_name))
+ self.criteria = 'PASS'
+ else:
+ self.logger.info("{} FAILED".format(self.project_name))
+ exit_code = base.TestcaseBase.EX_RUN_ERROR
+ self.criteria = "FAIL"
+
+ return exit_code
+
+ def get_result_file(self):
+ dir = self.get_conf('general.directories.dir_results')
+ return "{}/{}.log".format(dir, self.project_name)
+
+ def log_results(self):
+ ft_utils.logger_test_results(self.project_name,
+ self.case_name,
+ self.criteria,
+ self.details)
+
+ @staticmethod
+ def get_conf(parameter):
+ return ft_utils.get_functest_config(parameter)