diff options
author | 2016-12-21 09:49:19 +0800 | |
---|---|---|
committer | 2017-01-17 14:33:24 +0800 | |
commit | ee21af78fbfc93e888acda121f08d2b216dd0159 (patch) | |
tree | 0c32d9a79fc6180c40bee95453577101d83e7dc3 /functest/utils | |
parent | 9277dab7fc82030a5f3d7b55ea7b2a741a51a8a3 (diff) |
write test results to a local file
Write test result to a file or push it to DB depends
on the value format of test_db_url which is defined in
config_functest.yaml. Meanwhile, test_db_url can be set
by os envrion value "RESULT_STORE".
If test_db_url is a url, e.g. http:// or https://, then
push result to DB. If test_db_url is a file location,
e.g. file:///, then write results to a file with json data.
One result record, one line.
JIRA: FUNCTEST-657
Change-Id: I579087cd2c24d61a79142b5d67003fb486b6c723
Signed-off-by: wu.zhihui <wu.zhihui1@zte.com.cn>
Diffstat (limited to 'functest/utils')
-rw-r--r-- | functest/utils/functest_utils.py | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/functest/utils/functest_utils.py b/functest/utils/functest_utils.py index 1879e694..2bf87a05 100644 --- a/functest/utils/functest_utils.py +++ b/functest/utils/functest_utils.py @@ -23,8 +23,10 @@ import requests import yaml from git import Repo +from functest.utils.constants import CONST import functest.utils.functest_logger as ft_logger + logger = ft_logger.Logger("functest_utils").getLogger() @@ -181,13 +183,43 @@ def logger_test_results(project, case_name, status, details): 'd': details}) +def write_results_to_file(project, case_name, start_date, + stop_date, criteria, details): + file_path = re.split(r'://', CONST.results_test_db_url)[1] + + try: + installer = os.environ['INSTALLER_TYPE'] + scenario = os.environ['DEPLOY_SCENARIO'] + pod_name = os.environ['NODE_NAME'] + except KeyError as e: + logger.error("Please set env var: " + str(e)) + return False + + test_start = dt.fromtimestamp(start_date).strftime('%Y-%m-%d %H:%M:%S') + test_stop = dt.fromtimestamp(stop_date).strftime('%Y-%m-%d %H:%M:%S') + + params = {"project_name": project, "case_name": case_name, + "pod_name": pod_name, "installer": installer, + "scenario": scenario, "criteria": criteria, + "start_date": test_start, "stop_date": test_stop, + "details": details} + try: + with open(file_path, "a+w") as outfile: + json.dump(params, outfile) + outfile.write("\n") + return True + except Exception as e: + logger.error("write result data into a file failed: %s" % e) + return False + + def push_results_to_db(project, case_name, start_date, stop_date, criteria, details): """ POST results to the Result target DB """ # Retrieve params from CI and conf - url = get_db_url() + "/results" + url = CONST.results_test_db_url + "/results" try: installer = os.environ['INSTALLER_TYPE'] |