File size: 1,140 Bytes
159faf0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import pytest

from src.config import COLLECTION_NAME, VECTOR_DB_PERSIST_PATH
from src.embedding.embedding_service import EmbeddingService
from src.search.search_service import SearchService
from src.vector_store.vector_db import VectorDatabase


@pytest.mark.integration
def test_search_cache_basic():
    vdb = VectorDatabase(VECTOR_DB_PERSIST_PATH, COLLECTION_NAME)
    emb = EmbeddingService()
    svc = SearchService(vdb, emb)
    q = "remote work policy"
    r1 = svc.search(q, top_k=3)
    stats_after_first = svc.get_cache_stats()
    r2 = svc.search(q, top_k=3)
    stats_after_second = svc.get_cache_stats()
    assert r1 == r2
    # After first search: one miss
    assert stats_after_first["misses"] >= 1
    # After second search: at least one hit
    assert stats_after_second["hits"] >= 1


@pytest.mark.integration
def test_search_cache_eviction():
    vdb = VectorDatabase(VECTOR_DB_PERSIST_PATH, COLLECTION_NAME)
    emb = EmbeddingService()
    svc = SearchService(vdb, emb)
    for i in range(60):
        svc.search(f"query {i}", top_k=1)
    stats = svc.get_cache_stats()
    assert stats["size"] <= stats["capacity"]