Files
loader/_docs/02_document/tests/environment.md
T
Oleksandr Bezdieniezhnykh 8f7deb3fca Add E2E tests, fix bugs
Made-with: Cursor
2026-04-13 05:17:48 +03:00

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: uses subprocess with lscpu, lspci, /sys/block/sda (Linux) or PowerShell (Windows) — requires real OS hardware info
  • binary_split.py: calls docker load and docker image inspect — requires Docker daemon
  • Cython extensions: must be compiled natively for the target platform

Execution instructions (local):

  1. Prerequisites: Python 3.11, GCC, Docker daemon running
  2. Install deps: pip install -r requirements.txt && python setup.py build_ext --inplace
  3. Start system: uvicorn main:app --host 0.0.0.0 --port 8080
  4. Run tests: pytest tests/ -v --tb=short
  5. 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 .so modules
  • 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