main
py 84 lines 2.31 KB
Raw
1 # SPDX-License-Identifier: Apache-2.0
2 # SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3
4 from typing import Any
5
6 import pytest
7 import requests
8
9 from tests.utils import RemoteOpenAIServer
10
11 MODEL_NAME = "Qwen/Qwen3-0.6B"
12
13
14 class TestWorkerExtension:
15 def get_model_name(self) -> str:
16 """Test non-pydantic return type."""
17 return MODEL_NAME
18
19 def echo_args_kwargs(self, *args, **kwargs) -> dict[str, Any]:
20 """Echo back both args and kwargs."""
21 return dict(
22 args=list(args),
23 kwargs=kwargs,
24 total_items=len(args) + len(kwargs),
25 )
26
27 def return_none(self, *args, **kwargs) -> None:
28 """Test method that does not return anything."""
29 return
30
31
32 @pytest.fixture(scope="module")
33 def server():
34 args = [
35 "--max-model-len",
36 "8192",
37 "--max-num-seqs",
38 "128",
39 "--worker-extension-cls",
40 "tests.entrypoints.serve.dev.rpc.test_collective_rpc.TestWorkerExtension",
41 ]
42 with RemoteOpenAIServer(
43 MODEL_NAME,
44 args,
45 env_dict={"VLLM_SERVER_DEV_MODE": "1", "CUDA_VISIBLE_DEVICES": "0"},
46 ) as remote_server:
47 yield remote_server
48
49
50 def test_get_model_name(server):
51 """Test basic response."""
52 response = requests.post(
53 server.url_for("collective_rpc"), json={"method": "get_model_name"}
54 )
55 assert response.status_code == 200
56 results = response.json()
57 assert "results" in results
58 assert results["results"] == [MODEL_NAME]
59
60
61 def test_return_none(server):
62 """Test return none."""
63 response = requests.post(
64 server.url_for("collective_rpc"), json={"method": "return_none"}
65 )
66 assert response.status_code == 200
67 results = response.json()
68 assert results["results"] == [None]
69
70
71 def test_echo_args_kwargs(server):
72 """Test args, kwargs, and dict response."""
73 args = ["arg1", "arg2"]
74 kwargs = {"key1": "value1", "key2": "value2"}
75 response = requests.post(
76 server.url_for("collective_rpc"),
77 json={"method": "echo_args_kwargs", "args": args, "kwargs": kwargs},
78 )
79 assert response.status_code == 200
80 results = response.json()
81 result = results["results"][0]
82 assert result["args"] == args
83 assert result["kwargs"] == kwargs
84 assert result["total_items"] == len(args) + len(kwargs)