| 1 | #!/usr/bin/env bash |
| 2 | set -euo pipefail |
| 3 | |
| 4 | repo_root="$(cd "$(dirname "$0")/.." && pwd)" |
| 5 | |
| 6 | runtime_dir="$(mktemp -d)" |
| 7 | log_file="$(mktemp)" |
| 8 | status_file="$(mktemp)" |
| 9 | |
| 10 | cleanup() { |
| 11 | rm -f "$log_file" "$status_file" |
| 12 | rm -rf "$runtime_dir" |
| 13 | } |
| 14 | trap cleanup EXIT |
| 15 | |
| 16 | mkdir -p "$runtime_dir/garwarp" |
| 17 | cat > "$runtime_dir/garwarp/requests.state" <<STORE |
| 18 | id=req-1 sender=:1.2 state=bogus |
| 19 | STORE |
| 20 | |
| 21 | DBUS_FATAL_WARNINGS=0 dbus-run-session -- bash -lc ' |
| 22 | set -euo pipefail |
| 23 | export XDG_RUNTIME_DIR="'"$runtime_dir"'" |
| 24 | cd "'"$repo_root"'" |
| 25 | |
| 26 | cargo run -q -p garwarp -- daemon >"'"$log_file"'" 2>&1 & |
| 27 | pid=$! |
| 28 | |
| 29 | for _ in $(seq 1 200); do |
| 30 | [ -S "$XDG_RUNTIME_DIR/garwarp/control.sock" ] && break |
| 31 | sleep 0.05 |
| 32 | done |
| 33 | |
| 34 | [ -S "$XDG_RUNTIME_DIR/garwarp/control.sock" ] |
| 35 | |
| 36 | cargo run -q -p garwarpctl -- status >"'"$status_file"'" |
| 37 | cargo run -q -p garwarpctl -- stop >/dev/null |
| 38 | wait "$pid" |
| 39 | ' |
| 40 | |
| 41 | ls "$runtime_dir/garwarp"/requests.state.corrupt-* >/dev/null |
| 42 | [ -f "$runtime_dir/garwarp/requests.state" ] |
| 43 | rg -q "request_store_load_failed" "$log_file" |
| 44 | rg -q "request_store_quarantined" "$log_file" |
| 45 | rg -q "health=" "$status_file" |
| 46 | |
| 47 | echo "request-store fallback smoke test passed" |