deploy: гейт покрытия стенда и тестируемая health-заглушка (#56)
- deploy/api_stub.py: make_server() выделен из main(), main(argv) — тесты поднимают настоящий сервер на порту 0 (покрытие api_stub.py 0 % -> 98 %). - Makefile: make test-deploy (гейт ≥70 % через tests/deploy/pytest.ini), test-netns-ci прокидывает AWG_NS_EXEC_MODE. Refs #21, Refs #15, Refs #56
This commit is contained in:
@@ -15,9 +15,12 @@ DASH_PORT ?= 8180
|
||||
NETNS_ARGS ?=
|
||||
VERIFY_ARGS ?=
|
||||
MANIFEST_ARGS ?=
|
||||
# Режим входа в netns внутри тестового контейнера: auto|ip|nsenter (issue #56).
|
||||
NETNS_EXEC_MODE ?= auto
|
||||
|
||||
.PHONY: help venv lint fmt test build dev-up dev-up-app dev-up-stub dev-down dev-logs dev-verify \
|
||||
dev-verify-stub dev-reset test-netns test-netns-keep test-netns-ci test-manifests lint-shell
|
||||
dev-verify-stub dev-reset test-netns test-netns-keep test-netns-ci test-manifests lint-shell \
|
||||
test-deploy
|
||||
|
||||
help:
|
||||
@grep -E '^[a-zA-Z_-]+:' $(MAKEFILE_LIST) | sed 's/:.*//' | sort -u
|
||||
@@ -106,13 +109,25 @@ test-netns-keep:
|
||||
bash tests/netns/run.sh --keep-topology --keep-logs $(NETNS_ARGS)
|
||||
|
||||
# Тот же стенд в привилегированном контейнере — путь для CI (#17).
|
||||
# Внутри контейнера `ip netns exec` падает с "mount of /sys failed: Operation
|
||||
# not permitted" (iproute2 6.x), поэтому харнесс сам переключается на
|
||||
# `nsenter --net=/var/run/netns/<ns>` (issue #56). AWG_NS_EXEC_MODE форсирует
|
||||
# режим: ip|nsenter|auto.
|
||||
test-netns-ci:
|
||||
AWG_DASH_IMAGE=$(IMAGE) $(COMPOSE) -f $(COMPOSE_TEST) run --rm netns
|
||||
AWG_DASH_IMAGE=$(IMAGE) AWG_NS_EXEC_MODE=$(NETNS_EXEC_MODE) $(COMPOSE) -f $(COMPOSE_TEST) run --rm netns
|
||||
|
||||
# --- статические проверки манифестов и скриптов ------------------------------
|
||||
test-manifests:
|
||||
$(PY) tests/deploy/validate_compose.py $(MANIFEST_ARGS)
|
||||
|
||||
# Тесты стенда с покрытием: гейт DoD «тесты ≥70 %» для #21/#56.
|
||||
# Отдельный tests/deploy/pytest.ini обязателен: без него `pytest tests/deploy`
|
||||
# наследует addopts корневого pyproject.toml (--cov=awg_agent --cov=awg_api),
|
||||
# покрытие выходит 0.00 % и RC=1 — гейт приходилось гонять с --no-cov.
|
||||
test-deploy:
|
||||
@test -d tests/deploy || { echo 'tests/deploy ещё нет — задача #21'; exit 1; }
|
||||
$(PY) -m pytest tests/deploy -c tests/deploy/pytest.ini
|
||||
|
||||
lint-shell:
|
||||
@command -v shellcheck >/dev/null 2>&1 || { echo 'shellcheck не установлен (apt-get install shellcheck)'; exit 1; }
|
||||
shellcheck -x -S style tests/netns/*.sh deploy/*.sh
|
||||
|
||||
Reference in New Issue
Block a user