fix(api): await Kafka acknowledgements and bound HTTP requests

This commit is contained in:
2026-09-19 21:30:27 +03:30
parent 178741590e
commit 33593609e3
7 changed files with 447 additions and 406 deletions

View File

@@ -129,28 +129,22 @@ class TestIngestionAPIServer(unittest.IsolatedAsyncioTestCase):
self.assertEqual(data["error"], "invalid_payload")
async def test_backpressure_returns_429_when_queue_full(self):
# Cancel dispatcher task so it won't consume from queue
self.server.dispatcher._task.cancel()
# Fill the queue (maxsize=2)
await self.server.queue.put(("k1", b"v1"))
await self.server.queue.put(("k2", b"v2"))
# Third request must be rejected with 429
body = json.dumps({"raw_id": "k3"}).encode("utf-8")
status, _, resp_body = await self._http_request(
"POST",
"/api/v1/cdr/raw",
body=body,
headers={"Content-Type": "application/json"},
)
from concurrent.futures import Future
from tests.test_api_delivery import payload
futures = [asyncio.get_running_loop().create_future() for _ in range(2)]
self.server._pending.update(futures)
body = json.dumps(payload()).encode()
status, _, resp_body = await self._http_request("POST", "/api/v1/cdr/raw", body=body)
self.assertEqual(status, 429)
data = json.loads(resp_body.decode("utf-8"))
self.assertEqual(data["error"], "queue_full")
self.assertEqual(json.loads(resp_body)["error"], "queue_full")
for future in futures:
future.set_result(None)
self.server._pending.clear()
async def test_broker_unavailable_returns_503(self):
self.mock_producer.set_healthy(False)
body = json.dumps({"raw_id": "test"}).encode("utf-8")
from tests.test_api_delivery import payload
body = json.dumps(payload()).encode("utf-8")
status, _, resp_body = await self._http_request(
"POST",
"/api/v1/cdr/raw",