summaryrefslogtreecommitdiff
path: root/src/tools
diff options
context:
space:
mode:
authorNoah Misch <noah@leadboat.com>2019-05-19 14:36:44 -0700
committerNoah Misch <noah@leadboat.com>2019-05-19 14:36:44 -0700
commitbd1592e8570282b1650af6b8eede0016496daecd (patch)
tree8f335da3774f1057e67a01efb04a6372d32da0e7 /src/tools
parent9d5c22d28f8c161aa729d841aeec936c646044d4 (diff)
In the pg_upgrade test suite, don't write to src/test/regress.
When this suite runs installcheck, redirect file creations from src/test/regress to src/bin/pg_upgrade/tmp_check/regress. This closes a race condition in "make -j check-world". If the pg_upgrade suite wrote to a given src/test/regress/results file in parallel with the regular src/test/regress invocation writing it, a test failed spuriously. Even without parallelism, in "make -k check-world", the suite finishing second overwrote the other's regression.diffs. This revealed test "largeobject" assuming @abs_builddir@ is getcwd(), so fix that, too. Buildfarm client REL_10, released forty-five days ago, supports saving regression.diffs from its new location. When an older client reports a pg_upgradeCheck failure, it will no longer include regression.diffs. Back-patch to 9.5, where pg_upgrade moved to src/bin. Reviewed by Andrew Dunstan. Discussion: https://postgr.es/m/20181224034411.GA3224776@rfd.leadboat.com
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/msvc/vcregress.pl18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/tools/msvc/vcregress.pl b/src/tools/msvc/vcregress.pl
index 2aa29ab008c..9fd5f232ec6 100644
--- a/src/tools/msvc/vcregress.pl
+++ b/src/tools/msvc/vcregress.pl
@@ -102,6 +102,13 @@ exit 0;
sub installcheck
{
my $schedule = shift || 'serial';
+ installcheck_internal $schedule;
+ return;
+}
+
+sub installcheck_internal
+{
+ my ($schedule, @EXTRA_REGRESS_OPTS) = @_;
my @args = (
"../../../$Config/pg_regress/pg_regress",
"--dlpath=.",
@@ -111,6 +118,7 @@ sub installcheck
"--encoding=SQL_ASCII",
"--no-locale");
push(@args, $maxconn) if $maxconn;
+ push(@args, @EXTRA_REGRESS_OPTS);
system(@args);
my $status = $? >> 8;
exit $status if $status;
@@ -558,6 +566,14 @@ sub upgradecheck
$ENV{PATH} = "$bindir;$ENV{PATH}";
my $data = "$tmp_root/data";
$ENV{PGDATA} = "$data.old";
+ my $outputdir = "$tmp_root/regress";
+ my @EXTRA_REGRESS_OPTS = ("--outputdir=$outputdir");
+ rmtree("$outputdir");
+ mkdir "$outputdir" || die $!;
+ mkdir "$outputdir/sql" || die $!;
+ mkdir "$outputdir/expected" || die $!;
+ mkdir "$outputdir/testtablespace" || die $!;
+
my $logdir = "$topdir/src/bin/pg_upgrade/log";
(mkdir $logdir || die $!) unless -d $logdir;
print "\nRunning initdb on old cluster\n\n";
@@ -572,7 +588,7 @@ sub upgradecheck
generate_db('', 91, 127, '');
print "\nSetting up data for upgrading\n\n";
- installcheck('parallel');
+ installcheck_internal('parallel', @EXTRA_REGRESS_OPTS);
# now we can chdir into the source dir
chdir "$topdir/src/bin/pg_upgrade";