import pytest from vllm.engine.async_llm_engine import RequestTracker from vllm.outputs import RequestOutput class DummyEvent: def __init__(self): self.flag = False def set(self): self.flag = True def clear(self): self.flag = False def test_request_tracker(): tracker = RequestTracker() tracker.new_requests_event = DummyEvent() stream_1 = tracker.add_request("1") assert tracker.new_requests_event.flag new, finished = tracker.get_new_and_finished_requests() assert not tracker.new_requests_event.flag assert len(new) == 1 assert new[0]["request_id"] == "1" assert not finished assert not stream_1.finished stream_2 = tracker.add_request("2") stream_3 = tracker.add_request("3") assert tracker.new_requests_event.flag new, finished = tracker.get_new_and_finished_requests() assert not tracker.new_requests_event.flag assert len(new) == 2 assert new[0]["request_id"] == "2" assert new[1]["request_id"] == "3" assert not finished assert not stream_2.finished assert not stream_3.finished # request_ids must be unique with pytest.raises(KeyError): tracker.add_request("1") assert not tracker.new_requests_event.flag tracker.abort_request("1") new, finished = tracker.get_new_and_finished_requests() assert len(finished) == 1 assert "1" in finished assert not new assert stream_1.finished stream_4 = tracker.add_request("4") tracker.abort_request("4") assert tracker.new_requests_event.flag new, finished = tracker.get_new_and_finished_requests() assert len(finished) == 1 assert "4" in finished assert not new assert stream_4.finished stream_5 = tracker.add_request("5") assert tracker.new_requests_event.flag tracker.process_request_output( RequestOutput("2", "output", [], [], [], finished=True)) new, finished = tracker.get_new_and_finished_requests() assert not tracker.new_requests_event.flag assert len(finished) == 1 assert "2" in finished assert len(new) == 1 assert new[0]["request_id"] == "5" assert stream_2.finished assert not stream_5.finished