This document covers the development workflow, testing strategy, and key configuration files for the SDEP application.
For architecture and request flow, see Technical Architecture.
For database dialect compatibility, see Database Dialects.
See makefile help
make
- pytest with parallel execution (
-n auto) - Async test support
- Fixtures for database and authentication
- Code coverage tracking
- Run:
cd backend && make test
- Shell scripts using curl
- Test OAuth 2.0 flows
- Test API endpoints with single-item and bulk POST payloads
- Test security headers (OWASP compliance)
- Test validation (Pydantic + business logic)
- Run:
make test - See Integration Tests for detailed test documentation
- Locust-based load testing for the bulk activity endpoint (
POST /api/str/v1/activities/bulk) - Measures throughput (activities/sec), extrapolates capacity (activities/day), compares against configurable target
- Uses isolated test data (
sdep-test-perf-*prefix) by default; optionally keeps data in database (KEEP_TEST_DATA=true) - Configurable:
PERF_ACTIVITIES_TARGET(total target volume),PERF_USERS(concurrent users to reach target),PERF_MAX_DURATION_SECONDS,PERF_BATCH_SIZE,KEEP_TEST_DATA - Run:
make test-perf(or e.g.make test-perf PERF_USERS=5 PERF_ACTIVITIES_TARGET=1000000 PERF_MAX_DURATION_SECONDS=10) - See Performance Tests for detailed documentation
.env- Base environment variables for local development.env.extra- Optional local overrides loaded by Make/docker compose when presentdocker-compose.yml- Container orchestrationbackend/pyproject.toml- Python dependencies and tool configurationbackend/alembic.ini- Database migration configurationkeycloak/machine-clients.yaml- Test machine client definitions (OAuth 2.0, client secret); merged with the generated client-signed JWT clients intotmp/machine-clients-extended.yaml, which is the file provisioned into Keycloakkeycloak/roles.yaml- Test role definitionsMakefile- Development automation