X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=functest%2Futils%2Fdecorators.py;h=230a99e75c8e9379696b31827ab420b153ca710e;hb=2cfa22a0d0aa86cee5d77707c2f06ef3c4434a14;hp=276235d96091e274a510ed586f14602eec3ebe74;hpb=dff88be53df4ccde8e4977295464d3ee1a144a38;p=functest.git diff --git a/functest/utils/decorators.py b/functest/utils/decorators.py index 276235d96..230a99e75 100644 --- a/functest/utils/decorators.py +++ b/functest/utils/decorators.py @@ -1,41 +1,55 @@ #!/usr/bin/env python +# Copyright (c) 2017 Orange and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 + +# pylint: disable=missing-docstring + import errno -import mock +import functools import os + +import mock import requests.sessions -import urlparse +from six.moves import urllib def can_dump_request_to_file(method): def dump_preparedrequest(request, **kwargs): - parseresult = urlparse.urlparse(request.url) + # pylint: disable=unused-argument + parseresult = urllib.parse.urlparse(request.url) if parseresult.scheme == "file": try: - os.makedirs(parseresult.path) - except OSError as e: - if e.errno != errno.EEXIST: + dirname = os.path.dirname(parseresult.path) + os.makedirs(dirname) + except OSError as ex: + if ex.errno != errno.EEXIST: raise - with open(os.path.join(parseresult.path, 'dump.txt'), 'a') as f: + with open(parseresult.path, 'a') as dumpfile: 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) + dumpfile.write(message) return mock.Mock() def patch_request(method, url, **kwargs): with requests.sessions.Session() as session: - parseresult = urlparse.urlparse(url) + parseresult = urllib.parse.urlparse(url) if parseresult.scheme == "file": - with mock.patch.object( - session, 'send', side_effect=dump_preparedrequest): + 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) + @functools.wraps(method) def hook(*args, **kwargs): with mock.patch('requests.api.request', side_effect=patch_request): return method(*args, **kwargs)