90 lines
3.4 KiB
Bash
90 lines
3.4 KiB
Bash
|
|
#!/usr/bin/env bash
|
|||
|
|
# 启动 docker-compose.authcore-e2e.yml → 迁移与 UC 种子数据 → 构建并启动 htyuc → 运行 ts_e2e_authcore_http(--ignored)。
|
|||
|
|
# 依赖:docker、psql、diesel_cli、cargo;AuthCore 默认路径为仓库上一级的 AuthCore。
|
|||
|
|
set -euo pipefail
|
|||
|
|
|
|||
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|||
|
|
AUTHCORE="${AUTHCORE_ROOT:-$ROOT/../AuthCore}"
|
|||
|
|
COMPOSE_FILE="$ROOT/docker-compose.authcore-e2e.yml"
|
|||
|
|
|
|||
|
|
export TS_DATABASE_URL="${TS_DATABASE_URL:-postgres://htyts_e2e:htyts_e2e@127.0.0.1:15432/htyts_e2e}"
|
|||
|
|
export UC_DB_URL="${UC_DB_URL:-postgres://htyuc:htyuc@127.0.0.1:15433/htyuc_test}"
|
|||
|
|
export REDIS_HOST="${REDIS_HOST:-127.0.0.1}"
|
|||
|
|
export REDIS_PORT="${REDIS_PORT:-16379}"
|
|||
|
|
export HTYUC_URL="${HTYUC_URL:-http://127.0.0.1:18080}"
|
|||
|
|
export UC_PORT="${UC_PORT:-18080}"
|
|||
|
|
export JWT_KEY="${JWT_KEY:-test_jwt_key_for_testing_only_1234567890}"
|
|||
|
|
export TOKEN_VERIFY="${TOKEN_VERIFY:-true}"
|
|||
|
|
export AUTH_CHECKING="${AUTH_CHECKING:-true}"
|
|||
|
|
export TS_DOMAIN="${TS_DOMAIN:-e2e.test.local}"
|
|||
|
|
export POOL_SIZE="${POOL_SIZE:-8}"
|
|||
|
|
export ZOMBIE_MIN="${ZOMBIE_MIN:-10}"
|
|||
|
|
export EXPIRATION_DAYS="${EXPIRATION_DAYS:-7}"
|
|||
|
|
export SKIP_POST_LOGIN="${SKIP_POST_LOGIN:-true}"
|
|||
|
|
export SKIP_REGISTRATION="${SKIP_REGISTRATION:-true}"
|
|||
|
|
export LOGGER_LEVEL="${LOGGER_LEVEL:-INFO}"
|
|||
|
|
|
|||
|
|
if [[ ! -f "$AUTHCORE/Cargo.toml" ]]; then
|
|||
|
|
echo "AuthCore not found at $AUTHCORE; set AUTHCORE_ROOT" >&2
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
cd "$ROOT"
|
|||
|
|
docker compose -f "$COMPOSE_FILE" up -d --wait
|
|||
|
|
|
|||
|
|
command -v diesel >/dev/null 2>&1 || {
|
|||
|
|
echo "diesel_cli not found; install: cargo install diesel_cli --no-default-features --features postgres --locked" >&2
|
|||
|
|
exit 1
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
echo "==> htyts_models diesel migration"
|
|||
|
|
(cd "$ROOT/htyts_models" && DATABASE_URL="$TS_DATABASE_URL" diesel migration run)
|
|||
|
|
|
|||
|
|
echo "==> htyuc_models diesel"
|
|||
|
|
(cd "$AUTHCORE/htyuc_models" && DATABASE_URL="$UC_DB_URL" diesel setup && diesel migration run)
|
|||
|
|
|
|||
|
|
echo "==> UC init_test_data.sql"
|
|||
|
|
PGPASSWORD=htyuc psql -h 127.0.0.1 -p 15433 -U htyuc -d htyuc_test -f "$AUTHCORE/htyuc/tests/fixtures/init_test_data.sql"
|
|||
|
|
|
|||
|
|
echo "==> cargo build htyuc (release)"
|
|||
|
|
# 避免 IDE/CI 注入的 CARGO_TARGET_DIR 使可执行文件不在 $AUTHCORE/target/release
|
|||
|
|
(cd "$AUTHCORE" && env -u CARGO_TARGET_DIR cargo build --release -p htyuc)
|
|||
|
|
|
|||
|
|
HTYUC_BIN="$AUTHCORE/target/release/htyuc"
|
|||
|
|
if [[ ! -x "$HTYUC_BIN" ]]; then
|
|||
|
|
echo "missing $HTYUC_BIN (after env -u CARGO_TARGET_DIR build)" >&2
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
cleanup() {
|
|||
|
|
if [[ -n "${HTYUC_PID:-}" ]] && kill -0 "$HTYUC_PID" 2>/dev/null; then
|
|||
|
|
kill "$HTYUC_PID" 2>/dev/null || true
|
|||
|
|
fi
|
|||
|
|
}
|
|||
|
|
trap cleanup EXIT
|
|||
|
|
|
|||
|
|
echo "==> start htyuc (port $UC_PORT)"
|
|||
|
|
nohup env UC_DB_URL="$UC_DB_URL" REDIS_HOST="$REDIS_HOST" REDIS_PORT="$REDIS_PORT" \
|
|||
|
|
JWT_KEY="$JWT_KEY" UC_PORT="$UC_PORT" POOL_SIZE=5 EXPIRATION_DAYS="$EXPIRATION_DAYS" \
|
|||
|
|
SKIP_POST_LOGIN="$SKIP_POST_LOGIN" SKIP_REGISTRATION="$SKIP_REGISTRATION" \
|
|||
|
|
LOGGER_LEVEL="$LOGGER_LEVEL" \
|
|||
|
|
"$HTYUC_BIN" > /tmp/htyuc-authcore-e2e.log 2>&1 &
|
|||
|
|
HTYUC_PID=$!
|
|||
|
|
|
|||
|
|
for _ in $(seq 1 90); do
|
|||
|
|
if curl -fsS "http://127.0.0.1:${UC_PORT}/api/v1/uc/index" >/dev/null 2>&1; then
|
|||
|
|
echo "==> htyuc ready"
|
|||
|
|
break
|
|||
|
|
fi
|
|||
|
|
sleep 1
|
|||
|
|
done
|
|||
|
|
if ! curl -fsS "http://127.0.0.1:${UC_PORT}/api/v1/uc/index" >/dev/null 2>&1; then
|
|||
|
|
echo "htyuc did not become ready; log:" >&2
|
|||
|
|
tail -80 /tmp/htyuc-authcore-e2e.log >&2 || true
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo "==> cargo test ts_e2e_authcore_http"
|
|||
|
|
cd "$ROOT"
|
|||
|
|
cargo test -p htyts --test ts_e2e_authcore_http -- --ignored --test-threads=1 --nocapture
|