[AZ-137] [AZ-138] Decompose test tasks and scaffold E2E test infrastructure

Made-with: Cursor
This commit is contained in:
Oleksandr Bezdieniezhnykh
2026-03-23 14:07:54 +02:00
parent 091d9a8fb0
commit 86d8e7e22d
47 changed files with 1883 additions and 88 deletions
+34 -16
View File
@@ -25,13 +25,19 @@ e2e/
│ ├── Dockerfile
│ └── app.py
├── fixtures/
│ ├── small_image.jpg (640×480 JPEG with detectable objects)
│ ├── large_image.jpg (4000×3000 JPEG for tiling tests)
│ ├── test_video.mp4 (10s, 30fps MP4 with moving objects)
│ ├── empty_image (zero-byte file)
│ ├── corrupt_image (random binary garbage)
│ ├── image_small.jpg (1280×720 JPEG, aerial, detectable objects)
│ ├── image_large.JPG (6252×4168 JPEG, triggers tiling)
│ ├── image_dense01.jpg (1280×720 JPEG, dense scene, clustered objects)
│ ├── image_dense02.jpg (1920×1080 JPEG, dense scene variant)
│ ├── image_different_types.jpg (900×1600 JPEG, varied object classes)
│ ├── image_empty_scene.jpg (1920×1080 JPEG, no detectable objects)
│ ├── video_short01.mp4 (short MP4 with moving objects)
│ ├── video_short02.mp4 (short MP4 variant for concurrent tests)
│ ├── video_long03.mp4 (long MP4, generates >100 SSE events)
│ ├── empty_image (zero-byte file, generated at build)
│ ├── corrupt_image (random binary garbage, generated at build)
│ ├── classes.json (19 classes, 3 weather modes, MaxSizeM values)
│ └── azaion.onnx (small valid YOLO ONNX model, 1280×1280 input, 19 classes)
│ └── azaion.onnx (YOLO ONNX model, 1280×1280 input, 19 classes, 81MB)
├── tests/
│ ├── test_health_engine.py
│ ├── test_single_image.py
@@ -122,9 +128,15 @@ Two Docker Compose profiles:
| `mock_annotations_url` | session | Mock-annotations base URL for control API and assertion calls |
| `wait_for_services` | session (autouse) | Polls health endpoints until all services are ready |
| `reset_mocks` | function (autouse) | Calls `POST /mock/reset` on both mocks before each test |
| `small_image` | session | Reads `small_image.jpg` from `/media/` volume |
| `large_image` | session | Reads `large_image.jpg` from `/media/` volume |
| `test_video_path` | session | Path to `test_video.mp4` on host filesystem |
| `image_small` | session | Reads `image_small.jpg` from `/media/` volume |
| `image_large` | session | Reads `image_large.JPG` from `/media/` volume |
| `image_dense` | session | Reads `image_dense01.jpg` from `/media/` volume |
| `image_dense_02` | session | Reads `image_dense02.jpg` from `/media/` volume |
| `image_different_types` | session | Reads `image_different_types.jpg` from `/media/` volume |
| `image_empty_scene` | session | Reads `image_empty_scene.jpg` from `/media/` volume |
| `video_short_path` | session | Path to `video_short01.mp4` on `/media/` volume |
| `video_short_02_path` | session | Path to `video_short02.mp4` on `/media/` volume |
| `video_long_path` | session | Path to `video_long03.mp4` on `/media/` volume |
| `empty_image` | session | Reads zero-byte file |
| `corrupt_image` | session | Reads random binary file |
| `jwt_token` | function | Generates a valid JWT with exp claim for auth tests |
@@ -134,13 +146,19 @@ Two Docker Compose profiles:
| Data Set | Source | Format | Used By |
|----------|--------|--------|---------|
| azaion.onnx | Pre-built small YOLO model | ONNX (1280×1280 input, 19 classes) | All detection tests (via mock-loader) |
| classes.json | Static fixture | JSON (19 objects with Id, Name, Color, MaxSizeM) | All tests (volume mount to detections) |
| small_image.jpg | Static fixture | JPEG 640×480 | Health, single image, filtering, negative, performance tests |
| large_image.jpg | Static fixture | JPEG 4000×3000 | Tiling tests, performance tests |
| test_video.mp4 | Static fixture | MP4 10s 30fps | Async, SSE, video processing tests |
| empty_image | Static fixture | Zero-byte file | FT-N-01 |
| corrupt_image | Static fixture | Random binary | FT-N-02 |
| azaion.onnx | `input_data/azaion.onnx` | ONNX (1280×1280 input, 19 classes, 81MB) | All detection tests (via mock-loader) |
| classes.json | repo root `classes.json` | JSON (19 objects with Id, Name, Color, MaxSizeM) | All tests (volume mount to detections) |
| image_small.jpg | `input_data/image_small.jpg` | JPEG 1280×720 | Health, single image, filtering, negative, performance tests |
| image_large.JPG | `input_data/image_large.JPG` | JPEG 6252×4168 | Tiling tests, performance tests |
| image_dense01.jpg | `input_data/image_dense01.jpg` | JPEG 1280×720 dense scene | Dedup tests, detection cap tests |
| image_dense02.jpg | `input_data/image_dense02.jpg` | JPEG 1920×1080 dense scene | Dedup variant |
| image_different_types.jpg | `input_data/image_different_types.jpg` | JPEG 900×1600 varied classes | Weather mode class variant tests |
| image_empty_scene.jpg | `input_data/image_empty_scene.jpg` | JPEG 1920×1080 empty | Zero-detection edge case |
| video_short01.mp4 | `input_data/video_short01.mp4` | MP4 short video | Async, SSE, video processing tests |
| video_short02.mp4 | `input_data/video_short02.mp4` | MP4 short video variant | Concurrent, resilience tests |
| video_long03.mp4 | `input_data/video_long03.mp4` | MP4 long video (288MB) | SSE overflow, queue depth tests |
| empty_image | Generated at build | Zero-byte file | FT-N-01 |
| corrupt_image | Generated at build | Random binary | FT-N-02 |
### Data Isolation