3.7 KiB
3.7 KiB
Тестирование
Уровни
- Unit: URI, policy, version, renderer, redaction и metadata.
- Failure injection: candidate rejection, restart failure, URI/config restore, unmanaged config, corrupted/legacy last-good.
- Packaging: MPL-2.0, exact dependency, cross-release rejection, same-release reinstall и postinst guard.
- Real binary: официальный sing-box 1.14.0 для Gecko и Salamander configs.
- Privileged Linux: TUN, systemd, nftables, routing и DNS.
- HY2XS acceptance: Gecko TCP/UDP/DNS, failures, reconnect и reboot.
Unit tests
На Linux:
make check
На Windows с isolated Python:
E:\python-31312\python.exe -c "import sys,unittest; sys.path[:0]=[r'F:\projects\singbox_glue',r'F:\projects\singbox_glue\src']; s=unittest.defaultTestLoader.discover('tests',top_level_dir='.'); r=unittest.TextTestRunner(verbosity=2).run(s); raise SystemExit(not r.wasSuccessful())"
Real binary
SING_BOX_1_14_0=/usr/bin/sing-box make test
Тест сначала проверяет exact version/tags. На Linux выполняется check; на
Windows — schema decoding через format, поскольку Windows binary не может
создать Linux auto-redirect.
Privileged Debian acceptance
В disposable Incus/VM с двумя NIC проверить:
- собрать package и выполнить чистую установку;
- повторно установить ровно 0.2.0 поверх согласованного состояния;
- подтвердить отказ переходов 0.1.x → 0.2.0 и другой release → 0.2.0;
- применить Gecko config и подтвердить отсутствие
last-goodпосле первого apply; - проверить table 2022, rule 9000/32768, marks и NFQUEUE 100;
- до установления HY2 разрешить hostname endpoint через
bootstrap-dnsпоeth0, без recursion в172.19.0.2; - подтвердить DoH
remote-dnsчерезhy2-out; - с хоста выполнить
getent hosts example.com,dig @8.8.8.8 example.comиdig +tcp @8.8.8.8 example.com; - повторить оба
digс workload заeth1и черезtcpdump/nft counters подтвердить отсутствие реального TCP/UDP 53 черезeth0; - при наличии
systemd-resolvedпроверить DNS и route-only domain~.дляtun-sb0; отдельно повторить запуск без доступногоresolvectl; - проверить TCP/UDP и внешний VPN IP с workload за
eth1; - подтвердить отсутствие прямого WAN при остановленном sing-box;
- проверить credential failure и same-release rollback;
- проверить отказ legacy/mismatched metadata и unmanaged identical config;
- проверить смену A-record, reconnect, stop/start и reboot recovery;
- после stop убедиться в очистке sing-box nftables/resolved state, после start — в полном восстановлении.
Server-side Gecko E2E выполняется с production-compatible HY2XS. Salamander E2E выполняется на disposable server, явно настроенном в compatibility-режим; это не автоматический fallback и не default новой production-установки.
Platform hijack не обслуживает DNS, направленный на локальный LAN IP gateway. Такой сценарий допустим только после добавления отдельного DNS listener и не входит в acceptance версии 0.2.0.