| 1 | # SPDX-License-Identifier: Apache-2.0 |
| 2 | # SPDX-FileCopyrightText: Copyright contributors to the vLLM project |
| 3 | |
| 4 | from vllm import SamplingParams |
| 5 | from vllm.v1.engine import EngineCoreRequest |
| 6 | from vllm.v1.kv_hints import KvHintAction, KvHintsEnvelope |
| 7 | from vllm.v1.request import Request, RequestStatus |
| 8 | |
| 9 | |
| 10 | def test_request_status_fmt_str(): |
| 11 | """Test that the string representation of RequestStatus is correct.""" |
| 12 | assert f"{RequestStatus.WAITING}" == "WAITING" |
| 13 | assert ( |
| 14 | f"{RequestStatus.WAITING_FOR_STRUCTURED_OUTPUT_GRAMMAR}" |
| 15 | == "WAITING_FOR_STRUCTURED_OUTPUT_GRAMMAR" |
| 16 | ) |
| 17 | assert f"{RequestStatus.WAITING_FOR_REMOTE_KVS}" == "WAITING_FOR_REMOTE_KVS" |
| 18 | assert f"{RequestStatus.WAITING_FOR_STREAMING_REQ}" == "WAITING_FOR_STREAMING_REQ" |
| 19 | assert f"{RequestStatus.RUNNING}" == "RUNNING" |
| 20 | assert f"{RequestStatus.PREEMPTED}" == "PREEMPTED" |
| 21 | assert f"{RequestStatus.FINISHED_STOPPED}" == "FINISHED_STOPPED" |
| 22 | assert f"{RequestStatus.FINISHED_LENGTH_CAPPED}" == "FINISHED_LENGTH_CAPPED" |
| 23 | assert f"{RequestStatus.FINISHED_ABORTED}" == "FINISHED_ABORTED" |
| 24 | assert f"{RequestStatus.FINISHED_IGNORED}" == "FINISHED_IGNORED" |
| 25 | |
| 26 | |
| 27 | def test_request_copies_session_id_from_engine_core_request(): |
| 28 | """Test that Request preserves session ID from EngineCoreRequest.""" |
| 29 | engine_request = EngineCoreRequest( |
| 30 | request_id="request-1", |
| 31 | prompt_token_ids=[1, 2, 3], |
| 32 | mm_features=None, |
| 33 | sampling_params=SamplingParams(max_tokens=1), |
| 34 | pooling_params=None, |
| 35 | arrival_time=0.0, |
| 36 | lora_request=None, |
| 37 | cache_salt=None, |
| 38 | data_parallel_rank=None, |
| 39 | session_id="session-1", |
| 40 | ) |
| 41 | |
| 42 | request = Request.from_engine_core_request(engine_request, block_hasher=None) |
| 43 | |
| 44 | assert request.session_id == "session-1" |
| 45 | |
| 46 | |
| 47 | def test_request_copies_kv_hints_from_engine_core_request(): |
| 48 | """Test that Request preserves KV hints from EngineCoreRequest.""" |
| 49 | kv_hints = KvHintsEnvelope( |
| 50 | protocol_version="0.1", |
| 51 | message_id="msg-1", |
| 52 | actions=[ |
| 53 | KvHintAction( |
| 54 | action_id="action-1", |
| 55 | action_type="example.action", |
| 56 | action_version="1.0", |
| 57 | payload={}, |
| 58 | ) |
| 59 | ], |
| 60 | ) |
| 61 | engine_request = EngineCoreRequest( |
| 62 | request_id="request-1", |
| 63 | prompt_token_ids=[1, 2, 3], |
| 64 | mm_features=None, |
| 65 | sampling_params=SamplingParams(max_tokens=1), |
| 66 | pooling_params=None, |
| 67 | arrival_time=0.0, |
| 68 | lora_request=None, |
| 69 | cache_salt=None, |
| 70 | data_parallel_rank=None, |
| 71 | kv_hints=kv_hints, |
| 72 | ) |
| 73 | |
| 74 | request = Request.from_engine_core_request(engine_request, block_hasher=None) |
| 75 | |
| 76 | assert request.kv_hints == kv_hints |