- Introduced a local read-only Debug API accessible at `http://127.0.0.1:17821` for diagnostics and agent interactions. - Updated CLI commands to include `gpu-rent debug` for launching the Debug API. - Enhanced documentation to reflect the new Debug API features and usage. - Modified configuration to include `DEBUG_LOCAL_PORT` for easier customization. - Added tests to ensure Debug API links are correctly generated in access card outputs.
75 lines
2.4 KiB
Python
75 lines
2.4 KiB
Python
from gpu_rent.access_card import collect_access_links, mcp_snippet_lines, render_access_panel
|
|
|
|
|
|
class _Cfg:
|
|
swarmui_local_port = 17801
|
|
llm_runtime = "ollama"
|
|
ollama_local_port = 17811
|
|
enable_swarmui = True
|
|
debug_local_port = 17821
|
|
|
|
|
|
def test_collect_links_swarm_and_ollama(monkeypatch):
|
|
monkeypatch.setattr(
|
|
"gpu_rent.access_card.load_state",
|
|
lambda: type("S", (), {"notes": {"llm_runtime": "ollama"}})(),
|
|
)
|
|
links = collect_access_links(_Cfg(), tunneled=True)
|
|
labels = [x.label for x in links]
|
|
assert "Debug API" in labels
|
|
assert "SwarmUI UI" in labels
|
|
assert "Assistent" in labels
|
|
assert "SwarmUI MCP" in labels
|
|
assert "Ollama API" in labels
|
|
assert any(x.label == "Assistent" and "вкладка" in x.note for x in links)
|
|
dbg = next(x for x in links if x.label == "Debug API")
|
|
assert dbg.url == "http://127.0.0.1:17821/"
|
|
|
|
|
|
def test_collect_links_no_tunnel():
|
|
links = collect_access_links(_Cfg(), tunneled=False)
|
|
assert links[0].label == "Debug API"
|
|
assert any(x.url.startswith("gpu-rent tunnel") for x in links)
|
|
|
|
|
|
def test_mcp_snippet_json():
|
|
lines = mcp_snippet_lines(_Cfg())
|
|
assert any("17801/mcp" in line for line in lines)
|
|
|
|
|
|
def test_access_panel_red_when_killer_failed(monkeypatch):
|
|
monkeypatch.setattr(
|
|
"gpu_rent.access_card.load_state",
|
|
lambda: type(
|
|
"S",
|
|
(),
|
|
{"notes": {"idle_killer": "failed", "idle_killer_error": "no cred"}},
|
|
)(),
|
|
)
|
|
panel = render_access_panel(_Cfg(), tunneled=True)
|
|
assert panel.border_style == "red"
|
|
|
|
|
|
def test_access_panel_hides_stale_llm_error_when_ollama_ok(monkeypatch):
|
|
monkeypatch.setattr(
|
|
"gpu_rent.access_card.load_state",
|
|
lambda: type(
|
|
"S",
|
|
(),
|
|
{
|
|
"notes": {
|
|
"llm_error": "Ollama /api/tags без моделей",
|
|
"stack_vm": [
|
|
{
|
|
"name": "ollama",
|
|
"ok": True,
|
|
"detail": "1 models (huihui_ai/qwen3-vl-abliterated:8b-instruct)",
|
|
}
|
|
],
|
|
}
|
|
},
|
|
)(),
|
|
)
|
|
panel = render_access_panel(_Cfg(), tunneled=True)
|
|
assert panel.border_style != "red"
|