#!/bin/bash # Run a step-load (staircase) test across a collection of endpoints. # Usage: # ./scripts/stepload.sh [start-rps] [step-rps] [step-duration] [steps] # Example: # ./scripts/stepload.sh https://api.example.com \ # '[{"name":"login","method":"POST","path":"/login"},{"name":"list","path":"/items","weight":3}]' \ # 25 25 2m 6 # -> starts at 25 rps, +25 rps every 2 minutes, 6 steps (ending at 150 rps) set -euo pipefail BASE=${1:?usage: stepload.sh [start-rps] [step-rps] [step-duration] [steps]} EPS=${2:?endpoints-json required - see script header for format} START=${3:-50} STEP=${4:-50} DUR=${5:-2m} STEPS=${6:-5} NAME="stepload-$(date +%s)" PROM_RW="http://prometheus.monitoring.svc:9090/api/v1/write" kubectl -n loadtest apply -f - < $MAX rps (+$STEP each), $DUR holds" echo "Total duration: $STEPS x $DUR (plus 5s ramps per step)" echo "" echo "Watch live: Grafana -> the 'k6 Step Load' dashboard (or kubectl -n loadtest logs -f job/$NAME)" echo "Logs: kubectl -n loadtest logs -f job/$NAME" echo "Stop early: kubectl -n loadtest delete job $NAME"