Skip to content

Commit 20d96a0

Browse files
committed
chore(tests): improve logging from provider
As the provider is launched in its own Python process, logging is not configured. So instead of using various `logging` methods, directly write to `stderr`. Signed-off-by: JP-Ellis <josh@jpellis.me>
1 parent 388242d commit 20d96a0

File tree

3 files changed

+29
-21
lines changed

3 files changed

+29
-21
lines changed

tests/v3/compatibility_suite/test_v1_provider.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -420,10 +420,10 @@ def redirect() -> NoReturn:
420420
while True:
421421
if process.stdout:
422422
while line := process.stdout.readline():
423-
logger.debug("Provider stdout: %s", line)
423+
logger.debug("Provider stdout: %s", line.strip())
424424
if process.stderr:
425425
while line := process.stderr.readline():
426-
logger.debug("Provider stderr: %s", line)
426+
logger.debug("Provider stderr: %s", line.strip())
427427

428428
thread = Thread(target=redirect, daemon=True)
429429
thread.start()

tests/v3/compatibility_suite/util/__init__.py

+13-3
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ def _():
2525
import contextlib
2626
import hashlib
2727
import logging
28+
import sys
2829
import typing
2930
from collections.abc import Collection, Mapping
3031
from datetime import date, datetime, time
@@ -555,9 +556,18 @@ def add_to_flask(self, app: flask.Flask) -> None:
555556
app:
556557
The Flask app to add the interaction to.
557558
"""
558-
559-
async def route_fn() -> flask.Response:
560-
logger.info("Received request: %s %s", self.method, self.path)
559+
sys.stderr.write(
560+
f"Adding interaction to Flask app: {self.method} {self.path}\n"
561+
)
562+
sys.stderr.write(f" Query: {self.query}\n")
563+
sys.stderr.write(f" Headers: {self.headers}\n")
564+
sys.stderr.write(f" Body: {self.body}\n")
565+
sys.stderr.write(f" Response: {self.response}\n")
566+
sys.stderr.write(f" Response headers: {self.response_headers}\n")
567+
sys.stderr.write(f" Response body: {self.response_body}\n")
568+
569+
def route_fn() -> flask.Response:
570+
sys.stderr.write(f"Received request: {self.method} {self.path}\n")
561571
if self.query:
562572
query = URL.build(query_string=self.query).query
563573
# Perform a two-way check to ensure that the query parameters

tests/v3/compatibility_suite/util/provider.py

+14-16
Original file line numberDiff line numberDiff line change
@@ -180,14 +180,12 @@ def _add_after_request(self, app: flask.Flask) -> None:
180180

181181
@app.after_request
182182
def log_request(response: flask.Response) -> flask.Response:
183-
logger.debug("Request: %s %s", request.method, request.path)
184-
logger.debug(
185-
"Request query string: %s", request.query_string.decode("utf-8")
186-
)
187-
logger.debug("Request query params: %s", serialize(request.args))
188-
logger.debug("Request headers: %s", serialize(request.headers))
189-
logger.debug("Request body: %s", request.data.decode("utf-8"))
190-
logger.debug("Request form: %s", serialize(request.form))
183+
sys.stderr.write(f"START REQUEST: {request.method} {request.path}\n")
184+
sys.stderr.write(f"Query string: {request.query_string.decode('utf-8')}\n")
185+
sys.stderr.write(f"Header: {serialize(request.headers)}\n")
186+
sys.stderr.write(f"Body: {request.data.decode('utf-8')}\n")
187+
sys.stderr.write(f"Form: {serialize(request.form)}\n")
188+
sys.stderr.write("END REQUEST\n")
191189

192190
with (
193191
self.provider_dir
@@ -210,13 +208,13 @@ def log_request(response: flask.Response) -> flask.Response:
210208

211209
@app.after_request
212210
def log_response(response: flask.Response) -> flask.Response:
213-
try:
214-
body = response.get_data(as_text=True)
215-
except UnicodeDecodeError:
216-
body = "<binary>"
217-
logger.debug("Response: %s", response.status_code)
218-
logger.debug("Response headers: %s", serialize(response.headers))
219-
logger.debug("Response body: %s", body)
211+
sys.stderr.write(f"START RESPONSE: {response.status_code}\n")
212+
sys.stderr.write(f"Headers: {serialize(response.headers)}\n")
213+
sys.stderr.write(
214+
f"Body: {response.get_data().decode('utf-8', errors='replace')}\n"
215+
)
216+
sys.stderr.write("END RESPONSE\n")
217+
220218
with (
221219
self.provider_dir
222220
/ f"response.{datetime.now(tz=UTC).strftime('%H:%M:%S.%f')}.json"
@@ -226,7 +224,7 @@ def log_response(response: flask.Response) -> flask.Response:
226224
"status_code": response.status_code,
227225
"headers_list": serialize(response.headers),
228226
"headers_dict": serialize(dict(response.headers)),
229-
"body": body,
227+
"body": response.get_data().decode("utf-8", errors="replace"),
230228
},
231229
f,
232230
)

0 commit comments

Comments
 (0)