Files
Timmy-time-dashboard/tests/timmy/test_ollama_timeout.py
hermes 466ad08d7d
Some checks failed
Tests / lint (push) Has been cancelled
Tests / test (push) Has been cancelled
[loop-cycle-34] fix: mock Ollama model resolution in create_timmy tests (#121) (#126)
2026-03-15 08:20:00 -04:00

70 lines
2.3 KiB
Python

"""Test that Ollama model is created with a generous timeout.
The default httpx timeout is too short for complex prompts (30-60s generation).
This caused socket read errors in production. The agno Ollama class uses
``timeout`` (not ``request_timeout``).
"""
import importlib
from unittest.mock import MagicMock, patch
def test_base_agent_sets_timeout():
"""BaseAgent creates Ollama with timeout=300."""
# Ensure module is loaded before patching — prevents xdist ordering issues
importlib.import_module("timmy.agents.base")
with patch("timmy.agents.base.Ollama") as mock_ollama, patch("timmy.agents.base.Agent"):
mock_ollama.return_value = MagicMock()
# Import after patching to get the patched version
from timmy.agents.base import BaseAgent
class ConcreteAgent(BaseAgent):
async def handle_message(self, message: str) -> str:
return ""
# Trigger Ollama construction
try:
ConcreteAgent(
agent_id="test",
name="Test",
role="tester",
system_prompt="You are a test agent.",
tools=[],
)
except Exception:
pass # MCP registry may not be available
# Verify Ollama was called with timeout
if mock_ollama.called:
_, kwargs = mock_ollama.call_args
assert kwargs.get("timeout") == 300, (
f"Expected timeout=300, got {kwargs.get('timeout')}"
)
def test_main_agent_sets_timeout():
"""create_timmy() creates Ollama with timeout=300."""
with (
patch("timmy.agent.Ollama") as mock_ollama,
patch("timmy.agent.SqliteDb"),
patch("timmy.agent.Agent"),
patch("timmy.agent._resolve_model_with_fallback", return_value=("llama3.2:3b", False)),
patch("timmy.agent._check_model_available", return_value=True),
):
mock_ollama.return_value = MagicMock()
from timmy.agent import create_timmy
try:
create_timmy()
except Exception:
pass
if mock_ollama.called:
_, kwargs = mock_ollama.call_args
assert kwargs.get("timeout") == 300, (
f"Expected timeout=300, got {kwargs.get('timeout')}"
)