Updated vims to support keystone v3
[functest.git] / functest / core / feature_base.py
1 import time
2
3 import testcase_base as base
4 import functest.utils.functest_utils as ft_utils
5 import functest.utils.functest_logger as ft_logger
6
7
8 class FeatureBase(base.TestcaseBase):
9     def __init__(self, project='functest', case='', repo='', cmd=''):
10         super(FeatureBase, self).__init__()
11         self.project_name = project
12         self.case_name = case
13         self.cmd = cmd
14         self.repo = self.get_conf('general.dir.{}'.format(repo))
15         self.result_file = self.get_result_file()
16         self.logger = ft_logger.Logger(project).getLogger()
17
18     def run(self, **kwargs):
19         self.prepare()
20         self.start_time = time.time()
21         ret = ft_utils.execute_command(self.cmd, output_file=self.result_file)
22         self.stop_time = time.time()
23         self.post()
24         self.parse_results(ret)
25         self.log_results()
26         return base.TestcaseBase.EX_OK
27
28     def prepare(self, **kwargs):
29         pass
30
31     def post(self, **kwargs):
32         pass
33
34     def parse_results(self, ret):
35         exit_code = base.TestcaseBase.EX_OK
36         if ret == 0:
37             self.logger.info("{} OK".format(self.project_name))
38             self.criteria = 'PASS'
39         else:
40             self.logger.info("{} FAILED".format(self.project_name))
41             exit_code = base.TestcaseBase.EX_RUN_ERROR
42             self.criteria = "FAIL"
43
44         return exit_code
45
46     def get_result_file(self):
47         dir = self.get_conf('general.dir.results')
48         return "{}/{}.log".format(dir, self.project_name)
49
50     def log_results(self):
51         ft_utils.logger_test_results(self.project_name,
52                                      self.case_name,
53                                      self.criteria,
54                                      self.details)
55
56     @staticmethod
57     def get_conf(parameter):
58         return ft_utils.get_functest_config(parameter)