- Changed the directory structure for task specifications to include a dedicated `todo/` folder within `_docs/02_tasks/` for tasks ready for implementation. - Updated references in various skills and documentation to reflect the new task lifecycle, including changes in the `implementer` and `decompose` skills. - Enhanced the README and flow documentation to clarify the new task organization and its implications for the implementation process. These updates improve task management clarity and streamline the implementation workflow.
3.1 KiB
Async Detection & SSE Streaming Tests
Task: AZ-142_test_async_sse Name: Async Detection & SSE Streaming Tests Description: Implement E2E tests verifying async media detection initiation, SSE event streaming, and duplicate media_id rejection Complexity: 3 points Dependencies: AZ-138_test_infrastructure Component: Integration Tests Jira: AZ-142 Epic: AZ-137
Problem
Async media detection via POST /detect/{media_id} must return immediately with "started" status while processing continues in background. SSE streaming must deliver real-time detection events to connected clients. Duplicate media_id submissions must be rejected with 409.
Outcome
- Async detection returns immediately without waiting for processing
- SSE connection receives detection events during processing
- Final SSE event signals completion with mediaStatus "AIProcessed"
- Duplicate media_id correctly rejected with 409 Conflict
Scope
Included
- FT-P-08: Async media detection returns "started" immediately
- FT-P-09: SSE streaming delivers detection events during async processing
- FT-N-04: Duplicate media_id returns 409
Excluded
- Video frame sampling details (covered in video tests)
- SSE queue overflow behavior (covered in resource limit tests)
- Annotations service interaction (covered in resilience tests)
Acceptance Criteria
AC-1: Immediate async response Given an initialized engine When POST /detect/{media_id} is called with config and auth headers Then response arrives within 1s with {"status": "started"}
AC-2: SSE event delivery Given an SSE client connected to GET /detect/stream When async detection is triggered via POST /detect/{media_id} Then SSE events are received with detection data and mediaStatus "AIProcessing" And a final event with mediaStatus "AIProcessed" and percent 100 arrives
AC-3: Duplicate media_id rejection Given an async detection is already in progress for a media_id When POST /detect/{media_id} is called again with the same ID Then response is 409 Conflict
Non-Functional Requirements
Performance
- Async initiation response within 1s
- SSE events delivered within 120s total processing time
Integration Tests
| AC Ref | Initial Data/Conditions | What to Test | Expected Behavior | NFR References |
|---|---|---|---|---|
| AC-1 | Engine warm, test-video, JWT token | POST /detect/{media_id} | Response < 1s, status "started" | Max 2s |
| AC-2 | Engine warm, SSE connected, test-video | Listen SSE during async detection | Events received, final AIProcessed | Max 120s |
| AC-3 | Active detection in progress | Second POST with same media_id | 409 Conflict | Max 5s |
Constraints
- SSE client must connect before triggering async detection
- JWT token required for async detection endpoint
- Test video must be accessible via configured paths
Risks & Mitigation
Risk 1: SSE connection timing
- Risk: SSE connection may not be established before detection starts
- Mitigation: Add small delay between SSE connect and detection trigger; verify connection established