53 lines
1.9 KiB
Bash
Executable File
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
|