60 lines
1.7 KiB
Bash
Executable File
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"
|