#!/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"