From 50be947eff2af5f04ca15b6ba510ad237bbe3edb Mon Sep 17 00:00:00 2001 From: Sergiy Kozyr Date: Mon, 18 Jul 2022 09:50:46 +0300 Subject: [PATCH] Fix testserver behaviour after migration to Python 3 (#2967) Signed-off-by: S. Kozyr --- tools/python/ResponseProvider.py | 15 ++++++++------- tools/python/testserver.py | 6 +++--- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/tools/python/ResponseProvider.py b/tools/python/ResponseProvider.py index dd7b8a5cc3..07b8483c4b 100644 --- a/tools/python/ResponseProvider.py +++ b/tools/python/ResponseProvider.py @@ -11,7 +11,7 @@ BIG_FILE_SIZE = 47684 class Payload: def __init__(self, message, response_code=200, headers={}): self.__response_code = response_code - self.__message = message + self.__message = message if type(message) is bytes else message.encode('utf8') self.__headers = headers @@ -155,8 +155,9 @@ class ResponseProvider: "/gallery/v2/map": self.guides_on_map_gallery, "/partners/get_supported_tariffs": self.citymobil_supported_tariffs, "/partners/calculate_price": self.citymobil_calculate_price, - }[url]() - except: + }.get(url, self.test_404)() + except Exception as e: + logging.error("test_server: Can't build server response", exc_info=e) return self.test_404() @@ -208,17 +209,17 @@ class ResponseProvider: self.check_byterange(BIG_FILE_SIZE) headers = self.chunked_response_header(BIG_FILE_SIZE) message = self.trim_message(self.message_for_47kb_file()) - + return Payload(message, self.response_code, headers) def message_for_47kb_file(self): message = [] for i in range(0, BIG_FILE_SIZE + 1): - message.append(chr(i / 256)) - message.append(chr(i % 256)) + message.append(i // 256) + message.append(i % 256) - return "".join(message) + return bytes(message) # Partners_api_tests diff --git a/tools/python/testserver.py b/tools/python/testserver.py index 7bfb3b2144..fe9be8d404 100644 --- a/tools/python/testserver.py +++ b/tools/python/testserver.py @@ -171,7 +171,7 @@ class PostHandler(BaseHTTPRequestHandler, ResponseProviderMixin): self.send_header(h, payload.headers()[h]) self.send_header("Content-Length", payload.length()) self.end_headers() - self.wfile.write(payload.message().encode('utf8')) + self.wfile.write(payload.message()) def init_vars(self): @@ -184,7 +184,7 @@ class PostHandler(BaseHTTPRequestHandler, ResponseProviderMixin): headers = self.prepare_headers() payload = self.response_provider.response_for_url_and_headers(self.path, headers) if payload.response_code() >= 300: - length = int(self.headers.getheader('content-length')) + length = int(self.headers.get('content-length')) self.dispatch_response(Payload(self.rfile.read(length))) else: self.dispatch_response(payload) @@ -199,7 +199,7 @@ class PostHandler(BaseHTTPRequestHandler, ResponseProviderMixin): def prepare_headers(self): ret = dict() for h in self.headers: - ret[h] = self.headers.get(h) + ret[h.lower()] = self.headers.get(h) return ret