Files
detections/_docs/02_document/tests/test-data.md
T

6.5 KiB
Raw Blame History

Test Data Management

Seed Data Sets

Data Set Source File Description Used by Tests How Loaded Cleanup
onnx-model input_data/azaion.onnx YOLO ONNX model (1280×1280 input, 19 classes, 81MB) All detection tests Volume mount to mock-loader /models/azaion.onnx Container restart
classes-json classes.json (repo root) 19 detection classes with Id, Name, Color, MaxSizeM All tests Volume mount to detections /app/classes.json Container restart
image-small input_data/image_small.jpg JPEG 1280×720 — below tiling threshold (1920×1920) FT-P-01..03, 05, 07, 13..15, FT-N-03, 06, NFT-PERF-01..02, NFT-RES-01, 03, NFT-SEC-01, NFT-RES-LIM-01 Volume mount to consumer /media/ N/A (read-only)
image-large input_data/image_large.JPG JPEG 6252×4168 — above tiling threshold, triggers GSD tiling FT-P-04, 16, NFT-PERF-03 Volume mount to consumer /media/ N/A (read-only)
image-dense-01 input_data/image_dense01.jpg JPEG 1280×720 — dense scene with many clustered objects FT-P-06, NFT-RES-LIM-03 Volume mount to consumer /media/ N/A (read-only)
image-dense-02 input_data/image_dense02.jpg JPEG 1920×1080 — dense scene variant, borderline tiling FT-P-06 (variant) Volume mount to consumer /media/ N/A (read-only)
image-different-types input_data/image_different_types.jpg JPEG 900×1600 — varied object classes for class variant tests FT-P-13 Volume mount to consumer /media/ N/A (read-only)
image-empty-scene input_data/image_empty_scene.jpg JPEG 1920×1080 — clean scene with no detectable objects Edge case (zero detections) Volume mount to consumer /media/ N/A (read-only)
video-short-01 input_data/video_short01.mp4 MP4 video — standard async/SSE/video detection tests FT-P-08..12, FT-N-04, 07, NFT-PERF-04, NFT-RES-02, NFT-SEC-03 Volume mount to consumer /media/ N/A (read-only)
video-short-02 input_data/video_short02.mp4 MP4 video — variant for concurrent and resilience tests NFT-RES-02 (variant), NFT-RES-04 Volume mount to consumer /media/ N/A (read-only)
video-long-03 input_data/video_long03.mp4 MP4 long video (288MB) — generates >100 SSE events for overflow tests FT-N-08, NFT-RES-LIM-02 Volume mount to consumer /media/ N/A (read-only)
empty-image Generated at build time Zero-byte file FT-N-01 Generated in e2e/fixtures/ N/A
corrupt-image Generated at build time Random binary garbage (not valid image format) FT-N-02 Generated in e2e/fixtures/ N/A
jwt-token Generated at runtime Valid JWT with exp claim (not signature-verified by detections) FT-P-08, 09, FT-N-04, 07, NFT-SEC-03 Generated by consumer at runtime N/A

Data Isolation Strategy

Each test run starts with fresh containers (docker compose down -v && docker compose up). The detections service is stateless — no persistent data between runs. Mock services reset their state on container restart. Tests that modify mock behavior (e.g., making loader unreachable) must run in isolated test groups.

Input Data Mapping

Input Data File Source Location Description Covers Scenarios
data_parameters.md _docs/00_problem/input_data/data_parameters.md API parameter schemas, config defaults, classes.json structure Informs all test input construction
azaion.onnx _docs/00_problem/input_data/azaion.onnx YOLO ONNX detection model All detection tests
image_small.jpg _docs/00_problem/input_data/image_small.jpg 1280×720 aerial image Single-frame detection, health, negative, perf tests
image_large.JPG _docs/00_problem/input_data/image_large.JPG 6252×4168 aerial image Tiling tests
image_dense01.jpg _docs/00_problem/input_data/image_dense01.jpg Dense scene 1280×720 Dedup, detection cap tests
image_dense02.jpg _docs/00_problem/input_data/image_dense02.jpg Dense scene 1920×1080 Dedup variant
image_different_types.jpg _docs/00_problem/input_data/image_different_types.jpg Varied classes 900×1600 Class variant tests
image_empty_scene.jpg _docs/00_problem/input_data/image_empty_scene.jpg Empty scene 1920×1080 Zero-detection edge case
video_short01.mp4 _docs/00_problem/input_data/video_short01.mp4 Standard video Async, SSE, video, perf tests
video_short02.mp4 _docs/00_problem/input_data/video_short02.mp4 Video variant Resilience, concurrent tests
video_long03.mp4 _docs/00_problem/input_data/video_long03.mp4 Long video (288MB) SSE overflow, queue depth tests
classes.json repo root classes.json 19 detection classes All tests

External Dependency Mocks

External Service Mock/Stub How Provided Behavior
Loader Service HTTP stub Docker service mock-loader Serves ONNX model from volume on GET /models/azaion.onnx. Accepts TensorRT upload on POST /upload. Returns 404 for unknown files. Configurable: can simulate downtime (503) via control endpoint POST /mock/config.
Annotations Service HTTP stub Docker service mock-annotations Accepts annotation POST on POST /annotations — stores in memory for verification. Provides token refresh on POST /auth/refresh. Configurable: can simulate downtime (503) via control endpoint POST /mock/config. Returns recorded annotations on GET /mock/annotations for test assertions.

Data Validation Rules

Data Type Validation Invalid Examples Expected System Behavior
Image file (POST /detect) Non-empty bytes, decodable by OpenCV Zero-byte file, random binary, text file 400 Bad Request
media_id (POST /detect/{media_id}) String, unique among active detections Already-active media_id 409 Conflict
AIConfigDto fields probability_threshold: 0.01.0; frame_period_recognition: positive int; big_image_tile_overlap_percent: 0100 probability_threshold: -1 or 2.0; frame_period_recognition: 0 System uses defaults or returns validation error
Authorization header Bearer token format Missing header, malformed JWT Token forwarded to Annotations as-is; detections still proceeds
classes.json JSON array of objects with Id, Name, Color, MaxSizeM Missing file, empty array, malformed JSON Service fails to start / returns empty detections