Distributed execution¶
rampa supports splitting load tests across multiple machines for higher throughput. The coordinator manages workers and aggregates metrics centrally.
Architecture¶
Coordinator (your machine)
├── MetricEngine (aggregated)
├── Threshold evaluation (centralized)
└── WebSocket server
├── Worker 0 (SSH / Lambda / ECS)
├── Worker 1
└── Worker N
Workers connect to the coordinator, receive work segments, run the test locally, and stream samples back.
Execution segments¶
Work is deterministically partitioned across workers without central assignment:
from rampa.distributed.segment import ExecutionSegment
seg = ExecutionSegment(index=0, total=3)
seg.vu_range(30) # range(0, 10)
seg.scale_rate(1000.0) # 333.3
Each worker independently computes its share from its index and the total worker count.
Test archives¶
Self-contained .rampa zip bundles contain everything a remote
worker needs:
$ rampa archive create load_test.py -o test.rampa
Contents: script, data files, requirements.txt, manifest.json.
from rampa.distributed.archive import create_archive, extract_archive
create_archive("load_test.py", "test.rampa", requirements=["aiohttp>=3.9"])
manifest = extract_archive("test.rampa", "/tmp/work")
Wire protocol¶
Coordinator and workers communicate via WebSocket using MessagePack
(JSON fallback). Message types: register, assign, samples,
stop, heartbeat_req/resp, threshold_breach.