mirror of
https://github.com/Av0idD4rk/firegex.git
synced 2026-10-23 15:30:59 +00:00
Expose 28 tools with shared REST operations, role-scoped bearer authentication, revisions, durable retries, snapshots, jobs and timed rollback. Add Docker verification harnesses and setup/workflow documentation in docs/mcp.md and inst.md. Validated with 330 unit tests, two consecutive 25-case MCP/import runs, and restart recovery; the full upstream regression run remains incomplete.
64 lines
2.1 KiB
Bash
64 lines
2.1 KiB
Bash
#!/bin/bash
|
|
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
|
mount -t proc proc /proc 2>/dev/null || true
|
|
mount -t sysfs sysfs /sys 2>/dev/null || true
|
|
mount -t devtmpfs devtmpfs /dev 2>/dev/null || true
|
|
mkdir -p /dev/pts /dev/shm /results
|
|
mount -t devpts devpts /dev/pts
|
|
mount -t tmpfs -o mode=1777 tmpfs /dev/shm
|
|
modprobe 9pnet_virtio
|
|
modprobe 9p
|
|
mount -t 9p -o trans=virtio,version=9p2000.L results /results
|
|
ip link set lo up
|
|
modprobe virtio_net
|
|
for link in /sys/class/net/*; do
|
|
interface=${link##*/}
|
|
[ "$interface" != lo ] && break
|
|
done
|
|
ip link set "$interface" up
|
|
ip addr add 10.0.2.15/24 dev "$interface"
|
|
ip route add default via 10.0.2.2
|
|
echo 'nameserver 10.0.2.3' > /etc/resolv.conf
|
|
sysctl -w net.ipv4.conf.all.route_localnet=1
|
|
export FIREGEX_HOST=0.0.0.0 NTHREADS=2
|
|
export FIREGEX_MCP_TEST_DB=/execute/db/mcp/control.sqlite3
|
|
export FIREGEX_TEST_DEPS_READY=1
|
|
cd /execute
|
|
sh docker-entrypoint.sh > /results/backend.log 2>&1 &
|
|
backend_pid=$!
|
|
cd /test/tests
|
|
if [ -f /results/selection.json ]; then
|
|
mapfile -t selection < <(python3 -c 'import json; print("\n".join(json.load(open("/results/selection.json"))))')
|
|
else
|
|
selection=(unit integration/test_mcp.py -q)
|
|
fi
|
|
# Run the same public test entry point as on a normal Linux Docker host.
|
|
bash run_tests.sh --set-pass "${selection[@]}" --junitxml=/results/mcp-1.xml > /results/tests-1.log 2>&1
|
|
first_status=$?
|
|
echo "$first_status" > /results/exit-1
|
|
if [ "$first_status" != 0 ]; then
|
|
sync
|
|
poweroff -f
|
|
fi
|
|
bash run_tests.sh "${selection[@]}" --junitxml=/results/mcp-2.xml > /results/tests-2.log 2>&1
|
|
echo $? > /results/exit-2
|
|
.venv/bin/python mcp_restart_probe.py prepare > /results/restart.log 2>&1
|
|
prepare_status=$?
|
|
kill -TERM "$backend_pid"
|
|
wait "$backend_pid"
|
|
sleep 6
|
|
cd /execute
|
|
sh docker-entrypoint.sh >> /results/backend.log 2>&1 &
|
|
for i in {1..60}; do
|
|
curl -fsS http://127.0.0.1:4444/api/status > /dev/null && break
|
|
sleep 1
|
|
done
|
|
if [ "$prepare_status" = 0 ]; then
|
|
/test/tests/.venv/bin/python /test/tests/mcp_restart_probe.py verify >> /results/restart.log 2>&1
|
|
echo $? > /results/exit-restart
|
|
else
|
|
echo "$prepare_status" > /results/exit-restart
|
|
fi
|
|
sync
|
|
poweroff -f
|