一键导入
failover-test
Run iperf3 throughput through the HA cluster while cycling RG failovers. Verifies zero-drop failover with configurable iterations.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Run iperf3 throughput through the HA cluster while cycling RG failovers. Verifies zero-drop failover with configurable iterations.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Drive ALL open issues to terminal (MERGED / PLAN-KILLED / PLAN-DEFERRED-with-reason) — a drive-to-zero campaign. Ranks the backlog, fans out /research + /engineer agents (parallel route) or chains coupled work (serial route), PARENT-reviews every PR, files new issues found during audits, and stops when nothing driveable remains.
Alias for /triple-review — drive a refactor through the full quad-review methodology (Codex + Antigravity + Claude SMR + Copilot) with plan-review, smoke, and 4-of-4 merge gate.
Merge all open PRs (or specific ones) and close their associated issues
Run IPv4/IPv6 throughput and CPU profiling on bpfrx cluster or standalone VM using iperf3 + perf record.
Research an issue with hostile reviews from Claude SMR + Codex + AGY; produce a plan-of-action doc for manual approval BEFORE any implementation. Stops at PLAN-READY — does NOT engineer the PR.
Drive a hostile network-expert quad-review on a GitHub PR — Claude hostile in-conversation, Codex hostile, Antigravity adversarial, plus Copilot inline reviews. All four reviewers hostile-verify rather than confirm. Iterate across force-pushes until all reviewers agree. Never autonomously merge — synthesis only.
| name | failover-test |
| description | Run iperf3 throughput through the HA cluster while cycling RG failovers. Verifies zero-drop failover with configurable iterations. |
| user-invocable | true |
Run iperf3 traffic through the firewall cluster while cycling redundancy-group failovers. Every 1-second interval must maintain throughput between ~4 Gbps (split-RG fabric) and ~22 Gbps (same-node). Zero intervals at 0 Gbps.
/failover-test — 2 cycles (default)/failover-test 5 — 5 cycles/failover-test 3 rg2 — 3 cycles on RG2Takeover ready: yes, up to 60s)-t $((CYCLES*20+30)) -i 1 -P 4 --forceflushALWAYS build and deploy before running tests. Stale binaries are the #1 source of false failures.
# Build Go daemon + Rust helper + XDP shim
make build
cd userspace-dp && cargo build --release && cd ..
cp userspace-dp/target/release/xpf-userspace-dp .
# Deploy to both firewalls via rolling deploy
ENV_FILE=test/incus/loss-userspace-cluster.env sg incus-admin -c "./test/incus/cluster-setup.sh deploy all"
# Verify both nodes have correct binaries
for node in xpf-userspace-fw0 xpf-userspace-fw1; do
sg incus-admin -c "incus exec loss:$node -- md5sum /usr/local/sbin/xpfd /usr/local/sbin/xpf-userspace-dp"
done
md5sum xpfd xpf-userspace-dp
# Wait for cluster readiness (both takeover ready)
for i in $(seq 1 12); do
fw0=$(sg incus-admin -c "incus exec loss:xpf-userspace-fw0 -- cli -c 'show chassis cluster status'" 2>&1 | grep -c "Takeover ready: yes")
fw1=$(sg incus-admin -c "incus exec loss:xpf-userspace-fw1 -- cli -c 'show chassis cluster status'" 2>&1 | grep -c "Takeover ready: yes")
[ "$fw0" -ge 3 ] && [ "$fw1" -ge 3 ] && break
sleep 5
done
If binary checksums don't match after deploy, force-push manually:
sg incus-admin -c "incus exec loss:$node -- systemctl stop xpfd"
sg incus-admin -c "incus exec loss:$node -- pkill -9 xpf-userspace"
sleep 1
sg incus-admin -c "incus file push xpfd loss:$node/usr/local/sbin/xpfd --mode 0755"
sg incus-admin -c "incus file push xpf-userspace-dp loss:$node/usr/local/sbin/xpf-userspace-dp --mode 0755"
sg incus-admin -c "incus exec loss:$node -- systemctl start xpfd"
loss-userspace-cluster:
FW0=loss:xpf-userspace-fw0 FW1=loss:xpf-userspace-fw1
HOST=loss:cluster-userspace-host TARGET=172.16.80.200
CLI=/usr/local/sbin/cli
local-cluster:
FW0=xpf-fw0 FW1=xpf-fw1
HOST=cluster-lan-host TARGET=172.16.80.200
All incus commands: sg incus-admin -c "incus exec ...".
/failover-test crash)Start iperf3, then force-reboot the primary:
sg incus-admin -c "incus exec loss:xpf-userspace-fw0 -- bash -c 'echo b > /proc/sysrq-trigger'"
Wait 30s, verify secondary took over, traffic recovers. Wait 90s for rejoin.
/failover-test manual)Start iperf3 60s, move RG mid-stream:
sg incus-admin -c "incus exec loss:xpf-userspace-fw0 -- cli -c 'request chassis cluster failover redundancy-group 1 node 1'"
Check SNAT packets > 0 on new owner. Move back. All 4 streams must survive.
When a test fails, capture from both nodes:
for node in xpf-userspace-fw0 xpf-userspace-fw1; do
echo "=== $node ==="
sg incus-admin -c "incus exec loss:$node -- cli -c 'show chassis cluster status'"
sg incus-admin -c "incus exec loss:$node -- cli -c 'show chassis cluster data-plane statistics'" | grep -E 'SNAT|Session|Forward|flow cache|installed'
sg incus-admin -c "incus exec loss:$node -- cli -c 'show security flow session destination-prefix 172.16.80.200/32'" | head -10
done
iperf3 -s -D) — restart if staleTakeover ready: no (session sync not ready) persists > 60s, restart both daemons