who_need_help/scripts/scale-verify.sh

60 lines
1.7 KiB
Bash
Executable File

#!/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"