mirror of
https://github.com/coder/coder.git
synced 2025-07-09 11:45:56 +00:00
chore: add scaletest convenience script (#7819)
- Adds a convenience script `scaletest.sh` to automate process of running scale tests - Enables pprof endpoint by default, and captures pprof traces before tearing down infra. - Improves idempotency of coder_init.sh - Removes the promtest.Float64 invocations in workspacetraffic runner, these metrics will be in prometheus. - Increases default workspace traffic output to 40KB/s/workspace.
This commit is contained in:
63
scaletest/lib/coder_init.sh
Executable file
63
scaletest/lib/coder_init.sh
Executable file
@ -0,0 +1,63 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
if [[ $# -lt 1 ]]; then
|
||||
echo "Usage: $0 <coder URL>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Allow toggling verbose output
|
||||
[[ -n ${VERBOSE:-} ]] && set -x
|
||||
|
||||
CODER_URL=$1
|
||||
DRY_RUN="${DRY_RUN:-0}"
|
||||
PROJECT_ROOT="$(git rev-parse --show-toplevel)"
|
||||
# shellcheck source=scripts/lib.sh
|
||||
source "${PROJECT_ROOT}/scripts/lib.sh"
|
||||
CONFIG_DIR="${PROJECT_ROOT}/scaletest/.coderv2"
|
||||
ARCH="$(arch)"
|
||||
if [[ "$ARCH" == "x86_64" ]]; then
|
||||
ARCH="amd64"
|
||||
fi
|
||||
PLATFORM="$(uname | tr '[:upper:]' '[:lower:]')"
|
||||
|
||||
if [[ -f "${CONFIG_DIR}/coder.env" ]]; then
|
||||
echo "Found existing coder.env in ${CONFIG_DIR}!"
|
||||
echo "Nothing to do, exiting."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
maybedryrun "$DRY_RUN" mkdir -p "${CONFIG_DIR}"
|
||||
echo "Fetching Coder CLI for first-time setup!"
|
||||
maybedryrun "$DRY_RUN" curl -fsSLk "${CODER_URL}/bin/coder-${PLATFORM}-${ARCH}" -o "${CONFIG_DIR}/coder"
|
||||
maybedryrun "$DRY_RUN" chmod +x "${CONFIG_DIR}/coder"
|
||||
|
||||
set +o pipefail
|
||||
RANDOM_ADMIN_PASSWORD=$(tr </dev/urandom -dc _A-Z-a-z-0-9 | head -c16)
|
||||
set -o pipefail
|
||||
CODER_FIRST_USER_EMAIL="admin@coder.com"
|
||||
CODER_FIRST_USER_USERNAME="coder"
|
||||
CODER_FIRST_USER_PASSWORD="${RANDOM_ADMIN_PASSWORD}"
|
||||
CODER_FIRST_USER_TRIAL="false"
|
||||
echo "Running login command!"
|
||||
DRY_RUN="$DRY_RUN" "${PROJECT_ROOT}/scaletest/lib/coder_shim.sh" login "${CODER_URL}" \
|
||||
--global-config="${CONFIG_DIR}" \
|
||||
--first-user-username="${CODER_FIRST_USER_USERNAME}" \
|
||||
--first-user-email="${CODER_FIRST_USER_EMAIL}" \
|
||||
--first-user-password="${CODER_FIRST_USER_PASSWORD}" \
|
||||
--first-user-trial=false
|
||||
|
||||
echo "Writing credentials to ${CONFIG_DIR}/coder.env"
|
||||
maybedryrun "$DRY_RUN" cat <<EOF >"${CONFIG_DIR}/coder.env"
|
||||
CODER_FIRST_USER_EMAIL=admin@coder.com
|
||||
CODER_FIRST_USER_USERNAME=coder
|
||||
CODER_FIRST_USER_PASSWORD="${RANDOM_ADMIN_PASSWORD}"
|
||||
CODER_FIRST_USER_TRIAL="${CODER_FIRST_USER_TRIAL}"
|
||||
EOF
|
||||
|
||||
echo "Importing kubernetes template"
|
||||
DRY_RUN="$DRY_RUN" "$PROJECT_ROOT/scaletest/lib/coder_shim.sh" templates create \
|
||||
--global-config="${CONFIG_DIR}" \
|
||||
--directory "${CONFIG_DIR}/templates/kubernetes" \
|
||||
--yes kubernetes
|
Reference in New Issue
Block a user