]> granicus.if.org Git - postgresql/commitdiff
Use a separate temporary directory for the Unix-domain socket
authorPeter Eisentraut <peter_e@gmx.net>
Thu, 3 Jul 2014 01:44:02 +0000 (21:44 -0400)
committerPeter Eisentraut <peter_e@gmx.net>
Thu, 3 Jul 2014 01:47:14 +0000 (21:47 -0400)
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.

src/bin/pg_ctl/t/001_start_stop.pl
src/bin/pg_ctl/t/002_status.pl
src/test/perl/TestLib.pm

index f90dabffe53b2e5f1e1e9144cee940204ad52a54..79f5db71b268c404a426a25c05738d45efc8fefc 100644 (file)
@@ -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');
index bd39747652798185277e6a89a0cf21ccb1247274..28c0a2a98ede8983537ff80d7bdb91fbfbbbdc9a 100644 (file)
@@ -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" ],
index 775c75d7ab1b6df4e9da2ec829bbe3fa0ee5c85d..f80d1c5bd72c0a15df3ee068c31af4890ac11ab2 100644 (file)
@@ -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";
 }