| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #!/bin/sh
- set -eu
- repo_root=$(CDPATH= cd -- "$(dirname -- "$0")/../.." && pwd)
- cd "$repo_root"
- gateway_variables=$(mktemp "${TMPDIR:-/tmp}/sub2api-gateway-env.XXXXXX")
- cleanup() {
- rm -f "$gateway_variables"
- }
- trap cleanup EXIT HUP INT TERM
- awk '
- /^GATEWAY_[A-Z0-9_]+=/ {
- separator = index($0, "=")
- print substr($0, 1, separator - 1) "\t" substr($0, separator + 1)
- }
- ' deploy/.env.example > "$gateway_variables"
- for compose_file in \
- deploy/docker-compose.yml \
- deploy/docker-compose.local.yml \
- deploy/docker-compose.standalone.yml \
- deploy/docker-compose.dev.yml
- do
- tab=$(printf '\t')
- while IFS="$tab" read -r key value; do
- # .env.example intentionally includes high-capacity tuning examples for
- # these values. An unconfigured Compose deployment must retain the
- # backend defaults instead of silently adopting the examples.
- case "$key" in
- GATEWAY_MAX_CONNS_PER_HOST) value=1024 ;;
- GATEWAY_MAX_IDLE_CONNS) value=2560 ;;
- GATEWAY_MAX_IDLE_CONNS_PER_HOST) value=120 ;;
- esac
- expected=$(printf ' - %s=${%s:-%s}' "$key" "$key" "$value")
- expected_count=$(grep -Fxc "$expected" "$compose_file" || true)
- key_count=$(grep -Ec "^[[:space:]]*-[[:space:]]*${key}([[:space:]]*=.*)?[[:space:]]*$" "$compose_file" || true)
- if [ "$expected_count" -ne 1 ] || [ "$key_count" -ne 1 ]; then
- printf '%s must pass %s with the expected fallback exactly once\n' "$compose_file" "$key" >&2
- exit 1
- fi
- done < "$gateway_variables"
- done
- printf 'docker compose Gateway environment test passed\n'
|