| |
| |
|
|
| import pytest |
| from dummy_stat_logger.dummy_stat_logger import DummyStatLogger |
|
|
| from vllm.config import VllmConfig |
| from vllm.engine.arg_utils import AsyncEngineArgs |
| from vllm.v1.engine.async_llm import AsyncLLM |
| from vllm.v1.metrics.loggers import load_stat_logger_plugin_factories |
|
|
|
|
| def test_stat_logger_plugin_is_discovered(monkeypatch: pytest.MonkeyPatch): |
| with monkeypatch.context() as m: |
| m.setenv("VLLM_PLUGINS", "dummy_stat_logger") |
|
|
| factories = load_stat_logger_plugin_factories() |
| assert len(factories) == 1, f"Expected 1 factory, got {len(factories)}" |
| assert factories[0] is DummyStatLogger, ( |
| f"Expected DummyStatLogger class, got {factories[0]}" |
| ) |
|
|
| |
| vllm_config = VllmConfig() |
| instance = factories[0](vllm_config) |
| assert isinstance(instance, DummyStatLogger) |
|
|
|
|
| def test_no_plugins_loaded_if_env_empty(monkeypatch: pytest.MonkeyPatch): |
| with monkeypatch.context() as m: |
| m.setenv("VLLM_PLUGINS", "") |
|
|
| factories = load_stat_logger_plugin_factories() |
| assert factories == [] |
|
|
|
|
| def test_invalid_stat_logger_plugin_raises(monkeypatch: pytest.MonkeyPatch): |
| def fake_plugin_loader(group: str): |
| assert group == "vllm.stat_logger_plugins" |
| return {"bad": object()} |
|
|
| with monkeypatch.context() as m: |
| m.setattr( |
| "vllm.v1.metrics.loggers.load_plugins_by_group", |
| fake_plugin_loader, |
| ) |
| with pytest.raises( |
| TypeError, |
| match="Stat logger plugin 'bad' must be a subclass of StatLoggerBase", |
| ): |
| load_stat_logger_plugin_factories() |
|
|
|
|
| @pytest.mark.asyncio |
| async def test_stat_logger_plugin_integration_with_engine( |
| monkeypatch: pytest.MonkeyPatch, |
| ): |
| with monkeypatch.context() as m: |
| m.setenv("VLLM_PLUGINS", "dummy_stat_logger") |
|
|
| engine_args = AsyncEngineArgs( |
| model="facebook/opt-125m", |
| enforce_eager=True, |
| disable_log_stats=True, |
| ) |
|
|
| engine = AsyncLLM.from_engine_args(engine_args=engine_args) |
|
|
| assert len(engine.logger_manager.stat_loggers) == 2 |
| assert len(engine.logger_manager.stat_loggers[0].per_engine_stat_loggers) == 1 |
| assert isinstance( |
| engine.logger_manager.stat_loggers[0].per_engine_stat_loggers[0], |
| DummyStatLogger, |
| ) |
|
|
| engine.shutdown() |
|
|