feat: serialize official record imports
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
import os
|
||||
|
||||
import pytest
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.importer import ImportAlreadyRunning, _official_import_lock
|
||||
|
||||
|
||||
@pytest.mark.skipif(not os.environ.get("DATABASE_URL", "").startswith("postgresql"), reason="requires PostgreSQL")
|
||||
def test_postgresql_import_lock_blocks_only_same_source_category() -> None:
|
||||
engine = create_engine(os.environ["DATABASE_URL"])
|
||||
first = Session(engine)
|
||||
second = Session(engine)
|
||||
try:
|
||||
with _official_import_lock(first, url="https://example.test/records", region="RU", category="records"):
|
||||
with pytest.raises(ImportAlreadyRunning):
|
||||
with _official_import_lock(second, url="https://example.test/records", region="RU", category="records"):
|
||||
pass
|
||||
with _official_import_lock(second, url="https://example.test/records", region="RU", category="weekly"):
|
||||
pass
|
||||
with _official_import_lock(second, url="https://example.test/records", region="RU", category="records"):
|
||||
pass
|
||||
finally:
|
||||
first.close()
|
||||
second.close()
|
||||
engine.dispose()
|
||||
Reference in New Issue
Block a user