mirror of
https://github.com/semantica-agi/semantica.git
synced 2026-08-29 04:26:20 +00:00
87 lines
2.4 KiB
Python
87 lines
2.4 KiB
Python
from unittest.mock import MagicMock, patch
|
|
|
|
import pytest
|
|
|
|
from semantica.context.agent_context import AgentContext
|
|
from semantica.context.context_retriever import RetrievedContext
|
|
|
|
# Fixtures
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_agent_context():
|
|
"""
|
|
Creates an AgentContext with mocked internals.
|
|
"""
|
|
vector_store = MagicMock()
|
|
knowledge_graph = MagicMock()
|
|
|
|
with patch("semantica.context.agent_context.AgentMemory") as MockMemory, patch(
|
|
"semantica.context.agent_context.ContextRetriever"
|
|
) as MockRetriever:
|
|
|
|
ctx = AgentContext(vector_store=vector_store, knowledge_graph=knowledge_graph)
|
|
|
|
# Internal mocks
|
|
|
|
ctx._memory = MockMemory.return_value
|
|
ctx._retriever = MockRetriever.return_value
|
|
|
|
return ctx
|
|
|
|
|
|
# Benchmarks
|
|
|
|
|
|
def test_router_overhead(benchmark, mock_agent_context):
|
|
"""
|
|
Benchmarks the logic that decides between Vector vs Graph retrieval.
|
|
"""
|
|
|
|
mock_agent_context._retriever.retrieve.return_value = []
|
|
|
|
def op():
|
|
return mock_agent_context.retrieve("test query", use_graph=None)
|
|
|
|
benchmark.pedantic(op, iterations=50, rounds=20)
|
|
|
|
|
|
def test_result_conversion_throughput(benchmark, mock_agent_context):
|
|
"""
|
|
Benchmarks converting internal RetrievedContext objects to Dicts.
|
|
"""
|
|
|
|
fake_results = [
|
|
RetrievedContext(
|
|
content=f"Result {i}",
|
|
score=0.9,
|
|
source="graph:node_1",
|
|
metadata={"type": "fact"},
|
|
related_entities=[{"id": "e1", "name": "Entity"}],
|
|
related_relationships=[{"source": "e1", "target": "e2"}],
|
|
)
|
|
for i in range(100)
|
|
]
|
|
mock_agent_context._retriever.retrieve.return_value = fake_results
|
|
|
|
def op():
|
|
return mock_agent_context.retrieve("test", use_graph=True)
|
|
|
|
benchmark.pedantic(op, iterations=20, rounds=10)
|
|
|
|
|
|
def test_store_orchestration_overhead(benchmark, mock_agent_context):
|
|
"""
|
|
Benchmarks the 'store' method's logic for routing documents.
|
|
"""
|
|
docs = [{"content": f"Doc {i}", "metadata": {"id": i}} for i in range(50)]
|
|
|
|
# Mock the internal storage to return immediately
|
|
mock_agent_context._memory.store.return_value = "mem_id"
|
|
mock_agent_context._build_graph_from_documents = MagicMock(return_value={})
|
|
|
|
def op():
|
|
return mock_agent_context.store(docs, extract_entities=False)
|
|
|
|
benchmark.pedantic(op, iterations=10, rounds=10)
|