test_request_tracker.py 2.17 KB
Newer Older
1
2
3
4
5
6
import pytest

from vllm.engine.async_llm_engine import RequestTracker
from vllm.outputs import RequestOutput


7
8
9
10
11
12
13
14
15
16
17
18
class DummyEvent:

    def __init__(self):
        self._flag = False

    def set(self):
        self._flag = True

    def clear(self):
        self._flag = False


19
20
def test_request_tracker():
    tracker = RequestTracker()
21
    tracker.new_requests_event = DummyEvent()
22
    stream_1 = tracker.add_request("1")
23
    assert tracker.new_requests_event._flag
24
    new, finished = tracker.get_new_and_finished_requests()
25
    assert not tracker.new_requests_event._flag
26
27
28
29
30
31
32
    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")
33
    assert tracker.new_requests_event._flag
34
    new, finished = tracker.get_new_and_finished_requests()
35
    assert not tracker.new_requests_event._flag
36
37
38
39
40
41
42
43
44
45
    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")
46
    assert not tracker.new_requests_event._flag
47
48
49
50
51
52
53
54
55
56

    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")
57
    assert tracker.new_requests_event._flag
58
59
60
61
62
63
64
    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")
65
    assert tracker.new_requests_event._flag
66
67
68
    tracker.process_request_output(
        RequestOutput("2", "output", [], [], finished=True))
    new, finished = tracker.get_new_and_finished_requests()
69
    assert not tracker.new_requests_event._flag
70
71
72
73
74
75
    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