"vllm/entrypoints/pooling/classify/serving.py" did not exist on "02f0c7b220422792f5e53de2a7d51d2d3ff2df28"
test_request_tracker.py 2.33 KB
Newer Older
1
# SPDX-License-Identifier: Apache-2.0
2
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3

4
5
6
7
8
9
import pytest

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


10
11
@pytest.mark.asyncio
async def test_request_tracker():
12
13
    tracker = RequestTracker()
    stream_1 = tracker.add_request("1")
14
15
    assert tracker.new_requests_event.is_set()
    await tracker.wait_for_new_requests()
16
    new, aborted = tracker.get_new_and_aborted_requests()
17
    assert not tracker.new_requests_event.is_set()
18
19
    assert len(new) == 1
    assert new[0]["request_id"] == "1"
20
    assert not aborted
21
22
23
24
    assert not stream_1.finished

    stream_2 = tracker.add_request("2")
    stream_3 = tracker.add_request("3")
25
26
    assert tracker.new_requests_event.is_set()
    await tracker.wait_for_new_requests()
27
    new, aborted = tracker.get_new_and_aborted_requests()
28
    assert not tracker.new_requests_event.is_set()
29
30
31
    assert len(new) == 2
    assert new[0]["request_id"] == "2"
    assert new[1]["request_id"] == "3"
32
    assert not aborted
33
34
35
36
37
38
    assert not stream_2.finished
    assert not stream_3.finished

    # request_ids must be unique
    with pytest.raises(KeyError):
        tracker.add_request("1")
39
    assert not tracker.new_requests_event.is_set()
40
41

    tracker.abort_request("1")
42
43
44
    new, aborted = tracker.get_new_and_aborted_requests()
    assert len(aborted) == 1
    assert "1" in aborted
45
46
47
48
49
    assert not new
    assert stream_1.finished

    stream_4 = tracker.add_request("4")
    tracker.abort_request("4")
50
51
    assert tracker.new_requests_event.is_set()
    await tracker.wait_for_new_requests()
52
    new, aborted = tracker.get_new_and_aborted_requests()
53
54
55
56
    # aborted new requests will cancel each other out -
    # there's no need for them to propagate into the
    # engine
    assert not aborted
57
58
59
60
    assert not new
    assert stream_4.finished

    stream_5 = tracker.add_request("5")
61
    assert tracker.new_requests_event.is_set()
62
    tracker.process_request_output(
63
64
        RequestOutput("2", "output", [], [], [], finished=True))
    await tracker.wait_for_new_requests()
65
    new, aborted = tracker.get_new_and_aborted_requests()
66
    assert not tracker.new_requests_event.is_set()
67
    assert not aborted
68
69
70
71
    assert len(new) == 1
    assert new[0]["request_id"] == "5"
    assert stream_2.finished
    assert not stream_5.finished