gem/tests/score_tile8_gate_overlap.sh
2026-08-30 18:24:55 -06:00

50 lines
1.4 KiB
Bash
Executable file

#!/bin/sh
set -eu
if [ "$#" -ne 1 ]; then
echo "usage: $0 SCORE_TILE8_GATE" >&2
exit 2
fi
runner=$1
fixture=$(mktemp -d /private/tmp/gem-score-tile8-overlap.XXXXXX)
server_pid=
cleanup()
{
if [ -n "$server_pid" ] && kill -0 "$server_pid" 2>/dev/null; then
kill "$server_pid"
wait "$server_pid" 2>/dev/null || true
fi
rm -rf "$fixture"
}
trap cleanup EXIT INT TERM HUP
mkdir -p "$fixture/build"
printf 'fixture model\n' > "$fixture/model.gguf"
printf '%s\n' '#!/bin/sh' 'while :; do sleep 1; done' > "$fixture/build/gem"
chmod +x "$fixture/build/gem"
"$fixture/build/gem" serve &
server_pid=$!
attempt=0
while ! pgrep -f "$fixture/build/gem serve" >/dev/null 2>&1; do
attempt=$((attempt + 1))
if [ "$attempt" -ge 50 ]; then
echo "fixture production process did not become visible" >&2
exit 1
fi
sleep 0.02
done
set +e
GEM_MODEL_SHA256=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef \
GEM_SCORE_TILE8_BUILD="$fixture/missing-build" \
"$runner" "$fixture/model.gguf" "$fixture/output" \
> "$fixture/stdout" 2> "$fixture/stderr"
exit_code=$?
set -e
if [ "$exit_code" -ne 1 ] ||
! grep -q 'refusing to overlap a production server Metal workload' "$fixture/stderr" ||
[ -e "$fixture/output" ]; then
echo "score-tile gate did not fail closed around a production workload" >&2
exit 1
fi