Spaces:
Running
on
T4
Running
on
T4
Patryk Studzinski
feat: Add main backup and simplified service implementations with API endpoints
9222e8a
| """ | |
| Unit tests for simplified Bielik service | |
| Tests the API structure without running actual models | |
| """ | |
| import os | |
| import json | |
| from unittest.mock import Mock, AsyncMock, patch | |
| # Skip llama-cpp installation during testing | |
| os.environ["SKIP_LLAMA_INSTALL"] = "1" | |
| # Mock the registry before importing main | |
| mock_registry = Mock() | |
| mock_registry.get_available_model_names.return_value = ["bielik-1.5b-transformer", "bielik-11b-transformer"] | |
| mock_registry.get_model_info.return_value = {"type": "transformers", "device": "cuda:0"} | |
| def test_app_structure(): | |
| """Test that simplified app has correct endpoints""" | |
| from app.main import app | |
| # Get all routes | |
| routes = {route.path: route.methods for route in app.routes} | |
| # Check required endpoints exist | |
| assert "/" in routes, "Root endpoint missing" | |
| assert "/health" in routes, "Health endpoint missing" | |
| assert "/models" in routes, "Models endpoint missing" | |
| assert "/chat" in routes, "Chat endpoint missing" | |
| assert "/generate" in routes, "Generate endpoint missing" | |
| # Check methods | |
| assert "GET" in routes["/health"], "Health should be GET" | |
| assert "GET" in routes["/models"], "Models should be GET" | |
| assert "POST" in routes["/chat"], "Chat should be POST" | |
| assert "POST" in routes["/generate"], "Generate should be POST" | |
| print("β App structure correct") | |
| print(f" Routes: {list(routes.keys())}") | |
| def test_no_business_logic(): | |
| """Verify no domain/infill endpoints exist""" | |
| from app.main import app | |
| routes = {route.path for route in app.routes} | |
| # These should NOT exist | |
| forbidden_routes = ["/enhance", "/compare", "/infill", "/compare-infill", "/user/me"] | |
| for route in forbidden_routes: | |
| assert route not in routes, f"Business logic endpoint {route} should not exist" | |
| print("β No business logic endpoints found") | |
| def test_request_schemas(): | |
| """Test request/response schemas are valid""" | |
| from app.main import ChatRequest, GenerateRequest, ChatResponse, GenerateResponse | |
| from app.main import Message, HealthResponse, ModelsResponse | |
| # Test ChatRequest | |
| chat_req = ChatRequest( | |
| model="bielik-1.5b-transformer", | |
| messages=[Message(role="user", content="Hello")] | |
| ) | |
| assert chat_req.model == "bielik-1.5b-transformer" | |
| assert len(chat_req.messages) == 1 | |
| print("β ChatRequest schema valid") | |
| # Test GenerateRequest | |
| gen_req = GenerateRequest( | |
| model="bielik-1.5b-transformer", | |
| prompt="Hello world" | |
| ) | |
| assert gen_req.model == "bielik-1.5b-transformer" | |
| assert gen_req.prompt == "Hello world" | |
| print("β GenerateRequest schema valid") | |
| # Test HealthResponse | |
| health = HealthResponse( | |
| status="ok", | |
| gpu_available=True, | |
| models_available=2 | |
| ) | |
| assert health.status == "ok" | |
| print("β HealthResponse schema valid") | |
| # Test ModelsResponse | |
| models_resp = ModelsResponse(models=[]) | |
| assert isinstance(models_resp.models, list) | |
| print("β ModelsResponse schema valid") | |
| def test_default_values(): | |
| """Test that requests have sensible defaults""" | |
| from app.main import ChatRequest, GenerateRequest, Message | |
| # Chat with minimal fields | |
| chat = ChatRequest( | |
| model="test", | |
| messages=[Message(role="user", content="test")] | |
| ) | |
| assert chat.max_tokens == 150 | |
| assert chat.temperature == 0.7 | |
| assert chat.top_p == 0.9 | |
| print("β Chat defaults correct") | |
| # Generate with minimal fields | |
| gen = GenerateRequest( | |
| model="test", | |
| prompt="test" | |
| ) | |
| assert gen.max_tokens == 150 | |
| assert gen.temperature == 0.7 | |
| assert gen.top_p == 0.9 | |
| print("β Generate defaults correct") | |
| if __name__ == "__main__": | |
| print("\n=== Testing Simplified Bielik Service ===\n") | |
| try: | |
| test_app_structure() | |
| test_no_business_logic() | |
| test_request_schemas() | |
| test_default_values() | |
| print("\nβ All tests passed!") | |
| print("\n=== Phase 1 Verification Complete ===") | |
| except AssertionError as e: | |
| print(f"\nβ Test failed: {e}") | |
| exit(1) | |