Files
Wyndham-RSVN-0918/scripts/verify-booking-postgresql-migration.sh
鲨鱼辣椒 31849411a8
Some checks failed
verify / booking-verify (push) Has been cancelled
建立5178独立项目基线
2026-09-08 15:03:45 +08:00

53 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
# Run the opt-in CP4 PostgreSQL infrastructure smoke through the same Flyway
# and Spring repository code used by the application. The JUnit gate validates
# the approved legacy V001 coexistence shape before any write, migrates V1-V14,
# restarts independent application contexts, verifies durable claim/fencing plus
# the controlled-Provider Layer 3 path, and removes all synthetic source-rooted rows.
set -euo pipefail
required_variables=(
TH_HOTEL_BOOKING_PG_URL
TH_HOTEL_BOOKING_PG_USERNAME
TH_HOTEL_BOOKING_PG_PASSWORD
TH_HOTEL_BOOKING_PG_SMOKE_DATABASE
)
for variable_name in "${required_variables[@]}"; do
if [[ -z "${!variable_name:-}" ]]; then
echo "${variable_name} is required through the deployment Secret environment." >&2
exit 64
fi
done
if [[ "${TH_HOTEL_BOOKING_PG_SMOKE_APPROVED:-false}" != 'true' ]]; then
echo 'Set TH_HOTEL_BOOKING_PG_SMOKE_APPROVED=true only for an explicitly approved non-production database.' >&2
exit 65
fi
case "${TH_HOTEL_BOOKING_PG_URL}" in
jdbc:postgresql://*) ;;
postgresql://*)
export TH_HOTEL_BOOKING_PG_URL="jdbc:${TH_HOTEL_BOOKING_PG_URL}"
;;
postgres://*)
export TH_HOTEL_BOOKING_PG_URL="jdbc:postgresql://${TH_HOTEL_BOOKING_PG_URL#postgres://}"
;;
*)
echo 'TH_HOTEL_BOOKING_PG_URL must be a PostgreSQL JDBC or PostgreSQL connection URL.' >&2
exit 64
;;
esac
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
repository_root="$(cd "${script_dir}/.." && pwd)"
for migration_version in 1 2 3 4 5 6 7 8 9 10 11 12 13 14; do
if ! compgen -G "${repository_root}/server/src/main/resources/db/booking-postgresql/migration/V${migration_version}__*.sql" >/dev/null; then
echo "Canonical Booking PostgreSQL V${migration_version} migration is missing." >&2
exit 66
fi
done
export TH_HOTEL_BOOKING_PG_SMOKE_ENABLED=true
cd "${repository_root}/server"
exec ./mvnw -Dtest=BookingPostgresCp4InfrastructureSmokeTest test