2.7 KiB
2.7 KiB
Тестирование
Уровни
- Unit: URI, policy, version, renderer, redaction.
- Failure injection: candidate rejection, restart failure, URI/config rollback, idempotency и manual rollback swap.
- Real binary:
sing-box 1.13.19 checkна Linux и schema/format validation на Windows. - Privileged Linux: TUN, nftables, systemd и локальный HTTP connectivity healthcheck.
- Canary: DNS A change без endpoint CIDR и credential rotation.
- Reboot: guard ordering, persisted config и path watcher.
Unit tests
make check
Тест с реальным бинарником включается явно:
SING_BOX_1_13_19=/usr/bin/sing-box make test
Он предварительно проверяет exact version, with_quic и with_gvisor.
Windows-бинарник не может создать Linux auto-redirect и поэтому выполняет
format полной схемы; обязательный check остаётся в Linux CI/Incus.
Privileged acceptance
В disposable Incus-контейнере с двумя NIC:
- установить sing-box 1.13.19 и пакет;
- применить test URI;
- проверить таблицу 2022 и marks;
- подтвердить, что
eth1 -> eth0отклоняется без sing-box; - подтвердить TCP/UDP/DNS через TUN при рабочем HY2;
- сломать credential и проверить автоматический rollback;
- изменить A-запись endpoint, не меняя URI/config;
- перезагрузить контейнер и повторить doctor.
Отдельный dependency failure test выполняется только в disposable Incus:
- остановить sing-box и guard;
- временно задать в test policy отсутствующий upstream interface;
- убедиться, что
systemctl start sing-box.serviceзавершается ошибкой из-за неуспешного guard; - восстановить policy и подтвердить успешный совместный запуск;
- проверить drop-in командой
systemd-analyze verifyи содержимое собранного Debian-пакета черезdpkg-deb -c.
Локальный HTTPS healthcheck не заменяет запросы DNS/TCP/UDP с реального workload
за eth1. При остановленном sing-box такой workload не должен получить прямой
доступ через eth0.
Production A-запись не используется для эксперимента: нужен staging hostname.