Files
Hermit/scripts/docker_parliament_test.sh
WHCandCursor 1605d74f17 fix: sealed peer sync smoke + clearer approval denials (0.9.18)
CLI/Docker assert AEAD sync; status shows sealed channel; headless denials no longer pretend the user refused.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-29 11:18:04 +08:00

65 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/env bash
# Real Docker smoke: shared Realm volume, chair listens, member dials.
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
IMG="${PARLIAMENT_IMAGE:-cst-parliament:local}"
NET="${PARLIAMENT_NET:-cst-parliament-net}"
VOL="${PARLIAMENT_VOL:-cst-parliament-realm}"
LISTEN_PORT=9454
cd "$ROOT"
echo "== docker build (alpine) =="
docker build -f scripts/Dockerfile.parliament -t "$IMG" .
docker network inspect "$NET" >/dev/null 2>&1 || docker network create "$NET"
docker volume inspect "$VOL" >/dev/null 2>&1 || docker volume create "$VOL"
cleanup() {
docker rm -f cst-parl-a cst-parl-b >/dev/null 2>&1 || true
}
trap cleanup EXIT
cleanup
docker volume rm "$VOL" >/dev/null 2>&1 || true
docker volume create "$VOL" >/dev/null
echo "== realm + enroll on shared volume =="
docker run --rm -v "$VOL:/realm-config" -e XDG_CONFIG_HOME=/realm-config "$IMG" --realm-new
docker run --rm -v "$VOL:/realm-config" -e XDG_CONFIG_HOME=/realm-config "$IMG" \
--realm-enroll chair-a --realm-label chair
docker run --rm -v "$VOL:/realm-config" -e XDG_CONFIG_HOME=/realm-config "$IMG" \
--realm-enroll member-b --realm-label member
echo "== chair listens =="
docker run -d --name cst-parl-a --network "$NET" \
-v "$VOL:/realm-config" -e XDG_CONFIG_HOME=/realm-config \
"$IMG" --peer-listen="$LISTEN_PORT" --instance chair-a
for i in $(seq 1 50); do
if docker logs cst-parl-a 2>&1 | grep -q "peer_listen port="; then
break
fi
sleep 0.2
done
docker logs cst-parl-a 2>&1 | tail -8
echo "== member dials =="
dial_out="$(docker run --rm --name cst-parl-b --network "$NET" \
-v "$VOL:/realm-config" -e XDG_CONFIG_HOME=/realm-config \
"$IMG" --peer-dial="cst-parl-a:${LISTEN_PORT}" --instance member-b)"
echo "$dial_out"
echo "$dial_out" | grep -q 'sealed=1'
echo "$dial_out" | grep -q 'peer_sync rev='
echo "== chair result =="
for i in $(seq 1 50); do
if docker logs cst-parl-a 2>&1 | grep -q "peer_sync rev="; then
break
fi
sleep 0.2
done
docker logs cst-parl-a 2>&1 | grep -E 'peer_ok|peer_sync'
docker logs cst-parl-a 2>&1 | grep -q 'sealed=1'
docker logs cst-parl-a 2>&1 | grep -q 'peer_sync rev='
echo "docker_parliament_test: OK"