AI-notes-agent / tests /test_cascade.py
Jaleed02's picture
Initial commit: Multi-User AI Study Agent
2d25973
Raw
History Blame Contribute Delete
2.86 kB
import sys
import os
from unittest.mock import patch, MagicMock
# Add parent to path for imports
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from src.core import llm_client
def test_full_cascade():
print("--- Testing Full Cascade to Failure ---")
# Mock all clients to throw exceptions
with patch.object(llm_client, 'gemini_client') as mock_gemini, \
patch.object(llm_client, 'groq_client') as mock_groq, \
patch.object(llm_client, 'hf_client') as mock_hf:
mock_gemini.models.generate_content.side_effect = Exception("Simulated Gemini Outage")
mock_groq.chat.completions.create.side_effect = Exception("Simulated Groq Outage")
mock_hf.chat.completions.create.side_effect = Exception("Simulated HF Outage")
success, payload, provider = llm_client.generate_content("Hello, world!")
print(f"Result: Success={success}, Provider={provider}")
assert not success
assert provider == "None"
def test_tier_2_fallback():
print("\n--- Testing Tier 2 Fallback (Groq) ---")
with patch.object(llm_client, 'gemini_client') as mock_gemini, \
patch.object(llm_client, 'groq_client') as mock_groq:
mock_gemini.models.generate_content.side_effect = Exception("Simulated Gemini Outage")
mock_response = MagicMock()
mock_response.choices[0].message.content = "Groq response"
mock_groq.chat.completions.create.return_value = mock_response
success, payload, provider = llm_client.generate_content("Hello, world!")
print(f"Result: Success={success}, Provider={provider}")
assert success
assert provider == "Groq"
assert payload == "Groq response"
def test_tier_3_fallback():
print("\n--- Testing Tier 3 Fallback (HF) ---")
with patch.object(llm_client, 'gemini_client') as mock_gemini, \
patch.object(llm_client, 'groq_client') as mock_groq, \
patch.object(llm_client, 'hf_client') as mock_hf:
mock_gemini.models.generate_content.side_effect = Exception("Simulated Gemini Outage")
mock_groq.chat.completions.create.side_effect = Exception("Simulated Groq Outage")
mock_response = MagicMock()
mock_response.choices[0].message.content = "HF response"
mock_hf.chat.completions.create.return_value = mock_response
success, payload, provider = llm_client.generate_content("Hello, world!")
print(f"Result: Success={success}, Provider={provider}")
assert success
assert provider == "Hugging Face"
assert payload == "HF response"
if __name__ == "__main__":
test_full_cascade()
test_tier_2_fallback()
test_tier_3_fallback()
print("\nAll cascade logic paths verified!")