Server IP : 127.0.0.2 / Your IP : 18.116.60.81 Web Server : Apache/2.4.18 (Ubuntu) System : User : www-data ( ) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : disk_free_space,disk_total_space,diskfreespace,dl,exec,fpaththru,getmyuid,getmypid,highlight_file,ignore_user_abord,leak,listen,link,opcache_get_configuration,opcache_get_status,passthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,php_uname,phpinfo,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,pclose,popen,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate,shell_exec,source,show_source,system,virtual MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/share/postgresql-common/t/ |
Upload File : |
# Check that cluster administration works as non-root if the invoker has # sufficient permissions on directories. use strict; use lib 't'; use TestLib; my $ownver = $MAJORS[-1]; my $grpver = $MAJORS[0]; use Test::More tests => 36; use PgCommon; my $testuser = 'postgres'; my ($uid, $gid) = (getpwnam $testuser)[2,3]; # fails by default due to access restrictions like_program_out $testuser, "pg_createcluster $ownver fail --start", 1, qr/root privileges/, "pg_createcluster fails as user $testuser by default"; # and does not leave any garbage behind check_clean; # prepare directories to that we can access it as owner/group die "could not mkdir: $!" if system "mkdir -p /etc/postgresql/$ownver /etc/postgresql/$grpver /var/log/postgresql /var/lib/postgresql/$ownver /var/lib/postgresql/$grpver"; chown $uid, 0, "/etc/postgresql/$ownver", "/var/lib/postgresql/$ownver"; chown 0, $gid, "/etc/postgresql/$grpver", "/var/log/postgresql", "/var/lib/postgresql/$grpver"; chmod 0775, "/etc/postgresql/$grpver", "/var/log/postgresql", "/var/lib/postgresql/$grpver"; # pg_createcluster and pg_ctlcluster is ((exec_as $testuser, "pg_createcluster $ownver own --start"), 0, "pg_createcluster succeeds as user $testuser with appropriate owner permissions"); is ((exec_as $testuser, "pg_createcluster $grpver grp --start"), 0, "pg_createcluster succeeds as user $testuser with appropriate group permissions"); like_program_out $testuser, 'pg_lsclusters -h', 0, qr/^$grpver\s+grp.*online.*\n^$ownver\s+own.*online/m; like_program_out 'postgres', 'psql -Atl', 0, qr/template1.*UTF8/; # pg_dropcluster is ((exec_as $testuser, "pg_dropcluster $ownver own --stop"), 0, "pg_dropcluster succeeds as user $testuser with appropriate directory owner permissions"); # pg_upgradecluster if ($grpver ne $ownver) { my $outref; is ((exec_as $testuser, "pg_upgradecluster -v $ownver $grpver grp", $outref, 0), 0, "pg_upgradecluster succeeds as user $testuser"); like $$outref, qr/Starting target cluster/, 'pg_upgradecluster reported cluster startup'; like $$outref, qr/Success. Please check/, 'pg_upgradecluster reported successful operation'; like_program_out $testuser, 'pg_lsclusters -h', 0, qr/^$grpver\s+grp.*down.*\n^$ownver\s+grp.*online/m; # clean up is ((exec_as $testuser, "pg_dropcluster $grpver grp"), 0); is ((exec_as $testuser, "pg_dropcluster $ownver grp --stop"), 0); } else { pass 'Only one major version installed, skipping pg_upgradecluster tests'; for (my $i = 0; $i < 5; ++$i) { pass '...'; } is ((exec_as $testuser, "pg_dropcluster $grpver grp --stop"), 0); } # we cannot expect full cleanliness of /{etc,var/lib}/postgresql since that # requires root permissions; thus help a bit rmdir "/etc/postgresql/$ownver"; rmdir "/etc/postgresql/$grpver"; rmdir "/var/lib/postgresql/$ownver"; rmdir "/var/lib/postgresql/$grpver"; check_clean; # vim: filetype=perl