| from __future__ import annotations |
|
|
| import tempfile |
| import unittest |
| from pathlib import Path |
|
|
| from models.local_backend_config import ( |
| LocalBackendConfig, |
| build_llama_server_command, |
| load_local_backend_config, |
| local_backend_summary, |
| save_local_backend_config, |
| ) |
|
|
|
|
| class LocalBackendConfigTest(unittest.TestCase): |
| def test_loads_defaults_when_config_is_missing(self) -> None: |
| config = load_local_backend_config("missing-local-backends.yaml") |
|
|
| self.assertEqual(config.llama_cpp_server_url, "http://127.0.0.1:8080") |
| self.assertEqual(config.llama_server_path, "") |
| self.assertEqual(config.openai_compatible_base_url, "http://127.0.0.1:1234") |
| self.assertEqual(config.openai_compatible_model_name, "") |
| self.assertEqual(config.gguf_path, "") |
|
|
| def test_saves_and_loads_local_backend_config(self) -> None: |
| with tempfile.TemporaryDirectory() as tmp: |
| path = Path(tmp) / "local_backends.yaml" |
| expected = LocalBackendConfig( |
| llama_cpp_server_url="http://127.0.0.1:9090", |
| llama_server_path="C:/llama/llama-server.exe", |
| openai_compatible_base_url="http://local.test:1234", |
| openai_compatible_model_name="loaded-model", |
| gguf_path="model.gguf", |
| mmproj_path="mmproj.gguf", |
| n_ctx=8192, |
| n_gpu_layers=12, |
| ) |
|
|
| saved = save_local_backend_config(expected, path) |
| actual = load_local_backend_config(saved) |
|
|
| self.assertEqual(actual, expected) |
|
|
| def test_builds_llama_server_command_only_when_model_is_configured(self) -> None: |
| self.assertEqual(build_llama_server_command(LocalBackendConfig()), []) |
|
|
| command = build_llama_server_command( |
| LocalBackendConfig( |
| llama_server_path="C:/llama/llama-server.exe", |
| gguf_path="model.gguf", |
| mmproj_path="mmproj.gguf", |
| ) |
| ) |
|
|
| self.assertEqual( |
| command, |
| [ |
| "C:/llama/llama-server.exe", |
| "-m", |
| "model.gguf", |
| "--mmproj", |
| "mmproj.gguf", |
| ], |
| ) |
|
|
| def test_summary_records_no_startup_download_or_auto_load(self) -> None: |
| summary = local_backend_summary(LocalBackendConfig(gguf_path="model.gguf")) |
|
|
| self.assertFalse(summary["startup_downloads"]) |
| self.assertFalse(summary["auto_model_load"]) |
| self.assertIn("llama-server -m model.gguf", summary["llama_server_command"]) |
| self.assertEqual(summary["openai_compatible_base_url"], "http://127.0.0.1:1234") |
| self.assertEqual(summary["files"][0][0], "llama-server") |
|
|
|
|
| if __name__ == "__main__": |
| unittest.main() |
|
|