from __future__ import annotations from types import SimpleNamespace from src.services.ollama_endpoint_resolver import ( resolve_ollama_selection, ) def _settings( *, primary: str = "http://192.168.0.110:11435", secondary: str = "http://192.168.0.110:11436", fallback: str = "http://192.168.0.110:11437", ) -> SimpleNamespace: return SimpleNamespace( OLLAMA_URL=primary, OLLAMA_SECONDARY_URL=secondary, OLLAMA_FALLBACK_URL=fallback, ) def test_non_sensitive_workloads_prefer_gcp_a_lane() -> None: cfg = _settings() for workload in ( "batch", "embedding", "rag", "code_review", "shadow", "canary", "deep_rca", "image_analysis", "hermes", ): selection = resolve_ollama_selection(workload, config=cfg) assert selection.url == "http://192.168.0.110:11435" assert selection.provider_name == "ollama_gcp_a" assert selection.reason == "primary_interactive_lane" def test_interactive_workloads_stay_on_gcp_a() -> None: cfg = _settings() for workload in ("interactive", "healthcheck", "alert_fast"): selection = resolve_ollama_selection(workload, config=cfg) assert selection.url == "http://192.168.0.110:11435" assert selection.provider_name == "ollama_gcp_a" def test_local_required_workloads_use_local_lane() -> None: cfg = _settings() for workload in ("local_required", "privacy_sensitive", "dr"): selection = resolve_ollama_selection(workload, config=cfg) assert selection.url == "http://192.168.0.110:11437" assert selection.provider_name == "ollama_local" def test_non_sensitive_workloads_fall_back_to_gcp_b_when_primary_missing() -> None: cfg = _settings(primary="") selection = resolve_ollama_selection("embedding", config=cfg) assert selection.url == "http://192.168.0.110:11436" assert selection.provider_name == "ollama_gcp_b" assert selection.reason == "primary_missing_gcp_b_fallback"