#!/usr/bin/env bash set -euo pipefail # DEVOPS-GRAPH-24-001: load test graph index/adjacency APIs TARGET=${TARGET:-"http://localhost:5000"} OUT="out/graph-load" mkdir -p "$OUT" USERS=${USERS:-8} DURATION=${DURATION:-60} RATE=${RATE:-200} cat > "${OUT}/k6-graph.js" <<'EOF' import http from 'k6/http'; import { sleep } from 'k6'; export const options = { vus: __USERS__, duration: '__DURATION__s', thresholds: { http_req_duration: ['p(95)<500'], http_req_failed: ['rate<0.01'], }, }; const targets = [ '/graph/api/index', '/graph/api/adjacency?limit=100', '/graph/api/search?q=log4j', ]; export default function () { const host = __TARGET__; targets.forEach(path => http.get(`${host}${path}`)); sleep(1); } EOF sed -i "s/__USERS__/${USERS}/g" "${OUT}/k6-graph.js" sed -i "s/__DURATION__/${DURATION}/g" "${OUT}/k6-graph.js" sed -i "s@__TARGET__@\"${TARGET}\"@g" "${OUT}/k6-graph.js" echo "[graph-load] running k6..." k6 run "${OUT}/k6-graph.js" --summary-export "${OUT}/summary.json" --http-debug="off" echo "[graph-load] summary written to ${OUT}/summary.json"