feat: scaffold streaming e2e fixtures

This commit is contained in:
a.tolmachev
2026-04-06 12:12:21 +03:00
parent b40daf4f54
commit 4953272bcf
5 changed files with 233 additions and 1 deletions
+51
View File
@@ -9,6 +9,8 @@ POSTGRES_PORT="${CRANK_E2E_POSTGRES_PORT:-55433}"
ADMIN_PORT="${CRANK_E2E_ADMIN_PORT:-3301}"
MCP_PORT="${CRANK_E2E_MCP_PORT:-3302}"
UI_PORT="${CRANK_E2E_UI_PORT:-3300}"
STREAM_FIXTURE_PORT="${CRANK_E2E_STREAM_FIXTURE_PORT:-3310}"
GRPC_FIXTURE_BIND="${CRANK_E2E_GRPC_FIXTURE_BIND:-127.0.0.1:3311}"
POSTGRES_DB="${CRANK_E2E_POSTGRES_DB:-crank}"
POSTGRES_USER="${CRANK_E2E_POSTGRES_USER:-crank}"
POSTGRES_PASSWORD="${CRANK_E2E_POSTGRES_PASSWORD:-crank}"
@@ -38,16 +40,45 @@ cleanup() {
kill "$(cat "$TMP_DIR/ui-server.pid")" >/dev/null 2>&1 || true
rm -f "$TMP_DIR/ui-server.pid"
fi
if [[ -f "$TMP_DIR/stream-fixture.pid" ]]; then
kill "$(cat "$TMP_DIR/stream-fixture.pid")" >/dev/null 2>&1 || true
rm -f "$TMP_DIR/stream-fixture.pid"
fi
if [[ -f "$TMP_DIR/grpc-fixture.pid" ]]; then
kill "$(cat "$TMP_DIR/grpc-fixture.pid")" >/dev/null 2>&1 || true
rm -f "$TMP_DIR/grpc-fixture.pid"
fi
docker rm -f "$POSTGRES_CONTAINER" >/dev/null 2>&1 || true
kill_port_processes "$UI_PORT"
kill_port_processes "$ADMIN_PORT"
kill_port_processes "$MCP_PORT"
kill_port_processes "$STREAM_FIXTURE_PORT"
kill_port_processes "${GRPC_FIXTURE_BIND##*:}"
}
trap cleanup EXIT INT TERM
cleanup
wait_for_port() {
local host="$1"
local port="$2"
until python - "$host" "$port" <<'PY'
import socket, sys
sock = socket.socket()
sock.settimeout(0.5)
try:
sock.connect((sys.argv[1], int(sys.argv[2])))
except OSError:
sys.exit(1)
finally:
sock.close()
PY
do
sleep 1
done
}
docker run -d --rm \
--name "$POSTGRES_CONTAINER" \
-e POSTGRES_DB="$POSTGRES_DB" \
@@ -76,6 +107,8 @@ export CRANK_BOOTSTRAP_ADMIN_DISPLAY_NAME="Crank E2E"
export CRANK_DEMO_SEED="true"
export CRANK_PUBLIC_BASE_URL="http://127.0.0.1:$UI_PORT"
export CRANK_MCP_PUBLIC_URL="http://127.0.0.1:$MCP_PORT"
export CRANK_E2E_STREAM_FIXTURE_PORT="$STREAM_FIXTURE_PORT"
export CRANK_E2E_GRPC_FIXTURE_BIND="$GRPC_FIXTURE_BIND"
mkdir -p "$CRANK_STORAGE_ROOT"
@@ -99,6 +132,24 @@ until curl -fsS "http://127.0.0.1:$MCP_PORT/health" >/dev/null 2>&1; do
sleep 1
done
(
cd "$ROOT_DIR/apps/ui"
node scripts/stream-fixture-server.js >"$LOG_DIR/stream-fixture.log" 2>&1
) &
echo $! > "$TMP_DIR/stream-fixture.pid"
until curl -fsS "http://127.0.0.1:$STREAM_FIXTURE_PORT/health" >/dev/null 2>&1; do
sleep 1
done
(
cd "$ROOT_DIR"
cargo run -p crank-adapter-grpc --features test-support --example stream_fixture >"$LOG_DIR/grpc-fixture.log" 2>&1
) &
echo $! > "$TMP_DIR/grpc-fixture.pid"
wait_for_port "${GRPC_FIXTURE_BIND%%:*}" "${GRPC_FIXTURE_BIND##*:}"
(
cd "$ROOT_DIR/apps/ui"
node scripts/playwright-ui-server.js >"$LOG_DIR/ui-server.log" 2>&1