Propagate web-search cancellation
This commit is contained in:
@@ -6,9 +6,10 @@ IMAGE="${CONTEXT_KIT_WEB_SEARCH_CANDIDATE_IMAGE:-context-kit/web-search-mcp:qual
|
||||
NETWORK="context-kit-web-quality-$RANDOM-$$"
|
||||
MOCK="${NETWORK}-mock"
|
||||
SERVER="${NETWORK}-server"
|
||||
BRIDGE="${NETWORK}-bridge"
|
||||
|
||||
cleanup() {
|
||||
docker rm -f "${SERVER}" "${MOCK}" >/dev/null 2>&1 || true
|
||||
docker rm -f "${BRIDGE}" "${SERVER}" "${MOCK}" >/dev/null 2>&1 || true
|
||||
docker network rm "${NETWORK}" >/dev/null 2>&1 || true
|
||||
}
|
||||
trap cleanup EXIT
|
||||
@@ -18,17 +19,38 @@ docker run -d --name "${MOCK}" --network "${NETWORK}" --ip 203.0.113.10 \
|
||||
--network-alias mock-search.test \
|
||||
-v "${ROOT}/scripts/fixtures/web/mock-server.mjs:/fixture/mock-server.mjs:ro" \
|
||||
node:22-bookworm-slim node /fixture/mock-server.mjs >/dev/null
|
||||
docker run -d --name "${SERVER}" --network "${NETWORK}" --ip 203.0.113.11 \
|
||||
docker run -d --init --name "${SERVER}" --network "${NETWORK}" --ip 203.0.113.11 \
|
||||
--network-alias web-search-mcp \
|
||||
-p 127.0.0.1::8000 \
|
||||
-e SEARXNG_URL=http://mock-search.test:8080 \
|
||||
-e DEFAULT_SEARCH_PROVIDER=searxng \
|
||||
"${IMAGE}" >/dev/null
|
||||
|
||||
[[ "$(docker inspect -f '{{.HostConfig.Init}}' "${SERVER}")" == true ]] || {
|
||||
printf 'candidate web-search container does not use Docker init\n' >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
binding="$(docker port "${SERVER}" 8000/tcp)"
|
||||
port="${binding##*:}"
|
||||
for _ in {1..120}; do
|
||||
if curl -fsS "http://127.0.0.1:${port}/healthz" >/dev/null 2>&1; then
|
||||
node "${ROOT}/scripts/test-web-search-candidate.mjs" "http://127.0.0.1:${port}/mcp"
|
||||
node "${ROOT}/scripts/test-web-search-stdio-cancellation.mjs" \
|
||||
docker run --rm --init -i --name "${BRIDGE}" --network "${NETWORK}" \
|
||||
--entrypoint mcp-proxy "${IMAGE}" --transport streamablehttp "http://web-search-mcp:8000/mcp"
|
||||
docker exec "${SERVER}" sh -eu -c '
|
||||
for status in /proc/[0-9]*/status; do
|
||||
while IFS=: read -r key value; do
|
||||
if [ "$key" = State ]; then
|
||||
case "$value" in
|
||||
*Z*) printf "zombie process found in %s: %s\n" "$status" "$value" >&2; exit 1 ;;
|
||||
esac
|
||||
break
|
||||
fi
|
||||
done < "$status"
|
||||
done
|
||||
'
|
||||
exit 0
|
||||
fi
|
||||
sleep 0.25
|
||||
|
||||
Reference in New Issue
Block a user