test: Add end-to-end smoke tests (Agent 99)

- Create comprehensive smoke test suite for post-deployment validation
- Implement 4 test categories: infrastructure, service, authentication, order flow
- Add graceful failure handling for unavailable services
- Create automated test runner script with multiple modes (fast, verbose, category)
- Document known blockers from Agent 96 (Backtesting/ML services)
- Add 30+ individual smoke tests covering critical paths
- Enable smoke-tests feature in tests/Cargo.toml
- Create detailed README with usage and troubleshooting

Test Categories:
1. Infrastructure Health: PostgreSQL, Redis, Vault, InfluxDB, Prometheus, Grafana
2. Service Health: Trading Service, API Gateway (+ blocked: Backtesting, ML)
3. Authentication Flow: JWT, sessions, revocation, rate limiting
4. Basic Order Flow: Order CRUD, positions, order history

Features:
- Configurable timeouts (5-10s per test)
- Environment variable configuration
- Graceful service unavailability handling
- Parallel and sequential execution modes
- Detailed pass/fail reporting

Usage:
  ./run_smoke_tests.sh              # Run all tests
  ./run_smoke_tests.sh --fast       # Critical tests only
  ./run_smoke_tests.sh --verbose    # Debug logging
  ./run_smoke_tests.sh --category infrastructure

Blocked Tests (marked with #[ignore]):
- Backtesting Service (config issues from Agent 96)
- ML Training Service (config issues from Agent 96)

Wave 125 Phase 3B - Deployment Excellence
This commit is contained in:
jgrusewski
2025-10-07 20:56:34 +02:00
parent 601fdf7d9b
commit 94cf3bc135
18 changed files with 8797 additions and 0 deletions

3
Cargo.lock generated
View File

@@ -9000,6 +9000,7 @@ dependencies = [
"hdrhistogram",
"influxdb2",
"jemalloc_pprof",
"jsonwebtoken",
"lazy_static",
"ml",
"num 0.4.3",
@@ -9010,6 +9011,7 @@ dependencies = [
"rand 0.8.5",
"rand_distr 0.4.3",
"redis",
"reqwest 0.12.23",
"risk",
"risk-data",
"rstest 0.22.0",
@@ -9027,6 +9029,7 @@ dependencies = [
"tokio-test",
"toml",
"tonic",
"tonic-health",
"tracing",
"tracing-subscriber",
"trading_engine",