#!/bin/sh set -eu ROOT=$(CDPATH='' cd -- "$(dirname -- "$0")/.." && pwd) # shellcheck source=scripts/scale-common.sh . "$ROOT/scripts/scale-common.sh" scale_load_environment REQUESTS=${WNH_SCALE_REQUESTS:-1000000} ACTIVITIES=${WNH_SCALE_ACTIVITIES:-1000000} SAMPLES=${WNH_SCALE_SAMPLES:-3} OUTPUT_DIR="$ROOT/output/scale" TOOLS_IMAGE=who-need-help:scale-tools for value in "$REQUESTS" "$ACTIVITIES" "$SAMPLES"; do case "$value" in ''|*[!0-9]*|0) echo "WNH_SCALE_REQUESTS, WNH_SCALE_ACTIVITIES and WNH_SCALE_SAMPLES must be positive integers." >&2 exit 2 ;; esac done mkdir -p "$OUTPUT_DIR" docker build --target load_tools --tag "$TOOLS_IMAGE" "$ROOT" docker run --rm \ --cpuset-cpus "$CPU_REPLAY_CPUSET" \ --network "${LOAD_PROJECT}_internal" \ --env APP_ROLE=migrate \ --env DATABASE_URL \ --env POOL_SIZE=2 \ --env "ERL_ZFLAGS=+Q ${ERLANG_PORT_LIMIT:-65536} +S 1:1" \ --env SECRET_KEY_BASE \ --env HANDOVER_SECRET \ --env RELEASE_COOKIE \ --env METRICS_TOKEN \ --env PHX_HOST \ --env PHX_SCHEME \ --env PHX_URL_PORT \ --env EMAIL_FROM_NAME="Who Need Help scale profile" \ --env EMAIL_FROM_ADDRESS=scale@example.invalid \ --env WNH_SCALE_EXPECTED_DATABASE \ --env WNH_SCALE_FIXTURE_CONFIRM \ --env SCALE_VIEWER_PASSWORD \ --volume "$OUTPUT_DIR:/output" \ "$TOOLS_IMAGE" \ mix wnh.scale_fixtures verify \ --requests "$REQUESTS" \ --activities "$ACTIVITIES" \ --samples "$SAMPLES" \ --output /output/verification.json docker run --rm \ --volume "$OUTPUT_DIR:/output" \ alpine:3.23.3@sha256:25109184c71bdad752c8312a8623239686a9a2071e8825f20acb8f2198c3f659 \ chown -R "$(id -u):$(id -g)" /output printf 'Scale verification: %s/output/scale/verification.json\n' "$ROOT"