Prerequisites
- Docker running (for test job containers)
- Go 1.26+
- 8GB+ RAM free
- The Strait source code
Quick Start (15 minutes)
Build the test job images and run a quick validation:Test Job Images
The framework includes real workloads in Python, TypeScript, and Go:
Build all images:
Full Test Suite
Tier 1: Throughput Ceiling
Finds the maximum sustained jobs/sec. Starts at 10 jobs/sec, increases by 10 every 60 seconds until the system breaks.Tier 2: Concurrency Ceiling
Finds the maximum concurrent connections. Starts at 50 concurrent, increases by 50 every 2 minutes.Tier 3: Multi-Tenant Simulation
Simulates real production with hundreds of tenants, mixed plans, and varied traffic patterns.Tier 3: Breaking Point
Adds 100 tenants every 30 minutes until performance degrades.Tier 4: Endurance (24 hours)
Runs at 70% of throughput ceiling for 24 hours. Detects memory leaks, goroutine leaks, and performance drift.Tier 5: Chaos Engineering
Breaks things on purpose during production load. 8 scenarios: worker kill, database failover, Redis failure, Docker restart, connection pool exhaustion, disk pressure, clock skew, cascading failure.Error Scenarios
Tests all 12 failure modes: clean exit, exit codes, OOM, segfault, infinite loop, slow death, checkpoint recovery, SDK timeout, fork bomb, disk fill, network abuse.Generating Reports
After running tests, generate HTML and JSON reports:- Executive summary with key metrics
- Throughput and concurrency ramp tables
- Multi-tenant simulation results
- Chaos engineering verdicts
- Error scenario pass/fail matrix
Grafana Dashboard
The load test environment includes a pre-configured Grafana dashboard for real-time monitoring.Setup
- Queue depth and active workers
- Throughput and dispatch latency (P50/P95/P99)
- Error rates and worker pool utilization
- Database connection pool breakdown
- Webhook delivery metrics
- Go runtime (goroutines, heap memory, GC pauses)
/metrics endpoint every 5 seconds, so panels update in near real-time during load tests.
Understanding Your Results
What each metric means
Environment variables
Tuning Based on Results
The load test harness uses HTTP keep-alives with connection pooling for realistic measurements that match production client behavior.
| Redis memory | Used memory > maxmemory | Increase
maxmemory, review eviction policy |