1
0
mirror of https://pagure.io/fedora-qa/os-autoinst-distri-fedora.git synced 2024-11-18 12:33:09 +00:00
os-autoinst-distri-fedora/tests/role_deploy_database_server.pm
Adam Williamson 492fcf62e4 Great Needle Cleanup 2021
Remove a whole chunk of needles that haven't matched for more
than 3 months. Also move a few needles to appropriate locations,
simplify some code chunks that relied on removed needles (if
we're not matching the needles, we don't need those chunks any
more), and drop some other no-longer-needed conditionals for
older releases.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
2021-08-10 11:57:48 -07:00

76 lines
3.4 KiB
Perl

use base "installedtest";
use strict;
use testapi;
use lockapi;
use mmapi;
use tapnet;
use utils;
sub run {
my $self=shift;
# use compose repo, disable u-t, etc.
repo_setup();
# deploy postgres directly ourselves. first, install packages...
assert_script_run 'dnf -y install postgresql-server postgresql-contrib', 300;
# configure the firewall
assert_script_run "firewall-cmd --permanent --add-service postgresql";
assert_script_run "systemctl restart firewalld.service";
# init the db
assert_script_run "/usr/bin/postgresql-setup --initdb";
# enable and start the systemd service
assert_script_run "systemctl enable postgresql.service";
assert_script_run "systemctl start postgresql.service";
# create the owner
assert_script_run 'su postgres -c "/usr/bin/createuser openqa"';
# create the database
assert_script_run 'su postgres -c "/usr/bin/createdb openqa -O openqa"';
# set the password. oh, god, the quotes. THE QUOTES. trying to
# get four layers of nested quotes properly escaped through
# perl, bash and postgres is futile, so we write the command
# to a file and call psql on the file
assert_script_run 'echo "ALTER ROLE openqa WITH PASSWORD \'correcthorse\'" > /tmp/cmd';
assert_script_run 'su postgres -c "psql openqa -f /tmp/cmd"';
# adjust postgresql.conf to allow network connections; sloppy
# version of how rolekit did it
assert_script_run 'sed -i -e "s,.*listen_addresses *=.*,listen_addresses=\'*\',g" /var/lib/pgsql/data/postgresql.conf';
# check that worked...
upload_logs "/var/lib/pgsql/data/postgresql.conf";
# adjust pg_hba.conf to use md5 authentication; sloppy version
# of how rolekit did it
assert_script_run 'sed -i -e "s,^host,#host,g" /var/lib/pgsql/data/pg_hba.conf';
assert_script_run 'echo "host all all all md5" >> /var/lib/pgsql/data/pg_hba.conf';
# check that worked...
upload_logs "/var/lib/pgsql/data/pg_hba.conf";
# restart the service
assert_script_run "systemctl restart postgresql.service";
# check we can connect to the database and create a table
assert_script_run 'su postgres -c "psql openqa -c \'CREATE TABLE test (testcol int);\'"';
# check we can add a row to the table
assert_script_run 'su postgres -c "psql openqa -c \'INSERT INTO test VALUES (5);\'"';
# check we can query the table
validate_script_output 'su postgres -c "psql openqa -c \'SELECT * FROM test;\'"', sub {$_ =~ m/^ *testcol.*5.*1 row/s };
# check we can modify the row
assert_script_run 'su postgres -c "psql openqa -c \'UPDATE test SET testcol = 50 WHERE testcol = 5;\'"';
validate_script_output 'su postgres -c "psql openqa -c \'SELECT * FROM test;\'"', sub {$_ =~ m/^ *testcol.*50.*1 row/s };
# we're all ready for other jobs to run!
mutex_create('db_ready');
wait_for_children;
# once child jobs are done, decommission the server a bit
assert_script_run 'su postgres -c "/usr/bin/dropdb -w --if-exists openqa"';
assert_script_run 'su postgres -c "/usr/bin/dropuser -w --if-exists openqa"';
# stop the server
assert_script_run 'systemctl stop postgresql.service';
# check server is stopped
assert_script_run '! systemctl is-active postgresql.service';
# FIXME check server is decommissioned...how?
}
sub test_flags {
return { fatal => 1 };
}
1;
# vim: set sw=4 et: