summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Paquier2021-03-10 05:50:00 +0000
committerMichael Paquier2021-03-10 05:50:00 +0000
commit6c788d9f6aadb41d76a72d56149268371a7895ee (patch)
tree9fd432d1dacbf811ddc8a14960ee5b617108aa66
parentaeb57af8e64000cc4288a7b8b8d7cf6040eae900 (diff)
Move tablespace path re-creation from the makefiles to pg_regress
Moving this logic into pg_regress fixes a potential failure with parallel tests when pg_upgrade and the main regression test suite both trigger the makefile rule that cleaned up testtablespace/ under src/test/regress. Even if pg_upgrade was triggering this rule, it has no need to do so as it uses a different tablespace path. So if pg_upgrade triggered the makefile rule for the tablespace setup while the main regression test suite ran the tablespace cases, it would fail. 61be85a was a similar attempt at achieving that, but that broke cases where the regression tests require to run under an Administrator account, like with Appveyor. Reported-by: Andres Freund, Kyotaro Horiguchi Reviewed-by: Peter Eisentraut Discussion: https://postgr.es/m/[email protected]
-rw-r--r--src/bin/pg_upgrade/test.sh1
-rw-r--r--src/test/regress/GNUmakefile21
-rw-r--r--src/test/regress/pg_regress.c14
-rw-r--r--src/tools/msvc/vcregress.pl1
4 files changed, 13 insertions, 24 deletions
diff --git a/src/bin/pg_upgrade/test.sh b/src/bin/pg_upgrade/test.sh
index ca923ba01bc..9c6deae294a 100644
--- a/src/bin/pg_upgrade/test.sh
+++ b/src/bin/pg_upgrade/test.sh
@@ -106,7 +106,6 @@ outputdir="$temp_root/regress"
EXTRA_REGRESS_OPTS="$EXTRA_REGRESS_OPTS --outputdir=$outputdir"
export EXTRA_REGRESS_OPTS
mkdir "$outputdir"
-mkdir "$outputdir"/testtablespace
logdir=`pwd`/log
rm -rf "$logdir"
diff --git a/src/test/regress/GNUmakefile b/src/test/regress/GNUmakefile
index 3d85857bfa8..95e4bc82280 100644
--- a/src/test/regress/GNUmakefile
+++ b/src/test/regress/GNUmakefile
@@ -114,13 +114,6 @@ submake-contrib-spi: | submake-libpgport submake-generated-headers
.PHONY: submake-contrib-spi
-# Tablespace setup
-
-.PHONY: tablespace-setup
-tablespace-setup:
- rm -rf ./testtablespace
- mkdir ./testtablespace
-
##
## Run tests
@@ -128,19 +121,19 @@ tablespace-setup:
REGRESS_OPTS = --dlpath=. --max-concurrent-tests=20 $(EXTRA_REGRESS_OPTS)
-check: all tablespace-setup
+check: all
$(pg_regress_check) $(REGRESS_OPTS) --schedule=$(srcdir)/parallel_schedule $(MAXCONNOPT) $(EXTRA_TESTS)
-check-tests: all tablespace-setup | temp-install
+check-tests: all | temp-install
$(pg_regress_check) $(REGRESS_OPTS) $(MAXCONNOPT) $(TESTS) $(EXTRA_TESTS)
-installcheck: all tablespace-setup
+installcheck: all
$(pg_regress_installcheck) $(REGRESS_OPTS) --schedule=$(srcdir)/serial_schedule $(EXTRA_TESTS)
-installcheck-parallel: all tablespace-setup
+installcheck-parallel: all
$(pg_regress_installcheck) $(REGRESS_OPTS) --schedule=$(srcdir)/parallel_schedule $(MAXCONNOPT) $(EXTRA_TESTS)
-installcheck-tests: all tablespace-setup
+installcheck-tests: all
$(pg_regress_installcheck) $(REGRESS_OPTS) $(TESTS) $(EXTRA_TESTS)
standbycheck: all
@@ -152,10 +145,10 @@ runcheck: check
runtest: installcheck
runtest-parallel: installcheck-parallel
-bigtest: all tablespace-setup
+bigtest: all
$(pg_regress_installcheck) $(REGRESS_OPTS) --schedule=$(srcdir)/serial_schedule numeric_big
-bigcheck: all tablespace-setup | temp-install
+bigcheck: all | temp-install
$(pg_regress_check) $(REGRESS_OPTS) --schedule=$(srcdir)/parallel_schedule $(MAXCONNOPT) numeric_big
diff --git a/src/test/regress/pg_regress.c b/src/test/regress/pg_regress.c
index b284cc88c40..b7d80bd9bb3 100644
--- a/src/test/regress/pg_regress.c
+++ b/src/test/regress/pg_regress.c
@@ -506,24 +506,22 @@ convert_sourcefiles_in(const char *source_subdir, const char *dest_dir, const ch
snprintf(testtablespace, MAXPGPATH, "%s/testtablespace", outputdir);
-#ifdef WIN32
-
/*
- * On Windows only, clean out the test tablespace dir, or create it if it
- * doesn't exist so as it is possible to run the regression tests as a
- * Windows administrative user account with the restricted token obtained
- * when starting pg_regress. On other platforms we expect the Makefile to
- * take care of that.
+ * Clean out the test tablespace dir, or create it if it doesn't exist. On
+ * Windows, doing this cleanup here makes possible to run the regression
+ * tests as a Windows administrative user account with the restricted
+ * token obtained when starting pg_regress.
*/
if (directory_exists(testtablespace))
+ {
if (!rmtree(testtablespace, true))
{
fprintf(stderr, _("\n%s: could not remove test tablespace \"%s\"\n"),
progname, testtablespace);
exit(2);
}
+ }
make_directory(testtablespace);
-#endif
/* finally loop on each file and do the replacement */
for (name = names; *name; name++)
diff --git a/src/tools/msvc/vcregress.pl b/src/tools/msvc/vcregress.pl
index 14cceac31e0..d9bac6c3a29 100644
--- a/src/tools/msvc/vcregress.pl
+++ b/src/tools/msvc/vcregress.pl
@@ -585,7 +585,6 @@ sub upgradecheck
my $outputdir = "$tmp_root/regress";
my @EXTRA_REGRESS_OPTS = ("--outputdir=$outputdir");
mkdir "$outputdir" || die $!;
- mkdir "$outputdir/testtablespace" || die $!;
my $logdir = "$topdir/src/bin/pg_upgrade/log";
rmtree($logdir);