aboutsummaryrefslogtreecommitdiffstats
path: root/functest/utils/decorators.py
diff options
context:
space:
mode:
authorJose Lausuch <jose.lausuch@ericsson.com>2017-02-14 10:31:44 +0000
committerGerrit Code Review <gerrit@opnfv.org>2017-02-14 10:31:44 +0000
commit33ee390f8324175ae59775bc2589711a60f03939 (patch)
tree1474e8620dfd367559fcf25e786f5a402c17bb96 /functest/utils/decorators.py
parent66d02a85d91c5981ae3c2ebf5fa5b1e51c7ad143 (diff)
parent1e60ed4a402d579675fbf122702a5b8fd3225e3a (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/decorators.py')
-rw-r--r--functest/utils/decorators.py36
1 files changed, 36 insertions, 0 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