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

65 lines
2.1 KiB
Bash
Executable file

#!/bin/sh
set -eu
if [ "$#" -ne 2 ]; then
echo "usage: $0 SERVER_STREAM_PROBE FAKE_SERVER" >&2
exit 2
fi
probe=$1
server=$2
port=$((40000 + $$ % 15000))
prompt=$(mktemp /private/tmp/gem-stream-probe-prompt.XXXXXX)
response=$(mktemp /private/tmp/gem-stream-probe-response.XXXXXX)
summary=$(mktemp /private/tmp/gem-stream-probe-summary.XXXXXX)
request=$(mktemp /private/tmp/gem-stream-probe-request.XXXXXX)
request_response=$(mktemp /private/tmp/gem-stream-probe-request-response.XXXXXX)
request_summary=$(mktemp /private/tmp/gem-stream-probe-request-summary.XXXXXX)
server_pid=
cleanup()
{
if [ -n "$server_pid" ]; then
kill "$server_pid" 2>/dev/null || true
wait "$server_pid" 2>/dev/null || true
fi
rm -f "$prompt" "$response" "$summary" "$request" "$request_response" \
"$request_summary"
}
trap cleanup EXIT INT TERM HUP
printf 'quote " slash \\\nline' > "$prompt"
"$server" --port "$port" &
server_pid=$!
ready=0
for _attempt in 1 2 3 4 5 6 7 8 9 10; do
if curl --fail --silent "http://127.0.0.1:$port/health" >/dev/null; then
ready=1
break
fi
sleep 0.1
done
[ "$ready" -eq 1 ]
GEM_STREAM_MAX_TOKENS=8 "$probe" "http://127.0.0.1:$port/v1" gemma-4-31b \
"$prompt" "$response" "$summary" >/dev/null
jq -e '
.schema_version == 1 and .http_code == 200 and
.requested_max_tokens == 8 and
.first_visible_event_seconds >= 0.15 and
.visible_event_count == 2 and .finish_reason == "stop" and
.usage.total_tokens == 5
' "$summary" >/dev/null
jq -n --rawfile prompt "$prompt" \
'{model: "gemma-4-31b", messages: [
{role: "user", content: $prompt},
{role: "assistant", content: "answer"},
{role: "user", content: "continue"}], max_tokens: 7}' > "$request"
"$probe" --request "http://127.0.0.1:$port/v1" "$request" \
"$request_response" "$request_summary" >/dev/null
jq -e '
.schema_version == 1 and .http_code == 200 and
.requested_max_tokens == 7 and .visible_event_count == 2 and
.finish_reason == "stop" and .usage.prompt_tokens == 3
' "$request_summary" >/dev/null