File size: 2,202 Bytes
00c55c8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#!/usr/bin/env bash
set -Eeuo pipefail

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"

if [ -n "${OPENPI_PYTHON:-}" ]; then
    PY="$OPENPI_PYTHON"
elif [ -x "$ROOT/.venv/bin/python" ]; then
    PY="$ROOT/.venv/bin/python"
else
    PY="$(command -v python3 || true)"
fi

if [ -z "$PY" ] || [ ! -x "$PY" ]; then
    echo "ERROR: no usable Python interpreter found"
    exit 1
fi

PORT="${LOOPBACK_PORT:-18080}"
GPU="${LOOPBACK_GPU:-0}"
LOG="${LOOPBACK_LOG:-/tmp/streampi_piperx_loopback.log}"
MAX_LATENCY="${LOOPBACK_MAX_LATENCY_SECONDS:-2.0}"

if ss -ltn 2>/dev/null | grep -q ":${PORT} "; then
    echo "ERROR: port $PORT is already occupied"
    exit 1
fi

rm -f "$LOG"

cleanup() {
    if [ -n "${SERVER_PID:-}" ] &&
       kill -0 "$SERVER_PID" 2>/dev/null; then
        kill "$SERVER_PID" 2>/dev/null || true
        wait "$SERVER_PID" 2>/dev/null || true
    fi
}
trap cleanup EXIT INT TERM

POLICY_HOST=127.0.0.1 \
POLICY_PORT="$PORT" \
POLICY_GPU="$GPU" \
OPENPI_PYTHON="$PY" \
    "$ROOT/scripts/start_policy_server.sh" \
    >"$LOG" 2>&1 &

SERVER_PID=$!
echo "SERVER_PID=$SERVER_PID"
echo "SERVER_LOG=$LOG"

READY=0
for attempt in $(seq 1 300); do
    if ! kill -0 "$SERVER_PID" 2>/dev/null; then
        echo "ERROR: server exited during startup"
        tail -160 "$LOG"
        exit 1
    fi

    if ss -ltn 2>/dev/null | grep -q ":${PORT} "; then
        READY=1
        break
    fi

    if [ $((attempt % 5)) -eq 0 ]; then
        echo "[waiting] elapsed=$((attempt * 2))s"
        tail -5 "$LOG" || true
    fi

    sleep 2
done

if [ "$READY" -ne 1 ]; then
    echo "ERROR: server startup timeout"
    tail -200 "$LOG"
    exit 1
fi

echo "SERVER_READY"

POLICY_HOST=127.0.0.1 \
POLICY_PORT="$PORT" \
OPENPI_CLIENT_PYTHON="$PY" \
WARMUP_STEPS=3 \
    "$ROOT/scripts/warmup_policy.sh"

echo
echo "===== POST-WARMUP VALIDATION ====="

export PYTHONDONTWRITEBYTECODE=1
export PYTHONPATH="$ROOT:$ROOT/packages/openpi-client/src"

"$PY" "$ROOT/deployment/smoke_client.py" \
    --host 127.0.0.1 \
    --port "$PORT" \
    --steps 4 \
    --reset-check \
    --max-latency-seconds "$MAX_LATENCY"

echo
echo "===== SERVER LOG TAIL ====="
tail -100 "$LOG"

echo "LOOPBACK_TEST_OK"