mirror of
https://github.com/azaion/ai-training.git
synced 2026-04-22 22:16:35 +00:00
142c6c4de8
- Replaced module-level path variables in constants.py with a structured Pydantic Config class. - Updated all relevant modules (train.py, augmentation.py, exports.py, dataset-visualiser.py, manual_run.py) to access paths through the new config structure. - Fixed bugs related to image processing and model saving. - Enhanced test infrastructure to accommodate the new configuration approach. This refactor improves code maintainability and clarity by centralizing configuration management.
72 lines
2.5 KiB
Markdown
72 lines
2.5 KiB
Markdown
# Test Environment
|
|
|
|
## Runtime Requirements
|
|
|
|
| Requirement | Specification |
|
|
|-------------|--------------|
|
|
| Python | 3.10+ |
|
|
| OS | Linux or macOS (POSIX filesystem paths) |
|
|
| GPU | Optional — ONNX inference falls back to CPUExecutionProvider |
|
|
| Disk | Temp directory for fixture data (~500MB for augmentation output) |
|
|
| Network | Not required (all tests are offline) |
|
|
|
|
## Execution Modes
|
|
|
|
Tests MUST be runnable in two ways:
|
|
|
|
### 1. Local (no Docker) — primary mode
|
|
Run directly on the host machine. Required for macOS development where Docker has GPU/performance limitations.
|
|
|
|
```bash
|
|
scripts/run-tests-local.sh
|
|
```
|
|
|
|
### 2. Docker — CI/portable mode
|
|
Run inside a container for reproducible CI environments (Linux-based CI runners).
|
|
|
|
```bash
|
|
docker compose -f docker-compose.test.yml up --build --abort-on-container-exit
|
|
```
|
|
|
|
Both modes run the same pytest suite; the only difference is the runtime environment.
|
|
|
|
## Dependencies
|
|
|
|
All test dependencies are a subset of the production `requirements.txt` plus pytest:
|
|
|
|
| Package | Purpose |
|
|
|---------|---------|
|
|
| pytest | Test runner |
|
|
| albumentations | Augmentation tests |
|
|
| opencv-python-headless | Image I/O (headless — no GUI) |
|
|
| numpy | Array operations |
|
|
| onnxruntime | ONNX inference (CPU fallback) |
|
|
| cryptography | Encryption tests |
|
|
| msgpack | Annotation queue message tests |
|
|
| PyYAML | Config/YAML generation tests |
|
|
|
|
## Fixture Data
|
|
|
|
| Fixture | Location | Size |
|
|
|---------|----------|------|
|
|
| 100 annotated images | `_docs/00_problem/input_data/dataset/images/` | ~50MB |
|
|
| 100 YOLO labels | `_docs/00_problem/input_data/dataset/labels/` | ~10KB |
|
|
| ONNX model | `_docs/00_problem/input_data/azaion.onnx` | 81MB |
|
|
| Class definitions | `classes.json` (project root) | 2KB |
|
|
|
|
## Test Isolation
|
|
|
|
- Each test creates a temporary directory (via `tmp_path` pytest fixture) for filesystem operations
|
|
- No tests modify the actual `/azaion/` directory structure
|
|
- No tests require running external services (RabbitMQ, Azaion API, S3 CDN)
|
|
- Constants paths are patched/overridden to point to temp directories during tests
|
|
|
|
## Excluded (Require External Services)
|
|
|
|
| Component | Service Required | Reason for Exclusion |
|
|
|-----------|-----------------|---------------------|
|
|
| API upload/download | Azaion REST API | No mock server; real API has auth |
|
|
| CDN upload/download | S3-compatible CDN | No mock S3; real CDN has credentials |
|
|
| Queue consumption | RabbitMQ Streams | No mock broker; rstream requires live connection |
|
|
| TensorRT inference | NVIDIA GPU + TensorRT | Hardware-specific; cannot run in CI without GPU |
|