Files

81 lines
4.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Тестирование
## Уровни
1. Unit: URI, policy, version, renderer, redaction и metadata.
2. Failure injection: candidate rejection, restart failure, URI/config restore,
unmanaged config, corrupted/legacy last-good.
3. Packaging: MPL-2.0, exact dependency, cross-release rejection,
same-release reinstall и postinst guard.
4. Real binary: официальный sing-box 1.14.0 для Gecko и Salamander configs.
5. Privileged Linux: TUN, systemd, nftables, routing и DNS.
6. HY2XS acceptance: Gecko TCP/UDP/DNS, failures, reconnect и reboot.
## Unit tests
На Linux:
```bash
make check
```
На Windows с isolated Python:
```powershell
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
```bash
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 проверить:
1. собрать package и выполнить чистую установку;
2. повторно установить ровно 0.2.0 поверх согласованного состояния;
3. подтвердить отказ переходов 0.1.x → 0.2.0 и другой release → 0.2.0;
4. применить Gecko config и подтвердить отсутствие `last-good` после первого
apply;
5. проверить table 2022, rule 9000/32768, marks и NFQUEUE 100;
6. до установления HY2 разрешить hostname endpoint через `bootstrap-dns` по
`eth0`, без recursion в `172.19.0.2`;
7. подтвердить DoH `remote-dns` через `hy2-out`;
8. с хоста выполнить `getent hosts example.com`, `dig @8.8.8.8 example.com` и
`dig +tcp @8.8.8.8 example.com`;
9. повторить оба `dig` с workload за `eth1` и через `tcpdump`/nft counters
подтвердить отсутствие реального TCP/UDP 53 через `eth0`;
10. при наличии `systemd-resolved` проверить DNS и route-only domain `~.` для
`tun-sb0`; отдельно повторить запуск без доступного `resolvectl`;
11. проверить TCP/UDP и внешний VPN IP с workload за `eth1`;
12. подтвердить отсутствие прямого WAN при остановленном sing-box;
13. проверить credential failure и same-release rollback;
14. проверить отказ legacy/mismatched metadata и unmanaged identical config;
15. проверить смену A-record, reconnect, stop/start и reboot recovery;
16. после 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.
## Зафиксированный production acceptance
15 сентября 2026 года версия 0.2.0 прошла финальный прогон с exact sing-box
1.14.0 и production-compatible HY2XS/Hysteria 2.12.2 endpoint в режиме Gecko.
Подтверждены gateway и forwarded-client E2E, DNS/HTTPS, idempotent no-op sync,
recovery после запуска сервиса и отсутствие прямого WAN при остановленном
sing-box. Полный состав и фактические результаты: [финальная приёмка
0.2.0](acceptance-0.2.0.md).