#!/usr/bin/env bash # measure-startup.sh [-- extra java args...] # Starts the jar, waits for the "Started ... in Ns" line, records it, stops, repeats. set -uo pipefail source "$(dirname "$0")/env.sh" RUNS="${1:-5}"; shift || true [ "${1:-}" = "--" ] && shift for i in $(seq 1 "$RUNS"); do LOG=$(mktemp) "$JAVA_HOME/bin/java" "$@" -jar "$JAR" > "$LOG" 2>&1 & PID=$! for _ in $(seq 1 120); do grep -q 'Started StartupDiagnosisApplication' "$LOG" && break kill -0 $PID 2>/dev/null || break sleep 0.25 done grep -h 'Started StartupDiagnosisApplication' "$LOG" | sed 's/.*Started/Started/' kill -9 $PID 2>/dev/null || true wait $PID 2>/dev/null rm -f "$LOG" sleep 1 done