Spaces:
Running on Zero
Running on Zero
| from __future__ import annotations | |
| import unittest | |
| import requests | |
| from models.llama_cpp_service import LlamaCppConfig, LlamaCppService, local_file_status | |
| from models.model_catalog import load_model_catalog | |
| from models.service_factory import create_text_service | |
| class LlamaCppServiceTest(unittest.TestCase): | |
| def test_factory_creates_llama_cpp_service(self) -> None: | |
| catalog = load_model_catalog("config/models.yaml") | |
| service = create_text_service(catalog["minicpm5_1b"], "llama.cpp") | |
| self.assertIsInstance(service, LlamaCppService) | |
| def test_status_reports_missing_executable(self) -> None: | |
| status = LlamaCppService.status(which_func=lambda _name: None) | |
| self.assertFalse(status.available) | |
| self.assertIn("not found", status.detail) | |
| def test_launch_command_includes_model_and_mmproj(self) -> None: | |
| catalog = load_model_catalog("config/models.yaml") | |
| service = LlamaCppService( | |
| catalog["minicpm_v46"], | |
| LlamaCppConfig( | |
| server_path="C:/llama/llama-server.exe", | |
| model_path="model.gguf", | |
| mmproj_path="mmproj.gguf", | |
| ), | |
| ) | |
| self.assertEqual( | |
| service.launch_command(), | |
| [ | |
| "C:/llama/llama-server.exe", | |
| "-m", | |
| "model.gguf", | |
| "--mmproj", | |
| "mmproj.gguf", | |
| ], | |
| ) | |
| def test_launch_command_is_empty_without_model_path(self) -> None: | |
| catalog = load_model_catalog("config/models.yaml") | |
| service = LlamaCppService(catalog["minicpm5_1b"]) | |
| self.assertEqual(service.launch_command(), []) | |
| def test_chat_returns_clear_unavailable_message(self) -> None: | |
| catalog = load_model_catalog("config/models.yaml") | |
| response = LlamaCppService(catalog["minicpm5_1b"]).chat("", "Hello") | |
| self.assertIn("[llama.cpp unavailable]", response) | |
| def test_extracts_openai_compatible_response(self) -> None: | |
| response = LlamaCppService._extract_response( | |
| {"choices": [{"message": {"content": "hello"}}]} | |
| ) | |
| self.assertEqual(response, "hello") | |
| def test_status_reports_unreachable_server(self) -> None: | |
| def raise_request_error(*_args, **_kwargs): | |
| raise requests.ConnectionError("offline") | |
| status = LlamaCppService.status( | |
| which_func=lambda _name: "llama-server", | |
| get_func=raise_request_error, | |
| ) | |
| self.assertFalse(status.available) | |
| self.assertIn("not reachable", status.detail) | |
| def test_status_uses_configured_server_path(self) -> None: | |
| def ok_response(*_args, **_kwargs): | |
| response = requests.Response() | |
| response.status_code = 200 | |
| return response | |
| status = LlamaCppService.status( | |
| which_func=lambda _name: None, | |
| get_func=ok_response, | |
| server_path=__file__, | |
| ) | |
| self.assertTrue(status.available) | |
| def test_local_file_status(self) -> None: | |
| self.assertEqual(local_file_status(""), "not configured") | |
| self.assertEqual(local_file_status("missing-file.gguf"), "missing") | |
| if __name__ == "__main__": | |
| unittest.main() | |