# Тестовый стенд awg-dash (задача #21): netns-топология + мок WireGuard-endpoint. # # Использование: # docker compose -f deploy/docker-compose.test.yml run --rm netns # прогон стенда # docker compose -f deploy/docker-compose.test.yml run --rm netns --keep-topology # docker compose -f deploy/docker-compose.test.yml up -d app # приложение для API-тестов # (make test-netns-ci — обёртка над первым вызовом) # # Контейнеру `netns` нужен --privileged: внутри создаются сетевые namespace # (`ip netns add`) и veth-пары, для этого требуются CAP_SYS_ADMIN + CAP_NET_ADMIN. # Репозиторий монтируется только для чтения; артефакты пишутся в /artifacts и /tmp. name: ${COMPOSE_PROJECT_NAME:-awg-dash-test} services: netns: image: ${AWG_DASH_IMAGE:-awg-dash:dev} build: context: .. dockerfile: ${AWG_DASH_DOCKERFILE:-deploy/Dockerfile} container_name: awg-dash-test-netns privileged: true working_dir: /repo entrypoint: ["/bin/bash", "/repo/tests/netns/run.sh"] command: ["--report", "/artifacts/netns-report.json"] volumes: - ..:/repo:ro - ${AWG_DASH_TEST_ARTIFACTS:-./artifacts}:/artifacts environment: AWG_NETNS_WORKDIR: /tmp/awg-netns AWG_NETNS_PREFIX: ${AWG_NETNS_PREFIX:-awgt21} # nft в образе приложения нет — там iptables (см. tests/netns/README.md) AWG_FW_BACKEND: ${AWG_FW_BACKEND:-auto} # В контейнере `ip netns exec` падает (mount of /sys, issue #56) — харнесс # сам переключается на nsenter --net; переменная позволяет форсировать режим. AWG_NS_EXEC_MODE: ${AWG_NS_EXEC_MODE:-auto} tmpfs: - /tmp:mode=1777 logging: driver: json-file options: max-size: "5m" max-file: "2" app: image: ${AWG_DASH_IMAGE:-awg-dash:dev} container_name: awg-dash-test-app restart: "no" volumes: - awg-dash-test-config:/config - awg-dash-test-data:/data devices: - /dev/net/tun:/dev/net/tun cap_add: - NET_ADMIN - NET_RAW - SYS_MODULE environment: AWG_CONFIG_DIR: /config AWG_DATA_DIR: /data AWG_API_HOST: 0.0.0.0 AWG_API_PORT: "8080" AWG_TEST_STAND: "1" healthcheck: test: ["CMD-SHELL", "curl -fsS http://127.0.0.1:8080/api/v1/health >/dev/null || exit 1"] interval: 10s timeout: 5s start_period: 20s retries: 5 volumes: awg-dash-test-config: awg-dash-test-data: