docs(#21): VERIFICATION-21 — контракт кодов через make зафиксирован в §6.1, поправка §6.3
Ревью PR #53 (раунд 2) требовало явной фиксации «make → 2, контракт действует на уровне контейнера» и снятия неверного утверждения про прокидывание AWG_NS_EXEC_MODE. Прогоны раунда 3 добавляются отдельным коммитом. Refs #21 Refs #56
This commit is contained in:
@@ -5,6 +5,8 @@
|
|||||||
|
|
||||||
## 0. Стенд запускает именно то, что в ветке
|
## 0. Стенд запускает именно то, что в ветке
|
||||||
|
|
||||||
|
Актуальные блобы для раунда 3 — в §7.3 (эта таблица фиксирует состояние раунда 2).
|
||||||
|
|
||||||
Каталог стенда `(/opt/awg-dash-dev/repo)` не является git-чекаутом (`git clone` по HTTP обрывается
|
Каталог стенда `(/opt/awg-dash-dev/repo)` не является git-чекаутом (`git clone` по HTTP обрывается
|
||||||
на этом Gitea — `fetch-pack: invalid index-pack output`), поэтому файлы сверены побайтово
|
на этом Gitea — `fetch-pack: invalid index-pack output`), поэтому файлы сверены побайтово
|
||||||
через git-blob-SHA с деревом HEAD:
|
через git-blob-SHA с деревом HEAD:
|
||||||
@@ -163,6 +165,12 @@ make test-netns # netns-харнесс сносит топологию с
|
|||||||
Коды возврата приведены к контракту `0/1/3/4` (`run.sh`, `topology.sh`): неожиданный код
|
Коды возврата приведены к контракту `0/1/3/4` (`run.sh`, `topology.sh`): неожиданный код
|
||||||
утилиты (255) нормализуется в `4` («ошибка стенда»), нет прав — `3`, упавшие тесты — `1`.
|
утилиты (255) нормализуется в `4` («ошибка стенда»), нет прав — `3`, упавшие тесты — `1`.
|
||||||
|
|
||||||
|
**Контракт действует на уровне контейнера, а не через make.** GNU make возвращает `2`
|
||||||
|
на любой упавший рецепт, поэтому `make test-netns-ci` при коде контейнера `3` или `4`
|
||||||
|
сам отдаёт `2` (в выводе остаётся только `make: *** [Makefile:…] Error 4`). Для CI #17
|
||||||
|
добавлена точка входа без make — `bash tests/netns/ci.sh`: она запускает тот же контейнер
|
||||||
|
(`docker compose … run --rm -T netns`) и возвращает его код как есть. Проверено в §7.2.
|
||||||
|
|
||||||
### 6.2 Реальные прогоны
|
### 6.2 Реальные прогоны
|
||||||
|
|
||||||
| прогон | команда | результат |
|
| прогон | команда | результат |
|
||||||
@@ -193,7 +201,9 @@ make test-netns # netns-харнесс сносит топологию с
|
|||||||
каждая инварианта AC #21 ломается по отдельности (порт, тома, healthcheck, NET_ADMIN,
|
каждая инварианта AC #21 ломается по отдельности (порт, тома, healthcheck, NET_ADMIN,
|
||||||
`/dev/net/tun`, `ip_forward`, privileged netns-сервис, DEV-ONLY-метка, `--require-dockerfile`).
|
`/dev/net/tun`, `ip_forward`, privileged netns-сервис, DEV-ONLY-метка, `--require-dockerfile`).
|
||||||
* `deploy/api_stub.py` — `make_server()` выделен из `main()` (тесты поднимают сервер на порту 0).
|
* `deploy/api_stub.py` — `make_server()` выделен из `main()` (тесты поднимают сервер на порту 0).
|
||||||
* `make test-deploy` — гейт покрытия; `make test-netns-ci` прокидывает `AWG_NS_EXEC_MODE`.
|
* `make test-deploy` — гейт покрытия. Утверждение раунда 2 «`make test-netns-ci` прокидывает
|
||||||
|
`AWG_NS_EXEC_MODE`» было **неверным**: make-алиас `NETNS_EXEC_MODE ?= auto` перекрывал
|
||||||
|
переменную. Исправлено в §7.1 (проверено прогоном в §7.2).
|
||||||
* `topology.sh`: снос топологии удаляет namespace'ы безусловно и до 5 раз проверяет
|
* `topology.sh`: снос топологии удаляет namespace'ы безусловно и до 5 раз проверяет
|
||||||
результат — в контейнере `ip netns delete` иногда «терялся» и `run.sh` отдавал код 4
|
результат — в контейнере `ip netns delete` иногда «терялся» и `run.sh` отдавал код 4
|
||||||
на зелёных тестах (флак 1 из 5 прогонов, после правки — 5/5 зелёных).
|
на зелёных тестах (флак 1 из 5 прогонов, после правки — 5/5 зелёных).
|
||||||
|
|||||||
Reference in New Issue
Block a user