Files
hkuds--lightrag/tests/api/config/test_api_config_vlm_enable.py
2026-07-13 12:08:54 +08:00

112 lines
3.5 KiB
Python

"""Offline tests for VLM_PROCESS_ENABLE and renamed role timeout vars."""
from __future__ import annotations
import sys
import pytest
from lightrag.api.config import parse_args
pytestmark = pytest.mark.offline
def _reset_vlm_env(monkeypatch):
for key in (
"VLM_PROCESS_ENABLE",
"VLM_LLM_BINDING",
"VLM_LLM_MODEL",
"VLM_LLM_BINDING_HOST",
"VLM_LLM_BINDING_API_KEY",
"VLM_LLM_TIMEOUT",
"EXTRACT_LLM_TIMEOUT",
"KEYWORD_LLM_TIMEOUT",
"QUERY_LLM_TIMEOUT",
"LLM_TIMEOUT_VLM_LLM",
"LLM_TIMEOUT_EXTRACT_LLM",
"LLM_TIMEOUT_KEYWORD_LLM",
"LLM_TIMEOUT_QUERY_LLM",
):
monkeypatch.delenv(key, raising=False)
def test_vlm_process_enable_defaults_to_false(monkeypatch):
_reset_vlm_env(monkeypatch)
monkeypatch.setattr(sys, "argv", ["lightrag-server"])
monkeypatch.setenv("LLM_BINDING", "openai")
args = parse_args()
assert args.vlm_process_enable is False
def test_vlm_process_enable_true_with_openai_passes(monkeypatch):
_reset_vlm_env(monkeypatch)
monkeypatch.setattr(sys, "argv", ["lightrag-server"])
monkeypatch.setenv("LLM_BINDING", "openai")
monkeypatch.setenv("VLM_PROCESS_ENABLE", "true")
args = parse_args()
assert args.vlm_process_enable is True
def test_vlm_process_enable_rejects_lollms_base_binding(monkeypatch):
_reset_vlm_env(monkeypatch)
monkeypatch.setattr(sys, "argv", ["lightrag-server"])
monkeypatch.setenv("LLM_BINDING", "lollms")
monkeypatch.setenv("VLM_PROCESS_ENABLE", "true")
with pytest.raises(SystemExit) as exc:
parse_args()
assert "lollms" in str(exc.value).lower()
def test_vlm_process_enable_rejects_lollms_role_binding(monkeypatch):
_reset_vlm_env(monkeypatch)
monkeypatch.setattr(sys, "argv", ["lightrag-server"])
monkeypatch.setenv("LLM_BINDING", "openai")
monkeypatch.setenv("VLM_PROCESS_ENABLE", "true")
monkeypatch.setenv("VLM_LLM_BINDING", "lollms")
# Cross-provider validation needs model + key; fill them so the lollms
# branch is the only failure path.
monkeypatch.setenv("VLM_LLM_MODEL", "anything")
monkeypatch.setenv("VLM_LLM_BINDING_HOST", "http://localhost:9600")
monkeypatch.setenv("VLM_LLM_BINDING_API_KEY", "placeholder")
with pytest.raises(SystemExit) as exc:
parse_args()
assert "lollms" in str(exc.value).lower()
def test_role_timeout_uses_new_variable_names(monkeypatch):
_reset_vlm_env(monkeypatch)
monkeypatch.setattr(sys, "argv", ["lightrag-server"])
monkeypatch.setenv("LLM_BINDING", "openai")
monkeypatch.setenv("EXTRACT_LLM_TIMEOUT", "240")
monkeypatch.setenv("KEYWORD_LLM_TIMEOUT", "120")
monkeypatch.setenv("QUERY_LLM_TIMEOUT", "60")
monkeypatch.setenv("VLM_LLM_TIMEOUT", "300")
args = parse_args()
assert args.extract_llm_timeout == 240
assert args.keyword_llm_timeout == 120
assert args.query_llm_timeout == 60
assert args.vlm_llm_timeout == 300
def test_role_timeout_legacy_variables_no_longer_have_effect(monkeypatch):
"""The breaking-change migration: legacy LLM_TIMEOUT_{ROLE}_LLM is silently ignored."""
_reset_vlm_env(monkeypatch)
monkeypatch.setattr(sys, "argv", ["lightrag-server"])
monkeypatch.setenv("LLM_BINDING", "openai")
monkeypatch.setenv("LLM_TIMEOUT_EXTRACT_LLM", "999")
monkeypatch.setenv("LLM_TIMEOUT_VLM_LLM", "888")
args = parse_args()
assert args.extract_llm_timeout is None
assert args.vlm_llm_timeout is None