Skip to content
Snippets Groups Projects
Commit f545d233 authored by Peter Eisentraut's avatar Peter Eisentraut
Browse files

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.
parent 0490db62
No related branches found
No related tags found
No related merge requests found
......@@ -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');
......
......@@ -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" ],
......
......@@ -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";
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment