56 lines
1.4 KiB
Bash
Executable file
56 lines
1.4 KiB
Bash
Executable file
#! /bin/bash
|
|
|
|
set -e
|
|
. test/pg-test-lib.sh
|
|
ADMIN_PASSWORD=redhat
|
|
|
|
test $# -eq 2 || error "two args expected: $0 FROM TO"
|
|
|
|
cleanup()
|
|
{
|
|
set +e
|
|
set -- $container_from $container_to
|
|
if test $# -gt 0; then
|
|
docker stop "$@" >/dev/null
|
|
docker rm -f "$@"
|
|
fi
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
from=$1
|
|
to=$2
|
|
image_from=$(get_image_id "$from")
|
|
image_to=$(get_image_id "$to")
|
|
|
|
assert_migration_succeeds ()
|
|
{
|
|
info "starting PostgreSQL server v$from"
|
|
container_from=$(docker run -e POSTGRESQL_ADMIN_PASSWORD="$ADMIN_PASSWORD" -d "$image_from")
|
|
wait_for_postgres "$container_from"
|
|
|
|
eval "CID=\$container_from data_${1}_create"
|
|
eval "CID=\$container_from data_${1}_check"
|
|
|
|
ip=$(container_ip "$container_from")
|
|
|
|
info "starting new PostgreSQL server v$to with migration options"
|
|
container_to=$(docker run \
|
|
-e POSTGRESQL_MIGRATION_REMOTE_HOST="$ip" \
|
|
-e POSTGRESQL_MIGRATION_ADMIN_PASSWORD="$ADMIN_PASSWORD" \
|
|
-d "$image_to")
|
|
|
|
# Prolong a waiting time here a bit since both dump and restore is done in
|
|
# uncertain environment (usually both is done on the same hardware).
|
|
wait_for_postgres "$container_to" 100
|
|
|
|
info "check that the migration passed"
|
|
eval "CID=\$container_to data_${1}_check"
|
|
|
|
docker stop "$container_from"
|
|
docker rm -f "$container_from"
|
|
docker stop "$container_to"
|
|
docker rm -f "$container_to"
|
|
container_from= container_to=
|
|
}
|
|
|
|
assert_migration_succeeds pagila
|