You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

84 lines
2.3 KiB

#!/usr/bin/env bash
set -euo pipefail
MODE="${MODE:-loadtest}"
TARGET="${TARGET:-http://localhost:8080}"
USERS="${USERS:-200}"
DURATION="${DURATION:-30s}"
RAMP_UP="${RAMP_UP:-10s}"
TIMEOUT="${TIMEOUT:-5s}"
WEBSOCKET_TIMEOUT="${WEBSOCKET_TIMEOUT:-15s}"
WEBSOCKET_RATIO="${WEBSOCKET_RATIO:-0.05}"
WEBSOCKET_MAX_CONNECTIONS="${WEBSOCKET_MAX_CONNECTIONS:-20}"
MONITOR_INTERVAL="${MONITOR_INTERVAL:-1s}"
WEBSOCKET_COMMAND="${WEBSOCKET_COMMAND:-Get-Location}"
SEARCH_START_USERS="${SEARCH_START_USERS:-100}"
SEARCH_STEP_USERS="${SEARCH_STEP_USERS:-100}"
SEARCH_MAX_USERS="${SEARCH_MAX_USERS:-2000}"
MAX_FAILURE_RATE="${MAX_FAILURE_RATE:-1.0}"
MAX_P95="${MAX_P95:-1s}"
INSECURE="${INSECURE:-false}"
SCRIPT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "${SCRIPT_ROOT}/.." && pwd)"
RUNTIME_ROOT="${PROJECT_ROOT}/runtime"
BIN_ROOT="${RUNTIME_ROOT}/bin"
CACHE_ROOT="${RUNTIME_ROOT}/cache"
GO_CACHE="${CACHE_ROOT}/go-build"
GO_TMP="${CACHE_ROOT}/go-tmp"
LOADTEST_BIN="${BIN_ROOT}/teraclone-loadtest"
mkdir -p "${BIN_ROOT}" "${GO_CACHE}" "${GO_TMP}"
find_go_executable() {
if command -v go >/dev/null 2>&1; then
command -v go
return
fi
local candidates=(
"/usr/local/go/bin/go"
"${HOME}/go/bin/go"
)
for candidate in "${candidates[@]}"; do
if [[ -x "${candidate}" ]]; then
echo "${candidate}"
return
fi
done
echo "go 실행 파일을 찾을 수 없습니다. Go를 설치하거나 PATH에 추가해주세요." >&2
exit 1
}
GO_EXE="$(find_go_executable)"
export GOCACHE="${GO_CACHE}"
export GOTMPDIR="${GO_TMP}"
"${GO_EXE}" build -o "${LOADTEST_BIN}" ./cmd/loadtest
ARGS=(
"-mode" "${MODE}"
"-target" "${TARGET}"
"-users" "${USERS}"
"-duration" "${DURATION}"
"-ramp-up" "${RAMP_UP}"
"-timeout" "${TIMEOUT}"
"-ws-timeout" "${WEBSOCKET_TIMEOUT}"
"-ws-ratio" "${WEBSOCKET_RATIO}"
"-ws-max-conns" "${WEBSOCKET_MAX_CONNECTIONS}"
"-monitor-interval" "${MONITOR_INTERVAL}"
"-ws-command" "${WEBSOCKET_COMMAND}"
"-search-start-users" "${SEARCH_START_USERS}"
"-search-step-users" "${SEARCH_STEP_USERS}"
"-search-max-users" "${SEARCH_MAX_USERS}"
"-max-failure-rate" "${MAX_FAILURE_RATE}"
"-max-p95" "${MAX_P95}"
)
if [[ "${INSECURE}" == "true" ]]; then
ARGS+=("-insecure")
fi
"${LOADTEST_BIN}" "${ARGS[@]}"