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

61 lines
2.2 KiB
Bash
Executable file

#!/bin/sh
set -eu
if [ "$#" -ne 3 ]; then
echo "usage: $0 RUNNER STREAM_PROBE FAKE_SERVER" >&2
exit 2
fi
runner=$1
stream_probe=$2
fake_server=$3
fixture=$(mktemp -d /private/tmp/gem-prefill-cancel-gate.XXXXXX)
cleanup()
{
rm -rf "$fixture"
}
trap cleanup EXIT INT TERM HUP
mkdir -p "$fixture/build" "$fixture/scripts"
printf 'fixture model\n' > "$fixture/model.gguf"
printf 'fixture cancellation prompt\n' > "$fixture/prompt.txt"
# These fragments are the literal body of a generated executable fixture.
# shellcheck disable=SC2016
printf '%s\n' '#!/bin/sh' \
'set -eu' \
'if [ "$1" = print-config ]; then' \
' printf '\''{"engine":"gem-native-c-metal","context":512,"kv_type":"f32"}\n'\''' \
' exit 0' \
'fi' \
'port=' \
'while [ "$#" -gt 0 ]; do' \
' if [ "$1" = --port ]; then port=$2; shift 2; else shift; fi' \
'done' \
'exec python3 "$GEM_FAKE_CANCEL_SERVER" --port "$port"' > "$fixture/build/gem"
printf '%s\n' '#!/bin/sh' 'printf '\''{"token_count":256}\n'\''' \
> "$fixture/build/gem-tokenize"
chmod +x "$fixture/build/gem" "$fixture/build/gem-tokenize"
ln -s "$stream_probe" "$fixture/scripts/server-stream-probe.sh"
port=$((40000 + ($$ % 10000)))
(
cd "$fixture"
GEM_MODEL_SHA256=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef \
GEM_CANCEL_AFTER_SECONDS=1 GEM_CANCEL_RECOVERY_LIMIT_SECONDS=8 \
GEM_FAKE_CANCEL_SERVER="$fake_server" \
"$runner" model.gguf 512 prompt.txt results "$port" >/dev/null
)
jq -e '
.workload == "prefill-cancel-recovery" and .context == 512 and
.prompt_tokens == 256 and .cancellation_curl_status == 28 and
.keepalive_events >= 1 and .post_cancel_health_status == 200 and
.post_cancel_health_recovery_seconds <= 8 and
.recovery_requested_max_tokens == 16 and
.same_process_recovery_request == "passed"
' "$fixture/results/summary.json" >/dev/null
jq -e '
.http_code == 200 and .requested_max_tokens == 16 and
.visible_event_count > 0 and .finish_reason == "stop" and
.usage == {prompt_tokens: 3, completion_tokens: 2, total_tokens: 5}
' "$fixture/results/recovery-measurement.json" >/dev/null
grep -q '^: keepalive$' "$fixture/results/cancelled.sse"