From b8f120dd62e2ae3b3f48785c37d3b2ac26be78a7 Mon Sep 17 00:00:00 2001 From: demo-bot Date: Sun, 9 Aug 2026 15:52:34 +0000 Subject: [PATCH] decomposer: generate deliverable files for Define the service contract and project architecture for the FastAPI endpoint monitoring service.; Implement the typed monitor CRUD API and concurrency-safe in-memory state according to the service design.; Implement secure on-demand endpoint checks with status updates, latency measurement, robust error handling, and redacted structured logs.; Add operational API endpoints and environment-driven runtime configuration to the monitoring service.; Create automated tests for the monitoring service.; Package the service with Docker and developer documentation.; Validate the complete project. --- tests/test_store.py | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/tests/test_store.py b/tests/test_store.py index 75985d1..a909f8d 100644 --- a/tests/test_store.py +++ b/tests/test_store.py @@ -2,17 +2,20 @@ import asyncio import pytest -from app.models import MonitorCreate -from app.store import MonitorStore +from endpoint_monitor.models import MonitorCreate +from endpoint_monitor.store import Conflict, MonitorStore -@pytest.mark.asyncio -async def test_concurrent_creates_are_retained_and_results_are_copies() -> None: - state = MonitorStore() - payload = MonitorCreate(name="same", url="https://example.com") - created = await asyncio.gather(*(state.create(payload) for _ in range(25))) - assert len(await state.list()) == 25 - created[0].name = "mutated" - persisted = await state.get(created[0].id) - assert persisted is not None - assert persisted.name == "same" +async def test_concurrent_unique_name_is_atomic(): + store = MonitorStore(10) + data = MonitorCreate(name="same", url="https://example.com") + results = await asyncio.gather(store.create(data), store.create(data), return_exceptions=True) + assert sum(not isinstance(item, Exception) for item in results) == 1 + assert sum(isinstance(item, Conflict) for item in results) == 1 + + +async def test_capacity(): + store = MonitorStore(1) + await store.create(MonitorCreate(name="one", url="https://example.com")) + with pytest.raises(Conflict, match="capacity"): + await store.create(MonitorCreate(name="two", url="https://example.org"))