fix(api): await Kafka acknowledgements and bound HTTP requests
This commit is contained in:
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user