Files
DECNET/tests/perf/test_repo_bench.py

61 lines
1.4 KiB
Python

"""
Micro-benchmarks for the repository hot paths.
Run with:
pytest -m bench tests/perf/
These do NOT run in the default suite (see `addopts` in pyproject.toml).
"""
import pytest
pytestmark = pytest.mark.bench
def test_add_log_bench(benchmark, repo, event_loop):
payload = {
"decky": "decky-bench",
"service": "ssh",
"event_type": "connect",
"attacker_ip": "10.0.0.1",
"raw_line": "bench event",
"fields": "{}",
"msg": "",
}
def run():
event_loop.run_until_complete(repo.add_log(payload))
benchmark(run)
def test_get_logs_bench(benchmark, seeded_repo, event_loop):
def run():
return event_loop.run_until_complete(seeded_repo.get_logs(limit=50, offset=0))
result = benchmark(run)
assert len(result) == 50
def test_get_total_logs_bench(benchmark, seeded_repo, event_loop):
def run():
return event_loop.run_until_complete(seeded_repo.get_total_logs())
benchmark(run)
def test_get_logs_search_bench(benchmark, seeded_repo, event_loop):
def run():
return event_loop.run_until_complete(
seeded_repo.get_logs(limit=50, offset=0, search="service:ssh")
)
benchmark(run)
def test_get_user_by_username_bench(benchmark, seeded_repo, event_loop):
def run():
return event_loop.run_until_complete(seeded_repo.get_user_by_username("admin"))
benchmark(run)