49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
|
|
"""Tests for ResponseCache with pluggable backends."""
|
||
|
|
|
||
|
|
from fusionagi.api.cache import MemoryCacheBackend, ResponseCache
|
||
|
|
|
||
|
|
|
||
|
|
def test_memory_backend_basic():
|
||
|
|
backend = MemoryCacheBackend(max_size=10, default_ttl=60.0)
|
||
|
|
backend.set("k1", {"data": "value"})
|
||
|
|
assert backend.get("k1") == {"data": "value"}
|
||
|
|
|
||
|
|
|
||
|
|
def test_memory_backend_delete():
|
||
|
|
backend = MemoryCacheBackend()
|
||
|
|
backend.set("k2", "val")
|
||
|
|
assert backend.delete("k2") is True
|
||
|
|
assert backend.get("k2") is None
|
||
|
|
|
||
|
|
|
||
|
|
def test_memory_backend_clear():
|
||
|
|
backend = MemoryCacheBackend()
|
||
|
|
backend.set("a", 1)
|
||
|
|
backend.set("b", 2)
|
||
|
|
assert backend.clear() == 2
|
||
|
|
assert backend.get("a") is None
|
||
|
|
|
||
|
|
|
||
|
|
def test_memory_backend_stats():
|
||
|
|
backend = MemoryCacheBackend(max_size=100)
|
||
|
|
backend.set("s1", "v1")
|
||
|
|
stats = backend.stats()
|
||
|
|
assert stats["backend"] == "memory"
|
||
|
|
assert stats["total"] == 1
|
||
|
|
|
||
|
|
|
||
|
|
def test_response_cache_with_backend():
|
||
|
|
backend = MemoryCacheBackend(max_size=50, default_ttl=120.0)
|
||
|
|
cache = ResponseCache(backend=backend)
|
||
|
|
cache.set("hello", "session-1", {"answer": "world"})
|
||
|
|
assert cache.get("hello", "session-1") == {"answer": "world"}
|
||
|
|
assert cache.get("hello", "session-2") is None # different session
|
||
|
|
|
||
|
|
|
||
|
|
def test_response_cache_tenant_isolation():
|
||
|
|
cache = ResponseCache()
|
||
|
|
cache.set("prompt", "s1", "result-a", tenant_id="tenant-1")
|
||
|
|
cache.set("prompt", "s1", "result-b", tenant_id="tenant-2")
|
||
|
|
assert cache.get("prompt", "s1", "tenant-1") == "result-a"
|
||
|
|
assert cache.get("prompt", "s1", "tenant-2") == "result-b"
|