Add benchmarks
This commit is contained in:
39
tests/benchmark/test_benchmark_user_balance.py
Normal file
39
tests/benchmark/test_benchmark_user_balance.py
Normal file
@@ -0,0 +1,39 @@
|
||||
import pytest
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from dibbler.models import User
|
||||
from dibbler.queries import user_balance
|
||||
from tests.benchmark.benchmark_settings import BENCHMARK_ITERATIONS, BENCHMARK_ROUNDS
|
||||
from tests.benchmark.helpers import generate_random_transactions, insert_users_and_products
|
||||
|
||||
|
||||
@pytest.mark.benchmark(group='user_balance')
|
||||
@pytest.mark.parametrize(
|
||||
"transaction_count",
|
||||
[
|
||||
100,
|
||||
500,
|
||||
1000,
|
||||
1500,
|
||||
2000,
|
||||
],
|
||||
)
|
||||
def test_benchmark_user_balance(benchmark, sql_session: Session, transaction_count: int):
|
||||
users, _products = insert_users_and_products(sql_session)
|
||||
|
||||
generate_random_transactions(
|
||||
sql_session,
|
||||
transaction_count,
|
||||
)
|
||||
|
||||
benchmark.pedantic(
|
||||
query_all_users_balance,
|
||||
args=(sql_session, users),
|
||||
iterations=BENCHMARK_ITERATIONS,
|
||||
rounds=BENCHMARK_ROUNDS,
|
||||
)
|
||||
|
||||
|
||||
def query_all_users_balance(sql_session: Session, users: list[User]) -> None:
|
||||
for user in users:
|
||||
user_balance(sql_session, user)
|
||||
Reference in New Issue
Block a user