raspiblitz/test/bonus.postgresql-15.bats
openoms 3aa0bb42a7
fix postgresql 13 recovery (#4521)
* postgres: add comments, backup and remove unused databases
* bats: remove output, use --verbose-run locally
* always drop empty pg 15 cluster
* check cluster correctly, fix port after upgrade
* always restart postgresql.service to fix port
2024-04-06 10:23:39 +02:00

93 lines
2.9 KiB
Bash

#!/usr/bin/env bats
@test "Start PostgreSQL cluster" {
# run the script
run ../home.admin/config.scripts/bonus.postgresql.sh on
[ "$status" -eq 0 ]
# check if PostgreSQL cluster is running
run pg_lsclusters
[ "$status" -eq 0 ]
}
@test "Create test database" {
sudo -u postgres psql -c "CREATE DATABASE testdb TEMPLATE template0 LC_CTYPE 'C' LC_COLLATE 'C' ENCODING 'UTF8';"
sudo -u postgres psql -c "CREATE USER testuser WITH ENCRYPTED PASSWORD 'raspiblitz';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE testdb TO testuser;"
# check if PostgreSQL cluster is running
run pg_lsclusters
[ "$status" -eq 0 ]
run sudo -u postgres psql -l
echo "$output" | grep -q "testdb"
[ "$?" -eq 0 ]
echo "$output" | grep -q "testuser"
[ "$?" -eq 0 ]
}
@test "Switch cluster off and move" {
# run the script
run ../home.admin/config.scripts/bonus.postgresql.sh off
# check if PostgreSQL cluster is running
run pg_lsclusters
[ "$status" -eq 0 ]
sudo mv /mnt/hdd/app-data/postgresql /mnt/hdd/app-data/postgresql.bak
sudo mv /mnt/hdd/app-data/postgresql-conf /mnt/hdd/app-data/postgresql-conf.bak
if echo "${output}" | grep "15 main"; then
run sudo pg_dropcluster 15 main --stop
[ "$status" -eq 0 ]
fi
}
@test "Restore pg cluster" {
sudo mv /mnt/hdd/app-data/postgresql.bak /mnt/hdd/app-data/postgresql
sudo mv /mnt/hdd/app-data/postgresql-conf.bak /mnt/hdd/app-data/postgresql-conf
# run the script
run ../home.admin/config.scripts/bonus.postgresql.sh on
[ "$status" -eq 0 ]
# check the database
run pg_lsclusters
[ "$status" -eq 0 ]
run sudo -u postgres psql -l
echo "$output" | grep -q "testdb"
[ "$?" -eq 0 ]
echo "$output" | grep -q "testuser"
[ "$?" -eq 0 ]
}
@test "Switch cluster off and move (2)" {
run ../home.admin/config.scripts/bonus.postgresql.sh off
[ "$status" -eq 0 ]
run pg_lsclusters
[ "$status" -eq 0 ]
sudo mv /mnt/hdd/app-data/postgresql /mnt/hdd/app-data/postgresql.bak
sudo mv /mnt/hdd/app-data/postgresql-conf /mnt/hdd/app-data/postgresql-conf.bak
if echo "${output}" | grep "15 main"; then
run sudo pg_dropcluster 15 main --stop
[ "$status" -eq 0 ]
fi
}
@test "Restore cluster without config dir" {
sudo mv /mnt/hdd/app-data/postgresql.bak /mnt/hdd/app-data/postgresql
sudo rm -rf /etc/postgresql
sudo rm -rf /mnt/hdd/app-data/postgresql-conf.bak
run ../home.admin/config.scripts/bonus.postgresql.sh on
[ "$status" -eq 0 ]
run pg_lsclusters
[ "$status" -eq 0 ]
run sudo -u postgres psql -l
echo "$output" | grep -q "testdb"
[ "$?" -eq 0 ]
echo "$output" | grep -q "testuser"
[ "$?" -eq 0 ]
}
@test "Cleanup" {
run ../home.admin/config.scripts/bonus.postgresql.sh off
[ "$status" -eq 0 ]
run pg_lsclusters
[ "$status" -eq 0 ]
sudo pg_dropcluster 15 main --stop || true
sudo pg_dropcluster 13 main --stop || true
sudo rm -rf /mnt/hdd/app-data/postgresql*
}