61 lines
2 KiB
Bash
Executable file
61 lines
2 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Phase 3 end-to-end smoke test: spawn alice + bob, send alice→bob, observe
|
|
# bob's harness echo-reply land in alice's journal.
|
|
#
|
|
# Run as root (uses nixos-container + hive-c0re). Idempotent — wipes any prior
|
|
# h-alice / h-bob first.
|
|
#
|
|
# With claude not logged in inside the containers, both fall back to echo and
|
|
# the chain terminates after one round trip (the "echo: " guard).
|
|
|
|
set -euo pipefail
|
|
|
|
cleanup() {
|
|
echo "=== cleaning up any prior test agents ==="
|
|
sudo hive-c0re kill alice 2>/dev/null || true
|
|
sudo hive-c0re kill bob 2>/dev/null || true
|
|
sudo nixos-container destroy h-alice 2>/dev/null || true
|
|
sudo nixos-container destroy h-bob 2>/dev/null || true
|
|
}
|
|
|
|
cleanup
|
|
|
|
echo "=== spawn alice + bob ==="
|
|
sudo hive-c0re spawn alice
|
|
sudo hive-c0re spawn bob
|
|
|
|
echo "=== wait for harnesses to come up ==="
|
|
sleep 3
|
|
|
|
T=$(date +"%Y-%m-%d %H:%M:%S")
|
|
echo "test start: $T"
|
|
|
|
echo "=== alice → bob: 'ping' ==="
|
|
sudo nixos-container run h-alice -- hive-ag3nt send bob "ping"
|
|
|
|
echo "=== wait for bob to reply, alice to receive ==="
|
|
sleep 4
|
|
|
|
echo
|
|
echo "=== bob's journal since test start ==="
|
|
sudo journalctl -M h-bob -u hive-ag3nt --since "$T" --no-pager | tail -20 || true
|
|
|
|
echo
|
|
echo "=== alice's journal since test start ==="
|
|
sudo journalctl -M h-alice -u hive-ag3nt --since "$T" --no-pager | tail -20 || true
|
|
|
|
echo
|
|
echo "=== broker rows (last 10) ==="
|
|
sudo sqlite3 /var/lib/hyperhive/broker.sqlite \
|
|
"SELECT id, sender, recipient, substr(body,1,60) AS body, sent_at, delivered_at FROM messages ORDER BY id DESC LIMIT 10;" \
|
|
2>/dev/null || echo "(sqlite3 not available — skip)"
|
|
|
|
echo
|
|
echo "=== expected ==="
|
|
echo " bob's journal: 'inbox from=alice body=ping' then 'claude failed; falling back to echo'"
|
|
echo " alice's journal: 'inbox from=bob body=echo: ping' (no reply, echo guard stopped the chain)"
|
|
echo " broker rows: 2 messages — alice→bob 'ping' (delivered) and bob→alice 'echo: ping' (delivered)"
|
|
|
|
echo
|
|
read -r -p "Press enter to tear down test agents, Ctrl-C to leave them up: "
|
|
cleanup
|