mirror of
https://github.com/bitnami/containers.git
synced 2026-03-10 15:09:17 +08:00
tests: Replication slave can be triggered to act as the master
This commit is contained in:
@@ -347,3 +347,54 @@ create_full_container_mounted() {
|
||||
cleanup_running_containers $CONTAINER_NAME-slave
|
||||
cleanup_volumes_content
|
||||
}
|
||||
|
||||
@test "Replication slave can be triggered to act as the master" {
|
||||
create_container -d --name $CONTAINER_NAME-master \
|
||||
-e POSTGRESQL_USER=$POSTGRESQL_USER \
|
||||
-e POSTGRESQL_PASSWORD=$POSTGRESQL_PASSWORD \
|
||||
-e POSTGRESQL_DATABASE=$POSTGRESQL_DATABASE \
|
||||
-e POSTGRESQL_REPLICATION_MODE=master \
|
||||
-e POSTGRESQL_REPLICATION_USER=$POSTGRESQL_REPLICATION_USER \
|
||||
-e POSTGRESQL_REPLICATION_PASSWORD=$POSTGRESQL_REPLICATION_PASSWORD
|
||||
|
||||
create_container -d --name $CONTAINER_NAME-slave \
|
||||
--link $CONTAINER_NAME-master:master \
|
||||
-e POSTGRESQL_REPLICATION_MODE=slave \
|
||||
-e POSTGRESQL_REPLICATION_USER=$POSTGRESQL_REPLICATION_USER \
|
||||
-e POSTGRESQL_REPLICATION_PASSWORD=$POSTGRESQL_REPLICATION_PASSWORD
|
||||
|
||||
psql_client master -U $POSTGRESQL_USER $POSTGRESQL_DATABASE -c "CREATE TABLE users (id serial, name varchar(40) NOT NULL);"
|
||||
psql_client master -U $POSTGRESQL_USER $POSTGRESQL_DATABASE -c "INSERT INTO users(name) VALUES ('Marko');"
|
||||
|
||||
run psql_client slave -U $POSTGRESQL_USER $POSTGRESQL_DATABASE -c "SELECT * FROM users;"
|
||||
[[ "$output" =~ "Marko" ]]
|
||||
[ $status = 0 ]
|
||||
|
||||
# stop and remove the existing master
|
||||
cleanup_running_containers $CONTAINER_NAME-master
|
||||
|
||||
# trigger slave to become master
|
||||
docker exec $CONTAINER_NAME-slave touch /tmp/postgresql.trigger.5432
|
||||
sleep $SLEEP_TIME
|
||||
|
||||
psql_client slave -U $POSTGRESQL_USER $POSTGRESQL_DATABASE -c "INSERT INTO users(name) VALUES ('Polo');"
|
||||
run psql_client slave -U $POSTGRESQL_USER $POSTGRESQL_DATABASE -c "SELECT * FROM users;"
|
||||
[[ "$output" =~ "Marko" ]]
|
||||
[[ "$output" =~ "Polo" ]]
|
||||
[ $status = 0 ]
|
||||
|
||||
# create new slave that connects to the new master
|
||||
create_container -d \
|
||||
--link $CONTAINER_NAME-slave:master \
|
||||
-e POSTGRESQL_REPLICATION_MODE=slave \
|
||||
-e POSTGRESQL_REPLICATION_USER=$POSTGRESQL_REPLICATION_USER \
|
||||
-e POSTGRESQL_REPLICATION_PASSWORD=$POSTGRESQL_REPLICATION_PASSWORD
|
||||
|
||||
run psql_client -U $POSTGRESQL_USER $POSTGRESQL_DATABASE -c "SELECT * FROM users;"
|
||||
[[ "$output" =~ "Marko" ]]
|
||||
[[ "$output" =~ "Polo" ]]
|
||||
[ $status = 0 ]
|
||||
|
||||
cleanup_running_containers
|
||||
cleanup_running_containers $CONTAINER_NAME-slave
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user