deer-flow/backend/tests/test_model_request_admission_fifo_atomic.py
yeejhyang 53dde30d4a
fix(models): preserve FIFO across request-admission handoff (#5459)
* fix(models): make request admission enqueue atomic

* test(models): cover atomic request admission FIFO entry

* docs(models): record atomic admission FIFO invariant

* fix(models): address request-admission review follow-ups
2026-09-16 22:07:42 +08:00

40 lines
1.2 KiB
Python

"""Regression coverage for atomic request-admission FIFO entry."""
import pytest
from deerflow.config.model_config import RequestAdmissionConfig
from deerflow.models import request_admission as admission
@pytest.fixture
def clock(monkeypatch):
now = [0.0]
monkeypatch.setattr(admission, "monotonic", lambda: now[0])
return now
def test_blocking_waiter_reserves_fifo_position_before_newcomer_can_take_due_slot(clock):
limiter = admission.RequestAdmission(RequestAdmissionConfig(requests_per_minute=60))
assert limiter.acquire(blocking=False)
acquired, ticket = limiter._try_or_enqueue(blocking=True)
assert acquired is False
assert ticket is limiter._waiters[0]
clock[0] = 1
assert limiter.acquire(blocking=False) is False
limiter._remove(ticket)
assert limiter.acquire(blocking=False) is True
def test_nonblocking_probe_never_joins_the_fifo(clock):
limiter = admission.RequestAdmission(RequestAdmissionConfig(requests_per_minute=60))
assert limiter.acquire(blocking=False)
acquired, ticket = limiter._try_or_enqueue(blocking=False)
assert acquired is False
assert ticket is None
assert not limiter._waiters