~ knotless Search/
↑↓ move↵ open⇧↵ all results
0
0
main
41 lines · 2.7 KB Raw History
#!/bin/bash
P=/tmp/claude-1000/-home-johnandersen777-src-publicdomainrelay-kcp/90fa59d8-02f3-4261-b817-d037e7405f23/scratchpad/linux-proofs
F=/var/tmp/m3live-k8s-tree/hono-compute-provider/hono-firecracker-standalone/firecracker
mkdir -p $P/fcrun && cd $P/fcrun
echo "== $(date -u +%FT%TZ) E5 firecracker non-boot checks ($($F --version | head -1))"
echo "--- E5a --no-api without --config-file"
$F --no-api 2>&1 | tail -2; echo "rc=$?"
echo "--- E5b invalid --id"
$F --id 'bad_id!' --api-sock a.sock 2>&1 | grep -o 'Invalid instance ID.*' | head -1
$F --id "$(printf 'a%.0s' $(seq 1 65))" --api-sock a.sock 2>&1 | grep -o 'Invalid instance ID.*' | head -1
echo "--- E5c api-sock path > 107 bytes"
LONG=$P/fcrun/$(printf 'x%.0s' $(seq 1 40)).sock; echo "len=${#LONG}"
timeout 3 $F --api-sock $LONG --id swproof-long 2>&1 | tail -2 | cut -c1-250; echo "rc=${PIPESTATUS[0]}"
echo "--- E5d pre-boot API only (no guest configured or started): GET / and GET /machine-config"
rm -f a.sock
$F --api-sock a.sock --id swproof-e5 > fc-e5d.log 2>&1 &
FP=$!
for i in $(seq 1 20); do [ -S a.sock ] && break; sleep 0.1; done
curl -s --unix-socket a.sock http://localhost/; echo
curl -s --unix-socket a.sock http://localhost/machine-config; echo
curl -s --unix-socket a.sock http://localhost/version; echo
echo "SendCtrlAltDel pre-boot:"; curl -s -X PUT --unix-socket a.sock http://localhost/actions -d '{"action_type":"SendCtrlAltDel"}'; echo
echo "SIGTERM handling (SigCgt bitmask; bit 14 = SIGTERM): $(grep SigCgt /proc/$FP/status)"
kill -TERM $FP; sleep 0.5; kill -0 $FP 2>/dev/null && echo "after SIGTERM: ALIVE?" || { wait $FP; echo "after SIGTERM: exited rc=$? (default action; not pid-ns init here)"; }
echo "log tail:"; tail -3 fc-e5d.log | cut -c1-200
echo "--- E5e api-sock path already exists (stale socket file)"
python3 -c "import socket;s=socket.socket(socket.AF_UNIX);s.bind('b.sock')"
timeout 3 $F --api-sock b.sock --id swproof-e5e 2>&1 | tail -2 | cut -c1-250; echo "rc=${PIPESTATUS[0]}"
rm -f b.sock a.sock
echo "--- E5f --config-file referencing missing kernel: parse/validate fails before any VM is created"
cat > cfg.json <<'EOF'
{"boot-source":{"kernel_image_path":"/nonexistent/vmlinux","boot_args":"console=ttyS0"},
 "drives":[],"machine-config":{"vcpu_count":1,"mem_size_mib":128},
 "network-interfaces":[{"iface_id":"eth0","host_dev_name":"tap0"}],
 "logger":{"log_path":"fc.log","level":"Info"},"metrics":{"metrics_path":"fc.metrics"}}
EOF
: > fc.log; : > fc.metrics
timeout 5 $F --api-sock c.sock --id swproof-e5f --config-file cfg.json 2>&1 | tail -3 | cut -c1-250; echo "rc=${PIPESTATUS[0]}"
echo "fc.log:"; tail -3 fc.log | cut -c1-200
rm -f c.sock
pgrep -f "$F" && echo LEFTOVER || echo "no firecracker left"