main
py 75 lines 2.33 KB
Raw
1 # SPDX-License-Identifier: Apache-2.0
2 # SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3
4
5 import pytest
6
7 from vllm.lora.request import LoRARequest
8 from vllm.lora.resolver import LoRAResolver, LoRAResolverRegistry
9
10
11 class DummyLoRAResolver(LoRAResolver):
12 """A dummy LoRA resolver for testing."""
13
14 async def resolve_lora(
15 self, base_model_name: str, lora_name: str
16 ) -> LoRARequest | None:
17 if lora_name == "test_lora":
18 return LoRARequest(
19 lora_name=lora_name,
20 lora_path=f"/dummy/path/{base_model_name}/{lora_name}",
21 lora_int_id=abs(hash(lora_name)),
22 )
23 return None
24
25
26 def test_resolver_registry_registration():
27 """Test basic resolver registration functionality."""
28 registry = LoRAResolverRegistry
29 resolver = DummyLoRAResolver()
30
31 # Register a new resolver
32 registry.register_resolver("dummy", resolver)
33 assert "dummy" in registry.get_supported_resolvers()
34
35 # Get registered resolver
36 retrieved_resolver = registry.get_resolver("dummy")
37 assert retrieved_resolver is resolver
38
39
40 def test_resolver_registry_duplicate_registration():
41 """Test registering a resolver with an existing name."""
42 registry = LoRAResolverRegistry
43 resolver1 = DummyLoRAResolver()
44 resolver2 = DummyLoRAResolver()
45
46 registry.register_resolver("dummy", resolver1)
47 registry.register_resolver("dummy", resolver2)
48
49 assert registry.get_resolver("dummy") is resolver2
50
51
52 def test_resolver_registry_unknown_resolver():
53 """Test getting a non-existent resolver."""
54 registry = LoRAResolverRegistry
55
56 with pytest.raises(KeyError, match="not found"):
57 registry.get_resolver("unknown_resolver")
58
59
60 @pytest.mark.asyncio
61 async def test_dummy_resolver_resolve():
62 """Test the dummy resolver's resolve functionality."""
63 dummy_resolver = DummyLoRAResolver()
64 base_model_name = "base_model_test"
65 lora_name = "test_lora"
66
67 # Test successful resolution
68 result = await dummy_resolver.resolve_lora(base_model_name, lora_name)
69 assert isinstance(result, LoRARequest)
70 assert result.lora_name == lora_name
71 assert result.lora_path == f"/dummy/path/{base_model_name}/{lora_name}"
72
73 # Test failed resolution
74 result = await dummy_resolver.resolve_lora(base_model_name, "nonexistent_lora")
75 assert result is None