firegex/tests/mcp_vm_init.sh
av0idd4rk 863422f202 Add authenticated MCP server and agent guide
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.
2026-10-23 09:46:44 +03:00

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