Complete training workflow and acceptance hardening
This commit is contained in:
parent
4c4b91064f
commit
7237265833
243 changed files with 17014 additions and 1500 deletions
54
backend/tests/test_db_pool_config.py
Normal file
54
backend/tests/test_db_pool_config.py
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
from types import SimpleNamespace
|
||||
|
||||
import pytest
|
||||
from pydantic import ValidationError
|
||||
|
||||
from app.config import Settings
|
||||
|
||||
|
||||
def test_database_pool_defaults_fit_two_backend_node_budget():
|
||||
settings = Settings(_env_file=None)
|
||||
assert settings.db_pool_size == 20
|
||||
assert settings.db_pool_max_overflow == 10
|
||||
# Two backend nodes use at most 60 application connections, leaving room
|
||||
# under PostgreSQL's common 100-connection default for admin/backup work.
|
||||
assert 2 * (settings.db_pool_size + settings.db_pool_max_overflow) == 60
|
||||
|
||||
|
||||
@pytest.mark.parametrize("values", [{"db_pool_size": 0}, {"db_pool_max_overflow": -1}])
|
||||
def test_database_pool_rejects_invalid_limits(values):
|
||||
with pytest.raises(ValidationError):
|
||||
Settings(_env_file=None, **values)
|
||||
|
||||
|
||||
def test_engine_uses_configured_pool_limits(monkeypatch):
|
||||
from app.db import base
|
||||
|
||||
observed = {}
|
||||
sentinel = object()
|
||||
|
||||
def capture(url, **options):
|
||||
observed["url"] = url
|
||||
observed.update(options)
|
||||
return sentinel
|
||||
|
||||
settings = SimpleNamespace(
|
||||
database_url="postgresql+asyncpg://lct:test@localhost/lct",
|
||||
db_pool_size=12,
|
||||
db_pool_max_overflow=7,
|
||||
)
|
||||
monkeypatch.setattr(base, "get_settings", lambda: settings)
|
||||
monkeypatch.setattr(base, "create_async_engine", capture)
|
||||
base.reset()
|
||||
try:
|
||||
assert base.get_engine() is sentinel
|
||||
finally:
|
||||
base.reset()
|
||||
|
||||
assert observed == {
|
||||
"url": settings.database_url,
|
||||
"pool_pre_ping": True,
|
||||
"pool_size": 12,
|
||||
"max_overflow": 7,
|
||||
"hide_parameters": True,
|
||||
}
|
||||
Loading…
Reference in a new issue