#!/bin/sh # Waits for both simulated boards to finish and fails unless each exited with code 0 # (exit code 0 = all 19 checks passed). Used by the deploy pipeline after "compose up". set -eu PROJECT=${COMPOSE_PROJECT_NAME:-crypto-interop-spike} TIMEOUT=${VERIFY_TIMEOUT:-300} waited=0 while :; do done_count=0 for svc in board-c board-cpp; do cid=$(docker ps -aq --filter "label=com.docker.compose.project=$PROJECT" --filter "label=com.docker.compose.service=$svc") [ -n "$cid" ] || { echo "container for $svc not found" >&2; exit 1; } [ "$(docker inspect -f '{{.State.Status}}' "$cid")" = exited ] && done_count=$((done_count + 1)) done [ "$done_count" = 2 ] && break [ "$waited" -ge "$TIMEOUT" ] && { echo "timed out after ${TIMEOUT}s waiting for the boards" >&2; exit 1; } sleep 5 waited=$((waited + 5)) done status=0 for svc in board-c board-cpp; do cid=$(docker ps -aq --filter "label=com.docker.compose.project=$PROJECT" --filter "label=com.docker.compose.service=$svc") code=$(docker inspect -f '{{.State.ExitCode}}' "$cid") echo "$svc exit code: $code" docker logs "$cid" 2>&1 | grep -E 'RESULT|FAIL' || true [ "$code" = 0 ] || status=1 done exit "$status"