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