The differential bench (GEN 2 and 3.1, with I1, S4=0, upgrade with a 3.x module) now shows the Go awg-ctrl identical to the TS one. The only real difference it found: host.cpu was a Go map, so its keys came out sorted instead of in /proc/stat order. - tools/diffbench/compare.mjs: decodes vpn:// (Node and Go zlib differ), masks live host numbers, Express dev-mode stack traces, temp file names and the order of calls from concurrent background work - tools/diffbench/local.sh: the same run without Docker, stubs only on the run's own PATH (for disposable machines) - run.sh: wait for the background shaping apply before stopping the service, otherwise the stub log is cut short
25 lines
1.1 KiB
Bash
Executable File
25 lines
1.1 KiB
Bash
Executable File
#!/bin/sh
|
|
# run.sh <ts|go> <имя-прогона>; окружение: GEN, WITH_I1, STUB_MODULE
|
|
set -e
|
|
IMPL="$1"; NAME="$2"
|
|
./setup.sh
|
|
export PORT=3005 SERVER_IP=203.0.113.7 SERVER_PORT=47619 SERVER_NAME=VPN \
|
|
INTERNAL_AUTH_PUB_FILE=/etc/amnezia/amneziawg/internal_auth_public.key \
|
|
SHAPE_SAMPLE_S=3600 AWG_CLI=/nonexistent/awg-ctrl
|
|
cd /ts/awg-ctrl
|
|
if [ "$IMPL" = "ts" ]; then
|
|
node node_modules/.bin/tsx index.ts > /run/bench/ctrl.log 2>&1 &
|
|
else
|
|
/go/awg-control ctrl > /run/bench/ctrl.log 2>&1 &
|
|
fi
|
|
PID=$!
|
|
i=0; until curl -s -o /dev/null http://127.0.0.1:3005/health; do i=$((i+1)); [ $i -gt 100 ] && { cat /run/bench/ctrl.log; exit 1; }; sleep 0.1; done
|
|
sleep 1 # стартовый apply шейпинга асинхронный — даём ему отработать до сценария
|
|
cd /bench
|
|
node scenario-ctrl.mjs "/out/$NAME.json"
|
|
# фоновый apply шейпинга после restart/upgrade должен доработать, иначе журнал заглушек обрежется
|
|
sleep 3
|
|
kill $PID 2>/dev/null || true; wait $PID 2>/dev/null || true
|
|
node collect.mjs "/out/$NAME.json"
|
|
cp /run/bench/ctrl.log "/out/$NAME.log"
|