29 lines
1009 B
Bash
Executable File
29 lines
1009 B
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
target_name="${BENCH_TARGET_NAME:-target}"
|
|
scenario_name="${BENCH_SCENARIO_NAME:-scenario}"
|
|
run_stamp="$(date +%Y%m%d-%H%M%S)"
|
|
result_dir="${BENCH_RESULT_DIR:-${repo_root}/artifacts/performance/${run_stamp}-${target_name}-${scenario_name}}"
|
|
|
|
if ! command -v k6 >/dev/null 2>&1; then
|
|
echo "k6 is required for the three-run comparison" >&2
|
|
exit 1
|
|
fi
|
|
if [[ -z "${BENCH_BASE_URL:-}" || -z "${BENCH_PATH:-}" ]]; then
|
|
echo "BENCH_BASE_URL and BENCH_PATH are required" >&2
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p "${result_dir}"
|
|
for run_number in 1 2 3; do
|
|
k6 run --summary-export "${result_dir}/summary-run-${run_number}.json" \
|
|
"${repo_root}/tools/performance/dual-line.js" \
|
|
| tee "${result_dir}/run-${run_number}.txt"
|
|
done
|
|
|
|
printf 'target=%s\nscenario=%s\nbase_url=%s\npath=%s\n' \
|
|
"${target_name}" "${scenario_name}" "${BENCH_BASE_URL}" "${BENCH_PATH}" >"${result_dir}/run.env"
|
|
echo "Results: ${result_dir}"
|