Server IP : 85.214.239.14 / Your IP : 52.14.234.146 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /usr/share/postgresql-common/t/ |
Upload File : |
# Test cluster upgrade with a custom ssl certificate use strict; use File::Temp qw/tempdir/; use lib 't'; use TestLib; use PgCommon; use Test::More tests => (@MAJORS == 1 or $PgCommon::rpm) ? 1 : 22; if (@MAJORS == 1) { pass 'only one major version installed, skipping upgrade tests'; exit 0; } if ($PgCommon::rpm) { pass 'SSL certificates not handled on RedHat'; exit 0; } ok ((system "pg_createcluster $MAJORS[0] upgr >/dev/null") == 0); my $tdir = tempdir (CLEANUP => 1); my ($p_uid, $p_gid) = (getpwnam 'postgres')[2,3]; chown $p_uid, $p_gid, $tdir; my $tempcrt = "$tdir/ssl-cert-snakeoil.pem"; my $oldcrt = "/var/lib/postgresql/$MAJORS[0]/upgr/server.crt"; my $newcrt = "/var/lib/postgresql/$MAJORS[-1]/upgr/server.crt"; # First upgrade note "upgrade test: server.crt is a symlink"; (system "cp -p /etc/ssl/certs/ssl-cert-snakeoil.pem $tempcrt") == 0 or die "cp: $!"; unlink $oldcrt; # remove file installed by pg_createcluster symlink $tempcrt, $oldcrt or die "symlink: $!"; # Upgrade to latest version my $outref; is ((exec_as 0, "pg_upgradecluster --start -v $MAJORS[-1] $MAJORS[0] upgr", $outref, 0), 0, 'pg_upgradecluster succeeds'); like $$outref, qr/Starting upgraded cluster/, 'pg_upgradecluster reported cluster startup'; like $$outref, qr/Success. Please check/, 'pg_upgradecluster reported successful operation'; if ($MAJORS[-1] >= 9.2) { is ((-e $newcrt), undef, "new data directory does not contain server.crt"); is ((PgCommon::get_conf_value $MAJORS[-1], 'upgr', 'postgresql.conf', 'ssl_cert_file'), $tempcrt, "symlink server.crt target is put into ssl_cert_file"); } else { is ((-l $newcrt), 1, "new data directory contains server.crt"); is ((readlink $newcrt), $tempcrt, "symlink server.crt points to correct location"); } # Clean away new cluster is ((system "pg_dropcluster $MAJORS[-1] upgr --stop"), 0, 'Dropping upgraded cluster'); unlink $oldcrt or die "unlink: $!"; # Second upgrade note "upgrade test: server.crt is a plain file"; (system "cp -p $tempcrt $oldcrt") == 0 or die "cp: $!"; # Upgrade to latest version my $outref; is ((exec_as 0, "pg_upgradecluster --start -v $MAJORS[-1] $MAJORS[0] upgr", $outref, 0), 0, 'pg_upgradecluster succeeds'); like $$outref, qr/Starting upgraded cluster/, 'pg_upgradecluster reported cluster startup'; like $$outref, qr/Success. Please check/, 'pg_upgradecluster reported successful operation'; is ((-f $newcrt), 1, "new data directory contains server.crt file"); if ($MAJORS[-1] >= 9.2) { is ((PgCommon::get_conf_value $MAJORS[-1], 'upgr', 'postgresql.conf', 'ssl_cert_file'), $newcrt, "server.crt is put into ssl_cert_file"); } else { pass "..."; } # Stop servers, clean up is ((system "pg_dropcluster $MAJORS[0] upgr"), 0, 'Dropping original cluster'); is ((system "pg_dropcluster $MAJORS[-1] upgr --stop"), 0, 'Dropping upgraded cluster'); check_clean; # vim: filetype=perl