mirror of
https://github.com/x1xhlol/system-prompts-and-models-of-ai-tools.git
synced 2026-06-17 23:09:35 +00:00
73 lines
2.9 KiB
Bash
73 lines
2.9 KiB
Bash
#!/usr/bin/env bash
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
# run_k6_prod.sh — execute the k6 smoke load test against prod (T6 gate)
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
#
|
|
# Reads API_BASE + API_KEY from /opt/dealix/.env on the prod server, then
|
|
# runs tests/load/k6_smoke.js with those values.
|
|
#
|
|
# Prerequisites (on the server):
|
|
# apt-get install -y gnupg ca-certificates
|
|
# gpg -k
|
|
# gpg --no-default-keyring --keyring /usr/share/keyrings/k6-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69
|
|
# echo "deb [signed-by=/usr/share/keyrings/k6-archive-keyring.gpg] https://dl.k6.io/deb stable main" | tee /etc/apt/sources.list.d/k6.list
|
|
# apt-get update && apt-get install -y k6
|
|
#
|
|
# Run on server:
|
|
# bash /opt/dealix/scripts/ops/run_k6_prod.sh
|
|
#
|
|
# DoD for T6: http_req_failed <2%, p95 <2s, 100 VU peak sustained 1 min
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
set -euo pipefail
|
|
|
|
ENV_FILE="${ENV_FILE:-/opt/dealix/.env}"
|
|
K6_SCRIPT="${K6_SCRIPT:-/opt/dealix/tests/load/k6_smoke.js}"
|
|
OUT_DIR="${OUT_DIR:-/var/log/dealix_k6}"
|
|
TS=$(date -u +%Y%m%dT%H%M%SZ)
|
|
|
|
mkdir -p "$OUT_DIR"
|
|
|
|
[[ -f "$ENV_FILE" ]] || { echo "FATAL: $ENV_FILE not found"; exit 1; }
|
|
[[ -f "$K6_SCRIPT" ]] || { echo "FATAL: $K6_SCRIPT not found"; exit 1; }
|
|
|
|
# Pull values from .env
|
|
API_BASE=$(grep -E '^API_BASE=' "$ENV_FILE" | tail -1 | cut -d= -f2- | tr -d '"' || true)
|
|
API_KEY=$(grep -E '^API_KEYS=' "$ENV_FILE" | tail -1 | cut -d= -f2- | tr -d '"' | cut -d, -f1 || true)
|
|
|
|
# Fallback: use localhost + any valid key from API_KEYS
|
|
: "${API_BASE:=http://127.0.0.1:8001}"
|
|
|
|
if [[ -z "$API_KEY" ]]; then
|
|
echo "FATAL: could not extract API_KEY from $ENV_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
echo "=== k6 run started $TS ==="
|
|
echo "API_BASE: $API_BASE"
|
|
echo "API_KEY: ${API_KEY:0:4}...${API_KEY: -4} (redacted)"
|
|
echo "Output: $OUT_DIR/k6_${TS}.json"
|
|
echo
|
|
|
|
API_BASE="$API_BASE" API_KEY="$API_KEY" \
|
|
k6 run \
|
|
--summary-export="$OUT_DIR/k6_${TS}_summary.json" \
|
|
--out json="$OUT_DIR/k6_${TS}.json" \
|
|
"$K6_SCRIPT" \
|
|
| tee "$OUT_DIR/k6_${TS}.log"
|
|
|
|
EXIT_CODE=${PIPESTATUS[0]}
|
|
|
|
echo
|
|
echo "=== k6 run finished (exit=$EXIT_CODE) ==="
|
|
echo "Summary: $OUT_DIR/k6_${TS}_summary.json"
|
|
echo "Log: $OUT_DIR/k6_${TS}.log"
|
|
|
|
if [[ $EXIT_CODE -eq 0 ]]; then
|
|
echo "✅ T6 gate PASSED — thresholds met"
|
|
else
|
|
echo "❌ T6 gate FAILED — thresholds breached; inspect log"
|
|
fi
|
|
|
|
exit "$EXIT_CODE"
|