From: Peter Eisentraut Date: Thu, 3 Jul 2014 01:44:02 +0000 (-0400) Subject: Use a separate temporary directory for the Unix-domain socket X-Git-Tag: REL9_5_ALPHA1~1770 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f545d233ebce6971b6f9847680e48b679e707d22;p=postgresql Use a separate temporary directory for the Unix-domain socket Creating the Unix-domain socket in the build directory can run into name-length limitations. Therefore, create the socket file in the default temporary directory of the operating system. Keep the temporary data directory etc. in the build tree. --- diff --git a/src/bin/pg_ctl/t/001_start_stop.pl b/src/bin/pg_ctl/t/001_start_stop.pl index f90dabffe5..79f5db71b2 100644 --- a/src/bin/pg_ctl/t/001_start_stop.pl +++ b/src/bin/pg_ctl/t/001_start_stop.pl @@ -4,6 +4,7 @@ use TestLib; use Test::More tests => 10; my $tempdir = TestLib::tempdir; +my $tempdir_short = TestLib::tempdir_short; program_help_ok('pg_ctl'); program_version_ok('pg_ctl'); @@ -12,7 +13,7 @@ program_options_handling_ok('pg_ctl'); command_ok([ 'pg_ctl', 'initdb', '-D', "$tempdir/data" ], 'pg_ctl initdb'); open CONF, ">>$tempdir/data/postgresql.conf"; print CONF "listen_addresses = ''\n"; -print CONF "unix_socket_directories = '$tempdir'\n"; +print CONF "unix_socket_directories = '$tempdir_short'\n"; close CONF; command_ok([ 'pg_ctl', 'start', '-D', "$tempdir/data", '-w' ], 'pg_ctl start -w'); diff --git a/src/bin/pg_ctl/t/002_status.pl b/src/bin/pg_ctl/t/002_status.pl index bd39747652..28c0a2a98e 100644 --- a/src/bin/pg_ctl/t/002_status.pl +++ b/src/bin/pg_ctl/t/002_status.pl @@ -4,11 +4,12 @@ use TestLib; use Test::More tests => 2; my $tempdir = TestLib::tempdir; +my $tempdir_short = TestLib::tempdir_short; system_or_bail "initdb -D $tempdir/data -A trust >/dev/null"; open CONF, ">>$tempdir/data/postgresql.conf"; print CONF "listen_addresses = ''\n"; -print CONF "unix_socket_directories = '$tempdir'\n"; +print CONF "unix_socket_directories = '$tempdir_short'\n"; close CONF; command_exit_is([ 'pg_ctl', 'status', '-D', "$tempdir/data" ], diff --git a/src/test/perl/TestLib.pm b/src/test/perl/TestLib.pm index 775c75d7ab..f80d1c5bd7 100644 --- a/src/test/perl/TestLib.pm +++ b/src/test/perl/TestLib.pm @@ -6,6 +6,7 @@ use warnings; use Exporter 'import'; our @EXPORT = qw( tempdir + tempdir_short start_test_server restart_test_server psql @@ -65,6 +66,13 @@ sub tempdir return File::Temp::tempdir('tmp_testXXXX', DIR => $ENV{TESTDIR} || cwd(), CLEANUP => 1); } +sub tempdir_short +{ + # Use a separate temp dir outside the build tree for the + # Unix-domain socket, to avoid file name length issues. + return File::Temp::tempdir(CLEANUP => 1); +} + my ($test_server_datadir, $test_server_logfile); sub start_test_server @@ -72,10 +80,12 @@ sub start_test_server my ($tempdir) = @_; my $ret; + my $tempdir_short = tempdir_short; + system "initdb -D $tempdir/pgdata -A trust -N >/dev/null"; $ret = system 'pg_ctl', '-D', "$tempdir/pgdata", '-s', '-w', '-l', "$tempdir/logfile", '-o', - "--fsync=off -k $tempdir --listen-addresses='' --log-statement=all", + "--fsync=off -k $tempdir_short --listen-addresses='' --log-statement=all", 'start'; if ($ret != 0) @@ -84,7 +94,7 @@ sub start_test_server BAIL_OUT("pg_ctl failed"); } - $ENV{PGHOST} = $tempdir; + $ENV{PGHOST} = $tempdir_short; $test_server_datadir = "$tempdir/pgdata"; $test_server_logfile = "$tempdir/logfile"; }