import gzip import json import sys from pathlib import Path import httpx sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "analysis")) from api_split import measure # noqa: E402 def test_measure_reports_wire_and_decoded_bytes(): raw = json.dumps({"result": [{"a": 1}] * 50}).encode() gz = gzip.compress(raw) def handler(request): assert request.headers["authorization"] == "Bearer tok" # stream, а не content=: у httpx num_bytes_downloaded считается при чтении потока (как у сетевого транспорта) return httpx.Response(200, headers={"content-encoding": "gzip", "x-db-time-ms": "12.50"}, stream=httpx.ByteStream(gz)) with httpx.Client(transport=httpx.MockTransport(handler), base_url="http://t") as c: m = measure(c, "/x", "tok", repeats=3) assert m["rows"] == 50 assert m["bytes"] == len(raw) assert m["wire_bytes"] == len(gz) assert m["db_ms"] == 12.5 assert m["content_encoding"] == "gzip"