diff options
author | Serena Feng <feng.xiaowei@zte.com.cn> | 2016-12-09 08:54:09 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@opnfv.org> | 2016-12-09 08:54:09 +0000 |
commit | dafed654965a05cab6891b53df80f11e37a1750a (patch) | |
tree | 1d8e48e6b3396df1352023446154db266e0561c0 | |
parent | 3e8707b400695269f2f9737fb8e094419a461f6a (diff) | |
parent | c5c6dce10bfa43dacd3043ebe9942689eed8b9a4 (diff) |
Merge "abstract umbrella part to make integration code simpler"
-rw-r--r-- | functest/ci/run_tests.py | 2 | ||||
-rw-r--r-- | functest/core/feature_base.py | 58 | ||||
-rw-r--r-- | functest/opnfv_tests/vnf/rnc/parser.py | 65 | ||||
-rw-r--r-- | functest/utils/functest_utils.py | 17 |
4 files changed, 65 insertions, 77 deletions
diff --git a/functest/ci/run_tests.py b/functest/ci/run_tests.py index d2a64aea1..3f02c8725 100644 --- a/functest/ci/run_tests.py +++ b/functest/ci/run_tests.py @@ -142,7 +142,7 @@ def run_test(test, tier_name): result = test_case.run() if (result == testcase_base.TestcaseBase.EX_OK and GlobalVariables.REPORT_FLAG): - result = test_case.push_to_db() + test_case.push_to_db() except ImportError: logger.exception("Cannot import module {}".format( run_dict['module'])) diff --git a/functest/core/feature_base.py b/functest/core/feature_base.py new file mode 100644 index 000000000..01a27f305 --- /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) diff --git a/functest/opnfv_tests/vnf/rnc/parser.py b/functest/opnfv_tests/vnf/rnc/parser.py index a50d4f1eb..1cff72209 100644 --- a/functest/opnfv_tests/vnf/rnc/parser.py +++ b/functest/opnfv_tests/vnf/rnc/parser.py @@ -14,66 +14,13 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import os -import sys -import time -import argparse +import functest.core.feature_base as base -import functest.core.testcase_base as testcase_base -import functest.utils.functest_constants as ft_constants -import functest.utils.functest_logger as ft_logger -import functest.utils.functest_utils as ft_utils - - -class Parser(testcase_base.TestcaseBase): +class Parser(base.FeatureBase): def __init__(self): - super(Parser, self).__init__() - self.project_name = "parser" - self.case_name = "parser-basics" - self.logger = ft_logger.Logger("parser").getLogger() - self.log_file = os.path.join( - ft_constants.FUNCTEST_RESULTS_DIR, "parser.log") - - def run(self, **kwargs): - cmd = 'cd %s/tests && ./functest_run.sh' % ft_constants.PARSER_REPO_DIR - - self.start_time = time.time() - ret = ft_utils.execute_command(cmd, - info=True, - output_file=self.log_file) - self.stop_time = time.time() - - self.criteria, details = ft_utils.check_test_result(self.project_name, - ret, - self.start_time, - self.stop_time) - - ft_utils.logger_test_results(self.project_name, - self.case_name, - self.criteria, - details) - - return ret - - @staticmethod - def get_conf(parameter): - return ft_utils.get_functest_config(parameter) - - -if __name__ == '__main__': - args_parser = argparse.ArgumentParser() - args_parser.add_argument("-r", "--report", - help="Create json result file", - action="store_true") - args = vars(args_parser.parse_args()) - parser = Parser() - try: - result = parser.run(**args) - if result != testcase_base.TestcaseBase.EX_OK: - sys.exit(result) - if args['report']: - sys.exit(parser.push_to_db()) - except Exception: - sys.exit(testcase_base.TestcaseBase.EX_RUN_ERROR) + super(Parser, self).__init__(project='parser', + case='parser-basics', + repo='dir_repo_parser') + self.cmd = 'cd %s/tests && ./functest_run.sh' % self.repo diff --git a/functest/utils/functest_utils.py b/functest/utils/functest_utils.py index 5e2046873..8f816cdf9 100644 --- a/functest/utils/functest_utils.py +++ b/functest/utils/functest_utils.py @@ -418,23 +418,6 @@ def merge_dicts(dict1, dict2): yield (k, dict2[k]) -def check_test_result(test_name, ret, start_time, stop_time): - def get_criteria_value(): - return get_criteria_by_test(test_name).split('==')[1].strip() - - status = 'FAIL' - if str(ret) == get_criteria_value(): - status = 'PASS' - - details = { - 'timestart': start_time, - 'duration': round(stop_time - start_time, 1), - 'status': status, - } - - return status, details - - def get_testcases_file_dir(): return get_functest_config('general.functest.testcases_yaml') |