chore: scripts/hammer.sh — flake-hammer for conn-lifecycle discipline

Default run encodes the pre-commit ritual: 35x the lifecycle-sensitive
integration subset (shutdown timeout reaped slowloris streaming chunked
sse stalled), fail-fast, then 3x the full suite. -n/-f override counts,
'-- <words>' overrides the filter. Failing run's output lands in
target/hammer-fail.log.
This commit is contained in:
Claude
2026-06-12 09:10:17 +00:00
parent f5ccd640fb
commit c171be7ddc
+59
View File
@@ -0,0 +1,59 @@
#!/usr/bin/env bash
# Flake hammer: the conn-lifecycle test discipline, in one command.
#
# Default (no args) = the full pre-commit ritual for conn-lifecycle changes:
# 1. N x the lifecycle-sensitive integration subset (fail-fast)
# 2. M x the full suite (unit + integration + doc)
#
# Usage:
# scripts/hammer.sh # 35x subset + 3x full
# scripts/hammer.sh -n 50 -f 5 # override counts
# scripts/hammer.sh -n 20 -f 0 -- shutdown sse # custom filter, skip full runs
#
# On failure: stops immediately, output of the failing run is in $LOG.
set -u
cd "$(dirname "$0")/.."
export PATH="$HOME/.cargo/bin:$PATH"
N=35
FULL=3
SUBSET=(shutdown timeout reaped slowloris streaming chunked sse stalled)
while [[ $# -gt 0 ]]; do
case "$1" in
-n) N="$2"; shift 2 ;;
-f) FULL="$2"; shift 2 ;;
--) shift; SUBSET=("$@"); break ;;
*) echo "unknown arg: $1" >&2; exit 2 ;;
esac
done
LOG=target/hammer-fail.log
mkdir -p target
echo "== build once =="
cargo test --no-run --quiet || exit 1
fail() { # $1 = label
echo
echo "FAILED at $1 — output in $LOG"
exit 1
}
echo "== ${N}x subset: ${SUBSET[*]} =="
for ((i = 1; i <= N; i++)); do
printf '\r subset %d/%d ' "$i" "$N"
cargo test --quiet --test integration -- "${SUBSET[@]}" >"$LOG" 2>&1 \
|| fail "subset run $i/$N"
done
echo
echo "== ${FULL}x full suite =="
for ((i = 1; i <= FULL; i++)); do
printf ' full %d/%d\n' "$i" "$FULL"
cargo test --quiet >"$LOG" 2>&1 || fail "full run $i/$FULL"
done
rm -f "$LOG"
echo "hammer green: ${N}x subset + ${FULL}x full"