fix/test: benchmark
This commit is contained in:
@@ -12,7 +12,12 @@ shift
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
cd "$ROOT_DIR"
|
||||
|
||||
export MIX_ENV=test
|
||||
MIX_ENV="${PARRHESIA_E2E_MIX_ENV:-test}"
|
||||
if [[ "$MIX_ENV" != "test" && "$MIX_ENV" != "prod" ]]; then
|
||||
echo "PARRHESIA_E2E_MIX_ENV must be test or prod, got: $MIX_ENV" >&2
|
||||
exit 1
|
||||
fi
|
||||
export MIX_ENV
|
||||
|
||||
SUITE_SLUG="$(printf '%s' "$SUITE_NAME" | tr '[:upper:]' '[:lower:]' | tr -c 'a-z0-9' '_')"
|
||||
SUITE_UPPER="$(printf '%s' "$SUITE_SLUG" | tr '[:lower:]' '[:upper:]')"
|
||||
@@ -26,12 +31,40 @@ printf -v "$PORT_ENV_VAR" '%s' "$TEST_HTTP_PORT"
|
||||
export "$PORT_ENV_VAR"
|
||||
|
||||
if [[ -z "${PGDATABASE:-}" ]]; then
|
||||
export PGDATABASE="parrhesia_${SUITE_SLUG}_test"
|
||||
export PGDATABASE="parrhesia_${SUITE_SLUG}_${MIX_ENV}"
|
||||
fi
|
||||
|
||||
PARRHESIA_TEST_HTTP_PORT=0 mix ecto.drop --quiet || true
|
||||
PARRHESIA_TEST_HTTP_PORT=0 mix ecto.create --quiet
|
||||
PARRHESIA_TEST_HTTP_PORT=0 mix ecto.migrate --quiet
|
||||
if [[ -z "${DATABASE_URL:-}" ]]; then
|
||||
PGUSER_EFFECTIVE="${PGUSER:-${USER:-agent}}"
|
||||
PGHOST_EFFECTIVE="${PGHOST:-localhost}"
|
||||
PGPORT_EFFECTIVE="${PGPORT:-5432}"
|
||||
|
||||
# Ecto requires a URL host to be present. For unix sockets we keep a dummy
|
||||
# TCP host and pass the socket directory as query option.
|
||||
if [[ "$PGHOST_EFFECTIVE" == /* ]]; then
|
||||
if [[ -n "${PGPASSWORD:-}" ]]; then
|
||||
export DATABASE_URL="ecto://${PGUSER_EFFECTIVE}:${PGPASSWORD}@localhost/${PGDATABASE}?socket_dir=${PGHOST_EFFECTIVE}&port=${PGPORT_EFFECTIVE}"
|
||||
else
|
||||
export DATABASE_URL="ecto://${PGUSER_EFFECTIVE}@localhost/${PGDATABASE}?socket_dir=${PGHOST_EFFECTIVE}&port=${PGPORT_EFFECTIVE}"
|
||||
fi
|
||||
else
|
||||
if [[ -n "${PGPASSWORD:-}" ]]; then
|
||||
export DATABASE_URL="ecto://${PGUSER_EFFECTIVE}:${PGPASSWORD}@${PGHOST_EFFECTIVE}:${PGPORT_EFFECTIVE}/${PGDATABASE}"
|
||||
else
|
||||
export DATABASE_URL="ecto://${PGUSER_EFFECTIVE}@${PGHOST_EFFECTIVE}:${PGPORT_EFFECTIVE}/${PGDATABASE}"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$MIX_ENV" == "test" ]]; then
|
||||
PARRHESIA_TEST_HTTP_PORT=0 mix ecto.drop --quiet --force || true
|
||||
PARRHESIA_TEST_HTTP_PORT=0 mix ecto.create --quiet
|
||||
PARRHESIA_TEST_HTTP_PORT=0 mix ecto.migrate --quiet
|
||||
else
|
||||
mix ecto.drop --quiet --force || true
|
||||
mix ecto.create --quiet
|
||||
mix ecto.migrate --quiet
|
||||
fi
|
||||
|
||||
SERVER_LOG="${ROOT_DIR}/.${SUITE_SLUG}-e2e-server.log"
|
||||
: > "$SERVER_LOG"
|
||||
@@ -41,6 +74,14 @@ cleanup() {
|
||||
kill "$SERVER_PID" 2>/dev/null || true
|
||||
wait "$SERVER_PID" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
if [[ "${PARRHESIA_E2E_DROP_DB_ON_EXIT:-0}" == "1" ]]; then
|
||||
if [[ "$MIX_ENV" == "test" ]]; then
|
||||
PARRHESIA_TEST_HTTP_PORT=0 mix ecto.drop --quiet --force || true
|
||||
else
|
||||
mix ecto.drop --quiet --force || true
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
trap cleanup EXIT INT TERM
|
||||
@@ -50,7 +91,11 @@ if ss -ltn "( sport = :${TEST_HTTP_PORT} )" | tail -n +2 | grep -q .; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PARRHESIA_TEST_HTTP_PORT="$TEST_HTTP_PORT" mix run --no-halt >"$SERVER_LOG" 2>&1 &
|
||||
if [[ "$MIX_ENV" == "test" ]]; then
|
||||
PARRHESIA_TEST_HTTP_PORT="$TEST_HTTP_PORT" mix run --no-halt >"$SERVER_LOG" 2>&1 &
|
||||
else
|
||||
PORT="$TEST_HTTP_PORT" mix run --no-halt >"$SERVER_LOG" 2>&1 &
|
||||
fi
|
||||
SERVER_PID=$!
|
||||
|
||||
READY=0
|
||||
@@ -68,4 +113,8 @@ if [[ "$READY" -ne 1 ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PARRHESIA_TEST_HTTP_PORT=0 "$@"
|
||||
if [[ "$MIX_ENV" == "test" ]]; then
|
||||
PARRHESIA_TEST_HTTP_PORT=0 "$@"
|
||||
else
|
||||
"$@"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user