mirror of
https://github.com/azaion/loader.git
synced 2026-04-22 22:26:33 +00:00
8f7deb3fca
Made-with: Cursor
2.7 KiB
2.7 KiB
Test Environment
Overview
System under test: Azaion.Loader FastAPI service at http://localhost:8080
Consumer app purpose: Python pytest suite exercising the loader through its HTTP API, validating black-box use cases without access to Cython internals.
Test Execution
Decision: Local execution Hardware dependencies found:
hardware_service.pyx: usessubprocesswithlscpu,lspci,/sys/block/sda(Linux) or PowerShell (Windows) — requires real OS hardware infobinary_split.py: callsdocker loadanddocker image inspect— requires Docker daemon- Cython extensions: must be compiled natively for the target platform
Execution instructions (local):
- Prerequisites: Python 3.11, GCC, Docker daemon running
- Install deps:
pip install -r requirements.txt && python setup.py build_ext --inplace - Start system:
uvicorn main:app --host 0.0.0.0 --port 8080 - Run tests:
pytest tests/ -v --tb=short - Environment variables:
RESOURCE_API_URL,IMAGES_PATH,API_VERSION
Docker Environment
Services
| Service | Image / Build | Purpose | Ports |
|---|---|---|---|
| system-under-test | Build from Dockerfile |
Azaion.Loader | 8080 |
| mock-api | Python (httpbin or custom) | Mock Azaion Resource API | 9090 |
| mock-cdn | MinIO (S3-compatible) | Mock S3 CDN | 9000 |
| e2e-consumer | python:3.11-slim + pytest |
Black-box test runner | — |
Networks
| Network | Services | Purpose |
|---|---|---|
| e2e-net | all | Isolated test network |
Volumes
| Volume | Mounted to | Purpose |
|---|---|---|
| test-data | e2e-consumer:/data | Test input files |
| docker-sock | system-under-test:/var/run/docker.sock | Docker daemon access |
Consumer Application
Tech stack: Python 3.11, pytest, requests
Entry point: pytest tests/ -v
Communication with system under test
| Interface | Protocol | Endpoint | Authentication |
|---|---|---|---|
| Loader API | HTTP | http://system-under-test:8080 |
POST /login first |
What the consumer does NOT have access to
- No direct access to Cython
.somodules - No shared filesystem with the main system (except Docker socket for verification)
- No direct access to mock-api or mock-cdn internals
CI/CD Integration
When to run: On push to dev/stage/main (extend .woodpecker/build-arm.yml)
Pipeline stage: After build, before push
Gate behavior: Block push on failure
Timeout: 300 seconds (5 minutes)
Reporting
Format: CSV
Columns: Test ID, Test Name, Execution Time (ms), Result (PASS/FAIL/SKIP), Error Message
Output path: ./test-results/report.csv