From 01f6bb4b2dcc571ad0cc6a404595de4b03157534 Mon Sep 17 00:00:00 2001
From: Andrew Dunstan <andrew@dunslane.net>
Date: Tue, 28 Jul 2015 15:34:35 -0400
Subject: [PATCH] Make tap tests store postmaster logs and handle vpaths
 correctly

Given this it is possible that the buildfarm animals running these tests
will be able to capture adequate logging to allow diagnosis of failures.
---
 src/Makefile.global.in          |  2 +-
 src/bin/pg_rewind/RewindTest.pm |  6 +++---
 src/test/perl/TestLib.pm        | 15 ++++++++++-----
 3 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index e2f7211160d..e87885bb2b0 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -338,7 +338,7 @@ cd $(srcdir) && TESTDIR='$(CURDIR)' PATH="$(bindir):$$PATH" PGPORT='6$(DEF_PGPOR
 endef
 
 define prove_check
-rm -rf $(srcdir)/tmp_check/log
+rm -rf $(CURDIR)/tmp_check/log
 cd $(srcdir) && TESTDIR='$(CURDIR)' $(with_temp_install) PGPORT='6$(DEF_PGPORT)' top_builddir='$(CURDIR)/$(top_builddir)' $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) t/*.pl
 endef
 
diff --git a/src/bin/pg_rewind/RewindTest.pm b/src/bin/pg_rewind/RewindTest.pm
index db5e90b3c0f..755ecb74383 100644
--- a/src/bin/pg_rewind/RewindTest.pm
+++ b/src/bin/pg_rewind/RewindTest.pm
@@ -72,9 +72,6 @@ our $test_standby_datadir = "$testroot/data_standby";
 
 mkdir $testroot;
 
-# Log files are created here
-mkdir "regress_log";
-
 # Define non-conflicting ports for both nodes.
 my $port_master  = $ENV{PGPORT};
 my $port_standby = $port_master + 1;
@@ -202,6 +199,7 @@ local replication all trust
 
 	system_or_bail('pg_ctl' , '-w',
 				   '-D' , $test_master_datadir,
+				   '-l',  "$log_path/master.log",
 				   "-o", "-k $tempdir_short --listen-addresses='' -p $port_master",
 				   'start');
 
@@ -228,6 +226,7 @@ recovery_target_timeline='latest'
 
 	# Start standby
 	system_or_bail('pg_ctl', '-w', '-D', $test_standby_datadir,
+				   '-l', "$log_path/standby.log",
 				   '-o', "-k $tempdir_short --listen-addresses='' -p $port_standby",
 				   'start');
 
@@ -323,6 +322,7 @@ recovery_target_timeline='latest'
 
 	# Restart the master to check that rewind went correctly
 	system_or_bail('pg_ctl', '-w', '-D', $test_master_datadir,
+				   '-l', "$log_path/master.log",
 				   '-o', "-k $tempdir_short --listen-addresses='' -p $port_master",
 				   'start');
 
diff --git a/src/test/perl/TestLib.pm b/src/test/perl/TestLib.pm
index 0193d575ff7..5ef95f0246e 100644
--- a/src/test/perl/TestLib.pm
+++ b/src/test/perl/TestLib.pm
@@ -23,6 +23,9 @@ our @EXPORT = qw(
   program_options_handling_ok
   command_like
   issues_sql_like
+
+  $tmp_check
+  $log_path
 );
 
 use Cwd;
@@ -37,8 +40,10 @@ use Test::More;
 
 # Open log file. For each test, the log file name uses the name of the
 # file launching this module, without the .pl suffix.
-my $log_path = 'tmp_check/log';
-mkdir 'tmp_check';
+our ($tmp_check, $log_path);
+$tmp_check = $ENV{TESTDIR} ? "$ENV{TESTDIR}/tmp_check" : "tmp_check";
+$log_path = "$tmp_check/log";
+mkdir $tmp_check;
 mkdir $log_path;
 my $test_logfile = basename($0);
 $test_logfile =~ s/\.[^.]+$//;
@@ -132,19 +137,19 @@ sub start_test_server
 	print("### Starting test server in $tempdir\n");
 	standard_initdb "$tempdir/pgdata";
 	$ret = system_log('pg_ctl', '-D', "$tempdir/pgdata", '-w', '-l',
-	  "$tempdir/logfile", '-o',
+	  "$log_path/postmaster.log", '-o',
 "--fsync=off -k \"$tempdir_short\" --listen-addresses='' --log-statement=all",
 					'start');
 	if ($ret != 0)
 	{
 		print "# pg_ctl failed; logfile:\n";
-		system('cat', "$tempdir/logfile");
+		system('cat', "$log_path/postmaster.log");
 		BAIL_OUT("pg_ctl failed");
 	}
 
 	$ENV{PGHOST}         = $tempdir_short;
 	$test_server_datadir = "$tempdir/pgdata";
-	$test_server_logfile = "$tempdir/logfile";
+	$test_server_logfile = "$log_path/postmaster.log";
 }
 
 sub restart_test_server
-- 
GitLab