From 8e115503e1ba1f86a3aa2053594eb03dc5227ff1 Mon Sep 17 00:00:00 2001 From: Peter Giacomo Lombardo Date: Tue, 27 Nov 2018 21:04:37 +0100 Subject: [PATCH 1/2] Improve secrets parsing to maintain kv order across py versions --- instana/util.py | 40 +++++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/instana/util.py b/instana/util.py index 4999a919..f828bae2 100644 --- a/instana/util.py +++ b/instana/util.py @@ -12,7 +12,9 @@ try: from urllib import parse except ImportError: - from urlparse import urlparse as parse + import urlparse as parse + import urllib + from .log import logger @@ -123,38 +125,42 @@ def strip_secrets(qp, matcher, kwlist): else: query = qp - params = parse.parse_qs(query, keep_blank_values=True) + params = parse.parse_qsl(query, keep_blank_values=True) redacted = [''] if matcher == 'equals-ignore-case': for keyword in kwlist: - for key in params.keys(): - if key.lower() == keyword.lower(): - params[key] = redacted + for index, kv in enumerate(params): + if kv[0].lower() == keyword.lower(): + params[index] = (kv[0], redacted) elif matcher == 'equals': for keyword in kwlist: - if keyword in params: - params[keyword] = redacted + for index, kv in enumerate(params): + if kv[0] == keyword: + params[index] = (kv[0], redacted) elif matcher == 'contains-ignore-case': for keyword in kwlist: - for key in params.keys(): - if keyword.lower() in key.lower(): - params[key] = redacted + for index, kv in enumerate(params): + if keyword.lower() in kv[0].lower(): + params[index] = (kv[0], redacted) elif matcher == 'contains': for keyword in kwlist: - for key in params.keys(): - if keyword in key: - params[key] = redacted + for index, kv in enumerate(params): + if keyword in kv[0]: + params[index] = (kv[0], redacted) elif matcher == 'regex': for regexp in kwlist: - for key in params.keys(): - if re.match(regexp, key): - params[key] = redacted + for index, kv in enumerate(params): + if re.match(regexp, kv[0]): + params[index] = (kv[0], redacted) else: logger.debug("strip_secrets: unknown matcher") return qp - result = parse.urlencode(params, doseq=True) + if sys.version_info < (3, 0): + result = urllib.urlencode(params, doseq=True) + else: + result = parse.urlencode(params, doseq=True) query = parse.unquote(result) if path: From be7909e3807bb8b95adc1ea6ed67039b38830a3c Mon Sep 17 00:00:00 2001 From: Peter Giacomo Lombardo Date: Tue, 27 Nov 2018 21:43:19 +0100 Subject: [PATCH 2/2] Use nose.main() --- runtests.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/runtests.py b/runtests.py index 0ee74536..640a0a13 100644 --- a/runtests.py +++ b/runtests.py @@ -2,15 +2,12 @@ import nose from distutils.version import LooseVersion -command_line = ['-v'] +command_line = [__file__, '--verbose'] if (LooseVersion(sys.version) < LooseVersion('3.5')): command_line.extend(['-e', 'asynqp']) print("Nose arguments: %s" % command_line) -result = nose.run(argv=command_line) +result = nose.main(argv=command_line) -if result is True: - exit(0) -else: - exit(-1) \ No newline at end of file +exit(result)