Files
Aether/tools/pressure/run_gateway_6k_pressure.sh
T

94 lines
2.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# Gateway DB pressure probe.
#
# Required:
# TARGET_URL=http://127.0.0.1:18080/v1/chat/completions
# METRICS_URL=http://127.0.0.1:18080/_gateway/metrics
#
# Common optional settings:
# PRESSURE_REQUESTS=60000
# PRESSURE_CONCURRENCY=6000
# PRESSURE_TIMEOUT_MS=120000
# PRESSURE_SAMPLE_INTERVAL_MS=500
# PRESSURE_METHOD=POST
# PRESSURE_BODY='{"model":"...","messages":[...],"stream":true}'
# PRESSURE_BODY_FILE=/tmp/request.json
# PRESSURE_RESPONSE_MODE=full
# PRESSURE_CARGO_PROFILE=release
# AUTH_HEADER='Authorization: Bearer sk-...'
# EXTRA_HEADERS=$'Content-Type: application/json\nX-Foo: bar'
# OUTPUT=/tmp/aether_gateway_pressure_6k.json
TARGET_URL="${TARGET_URL:?TARGET_URL is required}"
METRICS_URL="${METRICS_URL:?METRICS_URL is required}"
PRESSURE_REQUESTS="${PRESSURE_REQUESTS:-60000}"
PRESSURE_CONCURRENCY="${PRESSURE_CONCURRENCY:-6000}"
PRESSURE_TIMEOUT_MS="${PRESSURE_TIMEOUT_MS:-120000}"
PRESSURE_SAMPLE_INTERVAL_MS="${PRESSURE_SAMPLE_INTERVAL_MS:-500}"
PRESSURE_METHOD="${PRESSURE_METHOD:-GET}"
PRESSURE_CARGO_PROFILE="${PRESSURE_CARGO_PROFILE:-release}"
OUTPUT="${OUTPUT:-/tmp/aether_gateway_pressure_6k.json}"
args=(run)
case "$PRESSURE_CARGO_PROFILE" in
release)
args+=(--release)
;;
debug)
;;
*)
echo "unsupported PRESSURE_CARGO_PROFILE=$PRESSURE_CARGO_PROFILE; expected release or debug" >&2
exit 2
;;
esac
args+=(
-p aether-loadtools --bin gateway_pressure_probe --
--url "$TARGET_URL"
--metrics-url "$METRICS_URL"
--requests "$PRESSURE_REQUESTS"
--concurrency "$PRESSURE_CONCURRENCY"
--timeout-ms "$PRESSURE_TIMEOUT_MS"
--sample-interval-ms "$PRESSURE_SAMPLE_INTERVAL_MS"
--method "$PRESSURE_METHOD"
--output "$OUTPUT"
)
if [[ -n "${AUTH_HEADER:-}" ]]; then
args+=(--header "$AUTH_HEADER")
fi
if [[ -n "${EXTRA_HEADERS:-}" ]]; then
while IFS= read -r header; do
[[ -z "$header" ]] && continue
args+=(--header "$header")
done <<< "$EXTRA_HEADERS"
fi
if [[ -n "${PRESSURE_BODY_FILE:-}" ]]; then
args+=(--body-file "$PRESSURE_BODY_FILE")
elif [[ -n "${PRESSURE_BODY:-}" ]]; then
args+=(--body "$PRESSURE_BODY")
fi
if [[ -n "${PRESSURE_RESPONSE_MODE:-}" ]]; then
args+=(--response-mode "$PRESSURE_RESPONSE_MODE")
fi
echo "running gateway pressure probe"
echo " target: $TARGET_URL"
echo " metrics: $METRICS_URL"
echo " requests: $PRESSURE_REQUESTS"
echo " concurrency: $PRESSURE_CONCURRENCY"
echo " cargo: $PRESSURE_CARGO_PROFILE"
echo " output: $OUTPUT"
# Use quiet cargo output so sensitive header values (for example Authorization)
# are not echoed back as part of Cargo's `Running ...` command line.
cargo -q "${args[@]}"
echo
echo "pressure report written to $OUTPUT"