Files
detections/_docs/02_tasks/done/AZ-142_test_async_sse.md
T

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