mirror of
https://github.com/postgres/postgres.git
synced 2025-11-28 11:44:57 +03:00
oauth_validator: Shorten JSON responses in test logs
Response padding from the oauth_validator abuse tests was adding a couple megabytes to the test logs. We don't need the buildfarm to hold onto that, and we don't need to read it when debugging; truncate it. Reported-by: Álvaro Herrera <alvherre@kurilemu.de> Discussion: https://postgr.es/m/202511251218.zfs4nu2qnh2m%40alvherre.pgsql Backpatch-through: 18
This commit is contained in:
@@ -257,13 +257,33 @@ class OAuthHandler(http.server.BaseHTTPRequestHandler):
|
||||
|
||||
return token
|
||||
|
||||
def _log_response(self, js: JsonObject) -> None:
|
||||
"""
|
||||
Trims the response JSON, if necessary, and logs it for later debugging.
|
||||
"""
|
||||
# At the moment the biggest problem for tests is the _pad_ member, which
|
||||
# is a megabyte in size, so truncate that to something more reasonable.
|
||||
if "_pad_" in js:
|
||||
pad = js["_pad_"]
|
||||
|
||||
# Don't modify the original dict.
|
||||
js = dict(js)
|
||||
js["_pad_"] = pad[:64] + f"[...truncated from {len(pad)} bytes]"
|
||||
|
||||
resp = json.dumps(js).encode("ascii")
|
||||
self.log_message("sending JSON response: %s", resp)
|
||||
|
||||
# If you've tripped this assertion, please truncate the new addition as
|
||||
# above, or else come up with a new strategy.
|
||||
assert len(resp) < 1024, "_log_response must be adjusted for new JSON"
|
||||
|
||||
def _send_json(self, js: JsonObject) -> None:
|
||||
"""
|
||||
Sends the provided JSON dict as an application/json response.
|
||||
self._response_code can be modified to send JSON error responses.
|
||||
"""
|
||||
resp = json.dumps(js).encode("ascii")
|
||||
self.log_message("sending JSON response: %s", resp)
|
||||
self._log_response(js)
|
||||
|
||||
self.send_response(self._response_code)
|
||||
self.send_header("Content-Type", self._content_type)
|
||||
|
||||
Reference in New Issue
Block a user