66 lines
2.2 KiB
Bash
Executable File
66 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
|
WORKSPACE="$(cd -- "$SCRIPT_DIR/../.." && pwd)"
|
|
ARTIFACT_ROOT="${WATCHDOG_B_VERIFY_ROOT:-$WORKSPACE/state/watchdog-b-verify-e2e}"
|
|
RUN_ID="${RUN_ID:-$(date +%Y%m%dT%H%M%S)}"
|
|
RUN_DIR="$ARTIFACT_ROOT/$RUN_ID"
|
|
FIXTURE_DIR="$RUN_DIR/fixture"
|
|
LOG="$RUN_DIR/verify.log"
|
|
STATE_DIR="$RUN_DIR/state"
|
|
QUEUE_SNAPSHOT="$RUN_DIR/queue-before.txt"
|
|
QUEUE_AFTER="$RUN_DIR/queue-after.txt"
|
|
mkdir -p "$FIXTURE_DIR/host-runtime" "$FIXTURE_DIR/logs" "$STATE_DIR" "$RUN_DIR"
|
|
|
|
exec > >(tee -a "$LOG") 2>&1
|
|
|
|
echo "[verify] run_id=$RUN_ID"
|
|
echo "[verify] workspace=$WORKSPACE"
|
|
date -Iseconds
|
|
|
|
echo "[verify] snapshot owner-report queue before"
|
|
find "$HOME/.clawteam/owner-reports" -maxdepth 2 -type f | sort > "$QUEUE_SNAPSHOT" || true
|
|
|
|
sleep 180 &
|
|
FAKE_PID=$!
|
|
trap 'kill "$FAKE_PID" 2>/dev/null || true' EXIT
|
|
printf '%s\n' "$FAKE_PID" > "$FIXTURE_DIR/host-runtime/openclaw.pid"
|
|
touch "$FIXTURE_DIR/logs/openclaw.log"
|
|
|
|
echo "[verify] run watchdog-b direct E2E (enqueue + direct delivery)"
|
|
OPENCLAW_PID_FILE="$FIXTURE_DIR/host-runtime/openclaw.pid" \
|
|
OPENCLAW_LOG_FILE="$FIXTURE_DIR/logs/openclaw.log" \
|
|
STALL_AFTER_SECONDS=1200 \
|
|
WATCHDOG_B_ARTIFACT_DIR="$STATE_DIR" \
|
|
WATCHDOG_B_NOTIFY_DRY_RUN=0 \
|
|
WATCHDOG_B_RUNNING_REPORT_MODE=enqueue-and-drain \
|
|
WATCHDOG_B_RUNNING_REPORT_MIN_INTERVAL_SECONDS=0 \
|
|
"$WORKSPACE/scripts/watchdog-b/run_watchdog_b.sh" | tee "$RUN_DIR/run-output.txt"
|
|
|
|
echo "[verify] snapshot owner-report queue after"
|
|
find "$HOME/.clawteam/owner-reports" -maxdepth 2 -type f | sort > "$QUEUE_AFTER" || true
|
|
|
|
echo "[verify] summarize"
|
|
REPORT_ID="$(python3 - <<'PY' "$STATE_DIR/notify-state.json"
|
|
import json,sys
|
|
p=sys.argv[1]
|
|
with open(p,'r',encoding='utf-8') as f:
|
|
data=json.load(f)
|
|
print(data['events']['running']['last_result']['enqueue']['report_id'])
|
|
PY
|
|
)"
|
|
|
|
echo "REPORT_ID=$REPORT_ID" | tee "$RUN_DIR/result.env"
|
|
SENT_PATH="$HOME/.clawteam/owner-reports/sent/$REPORT_ID.md"
|
|
echo "SENT_PATH=$SENT_PATH" | tee -a "$RUN_DIR/result.env"
|
|
if [[ ! -f "$SENT_PATH" ]]; then
|
|
echo "[verify] ERROR: sent file missing: $SENT_PATH" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "[verify] sent file found"
|
|
sed -n '1,120p' "$SENT_PATH" | tee "$RUN_DIR/sent-head.txt"
|
|
|
|
echo "[verify] done"
|