main
py 71 lines 2.68 KB
Raw
1 # SPDX-License-Identifier: Apache-2.0
2 # SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3 from unittest.mock import MagicMock
4
5 import pytest
6
7 from vllm.distributed.ec_transfer.ec_connector.base import ECConnectorRole
8 from vllm.distributed.ec_transfer.ec_connector.cpu.connector import ECCPUConnector
9 from vllm.distributed.ec_transfer.ec_connector.factory import ECConnectorFactory
10
11
12 def _cfg():
13 ec = MagicMock()
14 ec.is_ec_producer = True
15 ec.is_ec_consumer = True
16 cfg = MagicMock()
17 cfg.ec_transfer_config = ec
18 return cfg
19
20
21 def test_scheduler_role_builds_only_scheduler(monkeypatch):
22 fake_sched = MagicMock()
23 monkeypatch.setattr(ECCPUConnector, "_make_scheduler", lambda self, cfg: fake_sched)
24 c = ECCPUConnector(_cfg(), ECConnectorRole.SCHEDULER)
25 assert c.connector_scheduler is fake_sched
26 assert c.connector_worker is None
27 c.has_cache_item("x")
28 fake_sched.has_cache_item.assert_called_once_with("x")
29
30
31 def test_worker_role_builds_only_worker(monkeypatch):
32 fake_worker = MagicMock()
33 monkeypatch.setattr(ECCPUConnector, "_make_worker", lambda self, cfg: fake_worker)
34 c = ECCPUConnector(_cfg(), ECConnectorRole.WORKER)
35 assert c.connector_worker is fake_worker
36 assert c.connector_scheduler is None
37
38
39 @pytest.mark.parametrize("role", [ECConnectorRole.SCHEDULER, ECConnectorRole.WORKER])
40 def test_v1_model_runner_is_rejected(monkeypatch, role):
41 """The V1 runner never reports save completions, so refuse to start."""
42 monkeypatch.setattr(
43 ECCPUConnector, "_make_scheduler", lambda self, cfg: MagicMock()
44 )
45 monkeypatch.setattr(ECCPUConnector, "_make_worker", lambda self, cfg: MagicMock())
46 cfg = _cfg()
47 cfg.use_v2_model_runner = False
48
49 with pytest.raises(ValueError, match="V2 model runner"):
50 ECCPUConnector(cfg, role)
51
52
53 def test_factory_registered():
54 cls = ECConnectorFactory._registry["ECCPUConnector"]()
55 assert cls is ECCPUConnector
56
57
58 def test_request_finished_forwards_to_scheduler(monkeypatch):
59 from unittest.mock import MagicMock
60
61 import vllm.distributed.ec_transfer.ec_connector.cpu.connector as conn_mod # noqa: F401
62 from vllm.distributed.ec_transfer.ec_connector.base import ECConnectorRole
63 from vllm.distributed.ec_transfer.ec_connector.cpu.connector import ECCPUConnector
64
65 fake_sched = MagicMock()
66 fake_sched.request_finished.return_value = (False, {"h1": {"peer_port": 1}})
67 monkeypatch.setattr(ECCPUConnector, "_make_scheduler", lambda self, cfg: fake_sched)
68 c = ECCPUConnector(_cfg(), ECConnectorRole.SCHEDULER)
69 req = MagicMock()
70 assert c.request_finished(req) == (False, {"h1": {"peer_port": 1}})
71 fake_sched.request_finished.assert_called_once_with(req)