| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- """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
|