fix: evaluate.sh detects docker compose vs docker-compose binary; red-team-sweep.sh does not (#964)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
da672070a6
commit
33123cfd1d
1 changed files with 12 additions and 3 deletions
|
|
@ -19,6 +19,15 @@ TIMEOUT_PER="${1:-3600}"
|
||||||
log() { echo "[sweep $(date -u +%H:%M:%S)] $*"; }
|
log() { echo "[sweep $(date -u +%H:%M:%S)] $*"; }
|
||||||
die() { log "FATAL: $*" >&2; exit 1; }
|
die() { log "FATAL: $*" >&2; exit 1; }
|
||||||
|
|
||||||
|
# ── Detect docker compose command (plugin vs legacy standalone) ────────
|
||||||
|
if docker compose version &>/dev/null 2>&1; then
|
||||||
|
COMPOSE_CMD="docker compose"
|
||||||
|
elif command -v docker-compose &>/dev/null; then
|
||||||
|
COMPOSE_CMD="docker-compose"
|
||||||
|
else
|
||||||
|
die "docker compose not found. Install Docker with the compose plugin."
|
||||||
|
fi
|
||||||
|
|
||||||
[[ -f "$INJECT" ]] || die "inject.sh not found at $INJECT"
|
[[ -f "$INJECT" ]] || die "inject.sh not found at $INJECT"
|
||||||
|
|
||||||
mkdir -p "$ATTACKS_OUT"
|
mkdir -p "$ATTACKS_OUT"
|
||||||
|
|
@ -51,7 +60,7 @@ SMOKE_SEED="${seeds[$SMOKE_IDX]}"
|
||||||
SMOKE_NAME=$(basename "$SMOKE_SEED" .push3)
|
SMOKE_NAME=$(basename "$SMOKE_SEED" .push3)
|
||||||
log "Smoke test: $SMOKE_NAME"
|
log "Smoke test: $SMOKE_NAME"
|
||||||
cp "$OPT_SOL" "${OPT_SOL}.sweep-backup"
|
cp "$OPT_SOL" "${OPT_SOL}.sweep-backup"
|
||||||
trap 'cp "${OPT_SOL}.sweep-backup" "$OPT_SOL" 2>/dev/null; rm -f "${OPT_SOL}.sweep-backup"; docker compose -f "$REPO_ROOT/docker-compose.yml" down -v 2>/dev/null || true' EXIT
|
trap 'cp "${OPT_SOL}.sweep-backup" "$OPT_SOL" 2>/dev/null; rm -f "${OPT_SOL}.sweep-backup"; $COMPOSE_CMD -f "$REPO_ROOT/docker-compose.yml" down -v 2>/dev/null || true' EXIT
|
||||||
|
|
||||||
bash "$INJECT" "$SMOKE_SEED" "$OPT_SOL" || die "Smoke test inject failed for $SMOKE_NAME"
|
bash "$INJECT" "$SMOKE_SEED" "$OPT_SOL" || die "Smoke test inject failed for $SMOKE_NAME"
|
||||||
(cd "$REPO_ROOT/onchain" && forge build --silent 2>&1) || die "Smoke test compile failed for $SMOKE_NAME"
|
(cd "$REPO_ROOT/onchain" && forge build --silent 2>&1) || die "Smoke test compile failed for $SMOKE_NAME"
|
||||||
|
|
@ -290,10 +299,10 @@ PYEOF
|
||||||
log "DONE $seed_name"
|
log "DONE $seed_name"
|
||||||
|
|
||||||
# 6. Teardown — poll until all containers have exited (exponential backoff, no fixed delay)
|
# 6. Teardown — poll until all containers have exited (exponential backoff, no fixed delay)
|
||||||
docker compose -f "$REPO_ROOT/docker-compose.yml" down -v 2>/dev/null || true
|
$COMPOSE_CMD -f "$REPO_ROOT/docker-compose.yml" down -v 2>/dev/null || true
|
||||||
_deadline=$(( $(date +%s) + 30 ))
|
_deadline=$(( $(date +%s) + 30 ))
|
||||||
_backoff_ms=100
|
_backoff_ms=100
|
||||||
while [[ -n "$(docker compose -f "$REPO_ROOT/docker-compose.yml" ps --quiet 2>/dev/null)" ]]; do
|
while [[ -n "$($COMPOSE_CMD -f "$REPO_ROOT/docker-compose.yml" ps --quiet 2>/dev/null)" ]]; do
|
||||||
if [[ $(date +%s) -ge $_deadline ]]; then
|
if [[ $(date +%s) -ge $_deadline ]]; then
|
||||||
log "WARNING: containers still present after 30s — proceeding anyway"
|
log "WARNING: containers still present after 30s — proceeding anyway"
|
||||||
break
|
break
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue