docs(#21): VERIFICATION-21 §7 — реальные прогоны раунда 3 (коды 0/1/3/4, make→2, env-алиас, DEV_SKIP_BUILD)
Гоняно на 192.168.1.147 на дереве, сверенном по git-blob-SHA: ci.sh 0/4/3/1, make при коде 4 и 1 отдаёт 2 (контейнерные коды видны в логе), AWG_NS_EXEC_MODE больше не перекрывается, DEV_SKIP_BUILD=1 даёт AC-1 (200 + healthy), test-deploy 51 passed / 98.86 %, manifests и shellcheck — 0. Refs #21 Refs #56
This commit is contained in:
@@ -217,3 +217,67 @@ make test-netns # netns-харнесс сносит топологию с
|
||||
|
||||
Порт и stub-оверрайд (см. §4) без изменений: `privileged: true` и `cap_add SYS_MODULE`
|
||||
из `deploy/docker-compose.test.yml` — только DEV/TEST, для staging/prod непригодны.
|
||||
|
||||
## 7. Раунд 3 (ревью PR #53, раунд 2): контракт кодов, env-алиас, сборка без сети
|
||||
|
||||
Дата: 2026-10-28 · Хост: `192.168.1.147` (Debian 13, Docker 29.4.1, compose v5.1.3, kernel 6.17)
|
||||
Ветка: `feat/21-dev-stand` · Ref: #21, #15, #17, #56
|
||||
|
||||
Ревью qa-engineer (раунд 2, PR #53 `issuecomment-664`) дало три воспроизводимых замечания:
|
||||
контракт `0/1/3/4` теряется на уровне make, документированный `AWG_NS_EXEC_MODE` перекрыт
|
||||
make-алиасом, `make dev-up` падает при сборке без DNS. Все три закрыты правками ниже.
|
||||
|
||||
### 7.1 Что изменено
|
||||
|
||||
| замечание | правка |
|
||||
|---|---|
|
||||
| `make test-netns-ci` отдаёт `2` на любом провале → CI #17 не отличит 3/4/1 | новая точка входа `tests/netns/ci.sh`: `docker compose -f deploy/docker-compose.test.yml run --rm -T netns`, код контейнера возвращается как есть (`2` у неё = сломан вызов/нет docker/образа). `make test-netns-ci` делегирует в неё, в комментарии таргета и в §6.1 зафиксировано «make → 2» |
|
||||
| `AWG_NS_EXEC_MODE=ip make test-netns-ci` игнорировался (`Makefile:19` `NETNS_EXEC_MODE ?= auto` + `:117`) | `NETNS_EXEC_MODE ?= $(if $(AWG_NS_EXEC_MODE),$(AWG_NS_EXEC_MODE),auto)` — документированное имя имеет приоритет, make-алиас остался для совместимости; README и `dev-stand.md` приведены к факту |
|
||||
| `make dev-up` форсит `--build` и падает без DNS | `DEV_SKIP_BUILD=1` → `up -d --no-build`; `DEV_UP_BUILD` переопределяем (`?=`) и по-прежнему принимается из командной строки (`DEV_UP_BUILD=`); строка в `dev-stand.md` (быстрый старт + pitfalls + таблица переменных) |
|
||||
|
||||
### 7.2 Реальные прогоны (дерево сверено по git-blob-SHA, см. §7.3)
|
||||
|
||||
| прогон | команда | код | что видно в выводе |
|
||||
|---|---|---|---|
|
||||
| CI-точка входа, зелёный | `bash tests/netns/ci.sh` | **0** | `[ci] образ=awg-dash:dev режим netns=auto`, `вход в netns: nsenter`, `Ran 8 tests`, `8 ok`, `[ ok ] топология снесена`, `[ci][ ok ]` |
|
||||
| make-путь, зелёный | `make test-netns-ci` | **0** | те же 8 ok через `ci.sh` |
|
||||
| код 4 (форс нерабочего режима) | `AWG_NS_EXEC_MODE=ip bash tests/netns/ci.sh` | **4** | `[ci] … режим netns=ip`, `mount of /sys failed` → `[warn] код 255 → 4` |
|
||||
| код 3 (нет прав на netns) | `AWG_NS_PRIVILEGED=0 bash tests/netns/ci.sh` | **3** | `[blocked] не удалось создать netns — нет CAP_NET_ADMIN/SYS_ADMIN`, `[ci][blocked]` |
|
||||
| код 1 (упавшие тесты) | синтетический падающий тест в `tests/netns/` → `bash tests/netns/ci.sh` | **1** | `Ran 9 tests`, `FAILED (failures=1)`, `8 ok, 1 fail` (тест удалён после прогона) |
|
||||
| контракт make при коде 4 | `AWG_NS_EXEC_MODE=ip make test-netns-ci` | **2** (контейнер 4) | `[ci] … режим netns=ip` — **env больше не перекрывается**; `make: *** [Makefile:133: test-netns-ci] Error 4` |
|
||||
| контракт make при коде 1 | синтетический падающий тест → `make test-netns-ci` | **2** (контейнер 1) | `make: *** [Makefile:133: test-netns-ci] Error 1` |
|
||||
| AC-1 | `make dev-up DEV_SKIP_BUILD=1` + `curl :8180/api/v1/health` | **0**, HTTP **200** | `up -d --no-build`, контейнер `Up (healthy)`, ответ `"stub": true` |
|
||||
| AC-1 со сборкой (кеш тёплый) | `make dev-up` (без `DEV_SKIP_BUILD`) | **0** | `222` шагов `CACHED`, `Image awg-dash:dev Built`, контейнер пересоздан и `healthy` — на холодном кеше этот путь требует DNS, поэтому кноб нужен |
|
||||
| AC-2 | `make dev-verify VERIFY_ARGS="--no-up --skip-build"` | **0** | маркеры `/config` и `/data` пережили `restart` и `--force-recreate`, видны на хосте (bind mount) |
|
||||
| гейт покрытия | `make test-deploy` | **0** | `51 passed`, `Required test coverage of 70% reached. Total coverage: 98.86%` (`TOTAL 176 строк, 2 miss`) |
|
||||
| манифесты | `make test-manifests` | **0** | `validate-compose: ok (1 предупреждений)` — предупреждение про `deploy/Dockerfile` (до мержа #18) |
|
||||
| shellcheck | `make lint-shell` | **0** | проверен и новый `tests/netns/ci.sh` |
|
||||
| уборка | `ip netns list`; `docker ps -a --filter name=awg-dash-test` | — | пусто, контейнеров после прогонов не осталось |
|
||||
|
||||
Логи прогонов на стенд-хосте: `/tmp/r3_a.log` … `/tmp/r3_m.log`
|
||||
(`a` — зелёный `ci.sh`, `b` — код 4, `c` — код 3, `d` — make при коде 4, `e`/`f` — код 1 через `ci.sh`/make,
|
||||
`g` — `make test-netns-ci`, `h` — `dev-up DEV_SKIP_BUILD=1` + health, `i` — AC-2, `j` — `test-deploy`,
|
||||
`k` — `test-manifests`, `l` — `lint-shell`, `m` — `dev-up` со сборкой).
|
||||
|
||||
### 7.3 Блобы: файлы на стенд-хосте == дерево ветки
|
||||
|
||||
| файл | git blob |
|
||||
|---|---|
|
||||
| `Makefile` | `55c3ea5c98c7980c9bc3fcec8483d1140e670b2e` |
|
||||
| `tests/netns/ci.sh` | `561ca3976ad3749fbde79b8d163e007bace145de` |
|
||||
| `tests/netns/README.md` | `a4642f845f38fca1da0019af7e91d95be9e4d97c` |
|
||||
| `deploy/dev-stand.md` | `60495f7cd8eba10b40dc9aef469bea210b50e8e1` |
|
||||
| `deploy/VERIFICATION-21.md` | этот файл (блоб меняется этим же коммитом) |
|
||||
| остальные файлы стенда | без изменений с раунда 2 (§0) |
|
||||
|
||||
### 7.4 Что осталось
|
||||
|
||||
* **CI green (DoD)** — за задачей #17: у репозитория появился runner (контейнер
|
||||
`gitea-runner-awg-repo`, запуски runs 22–31), но workflow, покрывающего ветку #21, в `main`
|
||||
ещё нет, поэтому все гейты выше прогнаны вручную. Команды для workflow:
|
||||
`bash tests/netns/ci.sh`, `make test-deploy`, `make test-manifests`, `make lint-shell` —
|
||||
они уже отдают нужные коды без make-обёртки.
|
||||
* Merge в `main` и любой prod/staging-деплой — за TechLead (ADVISORY): автор ревью не мержит.
|
||||
* `verify-dev-stand.sh` после `--force-recreate` печатает статус до перехода в `healthy`,
|
||||
но AC-проверки при этом ждут health (`wait_health 20`) и прогон возвращает `0` — на вердикт
|
||||
не влияет.
|
||||
|
||||
Reference in New Issue
Block a user