Files
ewoooc/tests/test_pixelrag_vlm_route_readiness_service.py
ogt 1a27ca51d0
Some checks failed
CD Pipeline / deploy (push) Has been cancelled
feat(ai): add PixelRAG VLM generate preflight
2026-07-10 00:17:02 +08:00

176 lines
6.6 KiB
Python

import json
class FakeResponse:
def __init__(self, status_code=200, payload=None, text=""):
self.status_code = status_code
self._payload = payload or {}
self.text = text
def json(self):
return self._payload
def test_pixelrag_vlm_route_readiness_selects_installed_candidate(monkeypatch):
from services import pixelrag_vlm_route_readiness_service as service
hosts = [
"http://primary:11434",
"http://secondary:11434",
]
monkeypatch.setattr(service, "_approved_hosts", lambda: hosts)
def fake_get(url, timeout):
if url.startswith("http://primary"):
raise TimeoutError("primary timeout")
return FakeResponse(
payload={
"models": [
{"name": "gemma3:4b"},
{"name": "bge-m3:latest"},
]
}
)
monkeypatch.setattr(service.requests, "get", fake_get)
payload = service.build_pixelrag_vlm_route_readiness(
model="minicpm-v:latest",
timeout_seconds=1,
)
assert payload["policy"] == "read_only_pixelrag_vlm_route_readiness_v1"
assert payload["status"] == "warning"
assert payload["summary"]["reachable_host_count"] == 1
assert payload["summary"]["configured_model_available_count"] == 0
assert payload["summary"]["candidate_model"] == "gemma3:4b"
assert payload["summary"]["model_route_ready"] is True
assert payload["controlled_apply"]["model_call"] is False
assert payload["controlled_apply"]["writes_database"] is False
assert payload["next_machine_action"] == "run_pixelrag_vlm_replay_worker_execute_with_selected_model"
def test_pixelrag_vlm_route_readiness_critical_when_no_candidate(monkeypatch):
from services import pixelrag_vlm_route_readiness_service as service
monkeypatch.setattr(service, "_approved_hosts", lambda: ["http://secondary:11434"])
monkeypatch.setattr(
service.requests,
"get",
lambda url, timeout: FakeResponse(payload={"models": [{"name": "bge-m3:latest"}]}),
)
payload = service.build_pixelrag_vlm_route_readiness(model="minicpm-v:latest")
assert payload["status"] == "critical"
assert payload["success"] is False
assert payload["summary"]["model_route_ready"] is False
assert payload["next_machine_action"] == "install_or_configure_pixelrag_vlm_model_on_approved_ollama_host"
def test_pixelrag_vlm_route_readiness_generate_probe_success(monkeypatch):
from services import pixelrag_vlm_route_readiness_service as service
monkeypatch.setattr(service, "_approved_hosts", lambda: ["http://secondary:11434"])
monkeypatch.setattr(
service.requests,
"get",
lambda url, timeout: FakeResponse(payload={"models": [{"name": "gemma3:4b"}]}),
)
monkeypatch.setattr(
service.requests,
"post",
lambda url, json, timeout: FakeResponse(payload={"response": "OK", "done": True}),
)
payload = service.build_pixelrag_vlm_route_readiness(
model="minicpm-v:latest",
probe_generate=True,
probe_timeout_seconds=1,
)
assert payload["status"] == "warning"
assert payload["summary"]["candidate_model"] == "gemma3:4b"
assert payload["summary"]["tag_model_route_ready"] is True
assert payload["summary"]["model_route_ready"] is True
assert payload["summary"]["generate_probe_performed"] is True
assert payload["summary"]["generate_probe_ok_count"] == 1
assert payload["summary"]["generate_route_ready"] is True
assert payload["summary"]["generate_ready_host"] == "http://secondary:11434"
assert payload["controlled_apply"]["model_call"] is True
def test_pixelrag_vlm_route_readiness_generate_probe_failure_blocks_route(monkeypatch):
from services import pixelrag_vlm_route_readiness_service as service
monkeypatch.setattr(service, "_approved_hosts", lambda: ["http://secondary:11434"])
monkeypatch.setattr(
service.requests,
"get",
lambda url, timeout: FakeResponse(payload={"models": [{"name": "gemma3:4b"}]}),
)
def fake_post(url, json, timeout):
raise TimeoutError("generate timeout")
monkeypatch.setattr(service.requests, "post", fake_post)
payload = service.build_pixelrag_vlm_route_readiness(
model="minicpm-v:latest",
probe_generate=True,
probe_timeout_seconds=1,
)
assert payload["status"] == "critical"
assert payload["success"] is False
assert payload["summary"]["candidate_model"] == "gemma3:4b"
assert payload["summary"]["tag_model_route_ready"] is True
assert payload["summary"]["model_route_ready"] is False
assert payload["summary"]["generate_probe_performed"] is True
assert payload["summary"]["generate_probe_ok_count"] == 0
assert payload["summary"]["generate_route_ready"] is False
assert payload["next_machine_action"] == "repair_ollama_vlm_generate_runtime_or_proxy_timeout"
def test_pixelrag_vlm_route_readiness_route_returns_readback(monkeypatch):
from flask import Flask
from routes import system_public_routes as routes
from services import pixelrag_vlm_route_readiness_service as service
monkeypatch.setattr(
service,
"build_pixelrag_vlm_route_readiness",
lambda **kwargs: {
"success": True,
"policy": "read_only_pixelrag_vlm_route_readiness_v1",
"status": "ok",
"summary": {"model_route_ready": True, "candidate_model": "gemma3:4b"},
"next_machine_action": "run_pixelrag_vlm_replay_worker_execute",
},
)
app = Flask(__name__)
with app.test_request_context(
"/api/ai-automation/pixelrag-vlm-route-readiness?model=minicpm-v:latest"
"&probe_generate=true&probe_timeout=4"
):
response = routes.ai_automation_pixelrag_vlm_route_readiness_api.__wrapped__()
payload = response.get_json()
assert payload["policy"] == "read_only_pixelrag_vlm_route_readiness_v1"
assert payload["summary"]["candidate_model"] == "gemma3:4b"
def test_pixelrag_vlm_route_readiness_cli_outputs_json(monkeypatch, tmp_path):
from services import pixelrag_vlm_route_readiness_service as service
monkeypatch.setattr(service, "_approved_hosts", lambda: ["http://secondary:11434"])
monkeypatch.setattr(
service.requests,
"get",
lambda url, timeout: FakeResponse(payload={"models": [{"name": "gemma3:4b"}]}),
)
payload = service.build_pixelrag_vlm_route_readiness(model="minicpm-v:latest")
assert json.dumps(payload, ensure_ascii=False)
assert payload["summary"]["candidate_model"] == "gemma3:4b"