- P2: Remove dead heredoc from run.sh mixed scenario - P2: Add setup() warmup to seed real tokens for standalone scenarios - P3: Replace handleSummary file output with --summary-export in run.sh - P3: Add .gitignore for k6 results and .env - Fix stray closing brace in scripts/load-test/lib/common.js Co-Authored-By: Paperclip <noreply@paperclip.ing>
72 lines
1.8 KiB
Bash
Executable File
72 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Run k6 load tests for Darkwatch authentication endpoints
|
|
# Usage: ./run.sh [scenario]
|
|
# scenario: mixed (default), login, logout, refresh
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
cd "$SCRIPT_DIR"
|
|
|
|
# Load environment variables from .env if present
|
|
if [[ -f .env ]]; then
|
|
set -a
|
|
source .env
|
|
set +a
|
|
fi
|
|
|
|
SCENARIO="${1:-mixed}"
|
|
OUTPUT_DIR="${SCRIPT_DIR}/results"
|
|
TIMESTAMP="$(date +%Y%m%d-%H%M%S)"
|
|
|
|
mkdir -p "$OUTPUT_DIR"
|
|
|
|
echo "=== Darkwatch Auth Load Test ==="
|
|
echo "Scenario: $SCENARIO"
|
|
echo "Target RPS: ${TARGET_RPS:-500}"
|
|
echo "Duration: ${DURATION:-300s}"
|
|
echo "Base URL: ${DARKWATCH_BASE_URL:-http://localhost:3000}"
|
|
echo ""
|
|
|
|
case "$SCENARIO" in
|
|
mixed)
|
|
k6 run darkwatch-auth.js \
|
|
--summary-export "$OUTPUT_DIR/summary-${TIMESTAMP}.json" \
|
|
--out json="$OUTPUT_DIR/results-${TIMESTAMP}.json"
|
|
;;
|
|
login)
|
|
k6 run --scenario login_only darkwatch-auth.js \
|
|
--summary-export "$OUTPUT_DIR/summary-${TIMESTAMP}.json" \
|
|
--out json="$OUTPUT_DIR/results-${TIMESTAMP}.json"
|
|
;;
|
|
logout)
|
|
k6 run --scenario logout_only darkwatch-auth.js \
|
|
--summary-export "$OUTPUT_DIR/summary-${TIMESTAMP}.json" \
|
|
--out json="$OUTPUT_DIR/results-${TIMESTAMP}.json"
|
|
;;
|
|
refresh)
|
|
k6 run --scenario refresh_only darkwatch-auth.js \
|
|
--summary-export "$OUTPUT_DIR/summary-${TIMESTAMP}.json" \
|
|
--out json="$OUTPUT_DIR/results-${TIMESTAMP}.json"
|
|
;;
|
|
*)
|
|
echo "Unknown scenario: $SCENARIO"
|
|
echo "Available: mixed, login, logout, refresh"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
EXIT_CODE=$?
|
|
|
|
if [[ $EXIT_CODE -eq 0 ]]; then
|
|
echo ""
|
|
echo "✅ All thresholds passed!"
|
|
echo "Results saved to: $OUTPUT_DIR/results-${TIMESTAMP}.json"
|
|
else
|
|
echo ""
|
|
echo "❌ Thresholds failed. Check output above."
|
|
echo "Results saved to: $OUTPUT_DIR/results-${TIMESTAMP}.json"
|
|
fi
|
|
|
|
exit $EXIT_CODE
|