ALSARA / tests /test_performance.py
axegameon's picture
Deploy: stderr forwarder, chroma_sync logging, patient prompt, citation verifier
2adda07 verified
Raw
History Blame Contribute Delete
1.85 kB
# tests/test_performance.py
import pytest
import time
import asyncio
@pytest.mark.asyncio
@pytest.mark.performance
class TestPerformance:
async def test_search_response_time(self, pubmed_session):
"""Test that searches complete in reasonable time"""
start = time.time()
await pubmed_session.call_tool(
"search_pubmed",
{"query": "ALS", "max_results": 10}
)
elapsed = time.time() - start
assert elapsed < 5.0 # Should complete within 5 seconds
async def test_concurrent_requests(self, pubmed_session):
"""Test handling of concurrent requests"""
queries = ["ALS SOD1", "ALS C9orf72", "ALS TDP43", "ALS FUS"]
start = time.time()
tasks = [
pubmed_session.call_tool(
"search_pubmed",
{"query": q, "max_results": 5}
)
for q in queries
]
results = await asyncio.gather(*tasks)
elapsed = time.time() - start
# Should complete faster than sequential (< 4 * single_request_time)
assert len(results) == 4
assert all(len(r.content) > 0 for r in results)
assert elapsed < 15.0 # Reasonable concurrent time
async def test_memory_usage_large_results(self, pubmed_session):
"""Test memory efficiency with large result sets"""
import tracemalloc
tracemalloc.start()
await pubmed_session.call_tool(
"search_pubmed",
{"query": "ALS", "max_results": 50}
)
current, peak = tracemalloc.get_traced_memory()
tracemalloc.stop()
# Peak memory should be reasonable (< 50 MB for this operation)
assert peak < 50 * 1024 * 1024