diff options
author | 2017-02-14 10:31:44 +0000 | |
---|---|---|
committer | 2017-02-14 10:31:44 +0000 | |
commit | 33ee390f8324175ae59775bc2589711a60f03939 (patch) | |
tree | 1474e8620dfd367559fcf25e786f5a402c17bb96 /functest/utils | |
parent | 66d02a85d91c5981ae3c2ebf5fa5b1e51c7ad143 (diff) | |
parent | 1e60ed4a402d579675fbf122702a5b8fd3225e3a (diff) |
Merge changes from topic 'revert_write_to_file'
* changes:
Add can_dump_request_to_file decorator
Revert "write test results to a local file"
Diffstat (limited to 'functest/utils')
-rw-r--r-- | functest/utils/decorators.py | 36 | ||||
-rw-r--r-- | functest/utils/functest_utils.py | 36 |
2 files changed, 39 insertions, 33 deletions
diff --git a/functest/utils/decorators.py b/functest/utils/decorators.py new file mode 100644 index 00000000..99bcef3e --- /dev/null +++ b/functest/utils/decorators.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python + +import mock +import requests.sessions +import urlparse + + +def can_dump_request_to_file(method): + + def dump_preparedrequest(request, **kwargs): + parseresult = urlparse.urlparse(request.url) + if parseresult.scheme == "file": + with open(parseresult.path.replace('/results', ''), 'a') as f: + headers = "" + for key in request.headers: + headers += key + " " + request.headers[key] + "\n" + message = "{} {}\n{}\n{}\n\n\n".format( + request.method, request.url, headers, request.body) + f.write(message) + return mock.Mock() + + def patch_request(method, url, **kwargs): + with requests.sessions.Session() as session: + parseresult = urlparse.urlparse(url) + if parseresult.scheme == "file": + with mock.patch.object( + session, 'send', side_effect=dump_preparedrequest): + return session.request(method=method, url=url, **kwargs) + else: + return session.request(method=method, url=url, **kwargs) + + def hook(*args, **kwargs): + with mock.patch('requests.api.request', side_effect=patch_request): + return method(*args, **kwargs) + + return hook diff --git a/functest/utils/functest_utils.py b/functest/utils/functest_utils.py index 04055464..12d8e902 100644 --- a/functest/utils/functest_utils.py +++ b/functest/utils/functest_utils.py @@ -23,10 +23,9 @@ import requests import yaml from git import Repo -from functest.utils.constants import CONST +from functest.utils import decorators import functest.utils.functest_logger as ft_logger - logger = ft_logger.Logger("functest_utils").getLogger() @@ -184,43 +183,14 @@ 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 - - +@decorators.can_dump_request_to_file 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 = CONST.results_test_db_url + "/results" + url = get_db_url() + "/results" try: installer = os.environ['INSTALLER_TYPE'] |