from __future__ import annotations from backend.app.db import redis_client from backend.app.services.session_store import create_session, list_sessions def test_in_memory_redis_fallback_is_singleton(monkeypatch) -> None: monkeypatch.setattr("redis.Redis.from_url", lambda *args, **kwargs: (_ for _ in ()).throw(RuntimeError("offline"))) monkeypatch.setattr(redis_client, "_fallback_mode", False) monkeypatch.setattr(redis_client, "_redis_singleton", None) first = redis_client.get_redis_client() second = redis_client.get_redis_client() assert first is second def test_in_memory_redis_fallback_preserves_session_index(monkeypatch) -> None: monkeypatch.setattr("redis.Redis.from_url", lambda *args, **kwargs: (_ for _ in ()).throw(RuntimeError("offline"))) monkeypatch.setattr(redis_client, "_fallback_mode", False) monkeypatch.setattr(redis_client, "_redis_singleton", None) create_session("fallback-visible", "HCP-05-010", cluster_id=5) sessions = list_sessions(limit=10) assert [session["session_id"] for session in sessions] == ["fallback-visible"] assert sessions[0]["cluster_id"] == 5