Commit 1d7dd186 authored by Michael Paquier's avatar Michael Paquier

Revert all new recent changes to add PGXS options for TAP and isolation

A set of failures in buildfarm machines are proving that this is not
quite ready yet because of another set of issues:
- MSVC scripts assume that REGRESS_OPTS can only use top_builddir.  Some
test suites actually finish by using top_srcdir, like pg_stat_statements
which cause the regression tests to never run.
- Trying to enforce top_builddir does not work either when using VPATH
as this is not recognized properly.
- TAP tests of bloom are unstable on various platforms, causing various
failures.
parent 3955cae0
...@@ -9,10 +9,6 @@ PGFILEDESC = "bloom access method - signature file based index" ...@@ -9,10 +9,6 @@ PGFILEDESC = "bloom access method - signature file based index"
REGRESS = bloom REGRESS = bloom
# Disable TAP tests for this module for now, as these are unstable on several
# platforms, including recent Windows and macOS.
# TAP_TESTS = 1
ifdef USE_PGXS ifdef USE_PGXS
PG_CONFIG = pg_config PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs) PGXS := $(shell $(PG_CONFIG) --pgxs)
...@@ -23,3 +19,6 @@ top_builddir = ../.. ...@@ -23,3 +19,6 @@ top_builddir = ../..
include $(top_builddir)/src/Makefile.global include $(top_builddir)/src/Makefile.global
include $(top_srcdir)/contrib/contrib-global.mk include $(top_srcdir)/contrib/contrib-global.mk
endif endif
wal-check: temp-install
$(prove_check)
...@@ -6,11 +6,11 @@ PGAPPICON = win32 ...@@ -6,11 +6,11 @@ PGAPPICON = win32
PROGRAM = oid2name PROGRAM = oid2name
OBJS = oid2name.o $(WIN32RES) OBJS = oid2name.o $(WIN32RES)
TAP_TESTS = 1
PG_CPPFLAGS = -I$(libpq_srcdir) PG_CPPFLAGS = -I$(libpq_srcdir)
PG_LIBS_INTERNAL = $(libpq_pgport) PG_LIBS_INTERNAL = $(libpq_pgport)
EXTRA_CLEAN = tmp_check
ifdef USE_PGXS ifdef USE_PGXS
PG_CONFIG = pg_config PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs) PGXS := $(shell $(PG_CONFIG) --pgxs)
...@@ -21,3 +21,9 @@ top_builddir = ../.. ...@@ -21,3 +21,9 @@ top_builddir = ../..
include $(top_builddir)/src/Makefile.global include $(top_builddir)/src/Makefile.global
include $(top_srcdir)/contrib/contrib-global.mk include $(top_srcdir)/contrib/contrib-global.mk
endif endif
check:
$(prove_check)
installcheck:
$(prove_installcheck)
...@@ -3,20 +3,9 @@ ...@@ -3,20 +3,9 @@
MODULES = test_decoding MODULES = test_decoding
PGFILEDESC = "test_decoding - example of a logical decoding output plugin" PGFILEDESC = "test_decoding - example of a logical decoding output plugin"
EXTRA_INSTALL=contrib/test_decoding # Note: because we don't tell the Makefile there are any regression tests,
# we have to clean those result files explicitly
REGRESS = ddl xact rewrite toast permissions decoding_in_xact \ EXTRA_CLEAN = $(pg_regress_clean_files)
decoding_into_rel binary prepared replorigin time messages \
spill slot truncate
ISOLATION = mxact delayed_startup ondisk_startup concurrent_ddl_dml \
oldest_xmin snapshot_transfer
REGRESS_OPTS = --temp-config=$(top_builddir)/contrib/test_decoding/logical.conf
ISOLATION_OPTS = --temp-config=$(top_builddir)/contrib/test_decoding/logical.conf
# Disabled because these tests require "wal_level=logical", which
# typical installcheck users do not have (e.g. buildfarm clients).
NO_INSTALLCHECK = 1
ifdef USE_PGXS ifdef USE_PGXS
PG_CONFIG = pg_config PG_CONFIG = pg_config
...@@ -29,8 +18,52 @@ include $(top_builddir)/src/Makefile.global ...@@ -29,8 +18,52 @@ include $(top_builddir)/src/Makefile.global
include $(top_srcdir)/contrib/contrib-global.mk include $(top_srcdir)/contrib/contrib-global.mk
endif endif
# Disabled because these tests require "wal_level=logical", which
# typical installcheck users do not have (e.g. buildfarm clients).
installcheck:;
# But it can nonetheless be very helpful to run tests on preexisting # But it can nonetheless be very helpful to run tests on preexisting
# installation, allow to do so, but only if requested explicitly. # installation, allow to do so, but only if requested explicitly.
installcheck-force: installcheck-force: regresscheck-install-force isolationcheck-install-force
$(pg_regress_installcheck) $(REGRESS)
$(pg_isolation_regress_installcheck) $(ISOLATION) check: regresscheck isolationcheck
submake-regress:
$(MAKE) -C $(top_builddir)/src/test/regress all
submake-isolation:
$(MAKE) -C $(top_builddir)/src/test/isolation all
submake-test_decoding:
$(MAKE) -C $(top_builddir)/contrib/test_decoding
REGRESSCHECKS=ddl xact rewrite toast permissions decoding_in_xact \
decoding_into_rel binary prepared replorigin time messages \
spill slot truncate
regresscheck: | submake-regress submake-test_decoding temp-install
$(pg_regress_check) \
--temp-config $(top_srcdir)/contrib/test_decoding/logical.conf \
$(REGRESSCHECKS)
regresscheck-install-force: | submake-regress submake-test_decoding temp-install
$(pg_regress_installcheck) \
$(REGRESSCHECKS)
ISOLATIONCHECKS=mxact delayed_startup ondisk_startup concurrent_ddl_dml \
oldest_xmin snapshot_transfer
isolationcheck: | submake-isolation submake-test_decoding temp-install
$(pg_isolation_regress_check) \
--temp-config $(top_srcdir)/contrib/test_decoding/logical.conf \
$(ISOLATIONCHECKS)
isolationcheck-install-force: all | submake-isolation submake-test_decoding temp-install
$(pg_isolation_regress_installcheck) \
$(ISOLATIONCHECKS)
.PHONY: submake-test_decoding submake-regress check \
regresscheck regresscheck-install-force \
isolationcheck isolationcheck-install-force
temp-install: EXTRA_INSTALL=contrib/test_decoding
...@@ -6,11 +6,11 @@ PGAPPICON = win32 ...@@ -6,11 +6,11 @@ PGAPPICON = win32
PROGRAM = vacuumlo PROGRAM = vacuumlo
OBJS = vacuumlo.o $(WIN32RES) OBJS = vacuumlo.o $(WIN32RES)
TAP_TESTS = 1
PG_CPPFLAGS = -I$(libpq_srcdir) PG_CPPFLAGS = -I$(libpq_srcdir)
PG_LIBS_INTERNAL = $(libpq_pgport) PG_LIBS_INTERNAL = $(libpq_pgport)
EXTRA_CLEAN = tmp_check
ifdef USE_PGXS ifdef USE_PGXS
PG_CONFIG = pg_config PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs) PGXS := $(shell $(PG_CONFIG) --pgxs)
...@@ -21,3 +21,9 @@ top_builddir = ../.. ...@@ -21,3 +21,9 @@ top_builddir = ../..
include $(top_builddir)/src/Makefile.global include $(top_builddir)/src/Makefile.global
include $(top_srcdir)/contrib/contrib-global.mk include $(top_srcdir)/contrib/contrib-global.mk
endif endif
check:
$(prove_check)
installcheck:
$(prove_installcheck)
...@@ -1303,34 +1303,6 @@ include $(PGXS) ...@@ -1303,34 +1303,6 @@ include $(PGXS)
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><varname>ISOLATION</varname></term>
<listitem>
<para>
list of isolation test cases, see below for more details
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>ISOLATION_OPTS</varname></term>
<listitem>
<para>
additional switches to pass to
<application>pg_isolation_regress</application>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>TAP_TESTS</varname></term>
<listitem>
<para>
switch defining if TAP tests need to be run, see below
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><varname>NO_INSTALLCHECK</varname></term> <term><varname>NO_INSTALLCHECK</varname></term>
<listitem> <listitem>
...@@ -1451,42 +1423,13 @@ make VPATH=/path/to/extension/source/tree install ...@@ -1451,42 +1423,13 @@ make VPATH=/path/to/extension/source/tree install
have all expected files. have all expected files.
</para> </para>
<para>
The scripts listed in the <varname>ISOLATION</varname> variable are used
for tests stressing behavior of concurrent session with your module, which
can be invoked by <literal>make installcheck</literal> after doing
<literal>make install</literal>. For this to work you must have a
running <productname>PostgreSQL</productname> server. The script files
listed in <varname>ISOLATION</varname> must appear in a subdirectory
named <literal>specs/</literal> in your extension's directory. These files
must have extension <literal>.spec</literal>, which must not be included
in the <varname>ISOLATION</varname> list in the makefile. For each test
there should also be a file containing the expected output in a
subdirectory named <literal>expected/</literal>, with the same stem and
extension <literal>.out</literal>. <literal>make installcheck</literal>
executes each test script, and compares the resulting output to the
matching expected file. Any differences will be written to the file
<literal>output_iso/regression.diffs</literal> in
<command>diff -c</command> format. Note that trying to run a test that is
missing its expected file will be reported as <quote>trouble</quote>, so
make sure you have all expected files.
</para>
<para>
<literal>TAP_TESTS</literal> enables the use of TAP tests. Data from each
run is present in a subdirectory named <literal>tmp_check/</literal>.
See also <xref linkend="regress-tap"/> for more details.
</para>
<tip> <tip>
<para> <para>
The easiest way to create the expected files is to create empty files, The easiest way to create the expected files is to create empty files,
then do a test run (which will of course report differences). Inspect then do a test run (which will of course report differences). Inspect
the actual result files found in the <literal>results/</literal> the actual result files found in the <literal>results/</literal>
directory (for tests in <literal>REGRESS</literal>), or directory, then copy them to <literal>expected/</literal> if they match
<literal>output_iso/results/</literal> directory (for tests in what you expect from the test.
<literal>ISOLATION</literal>), then copy them to
<literal>expected/</literal> if they match what you expect from the test.
</para> </para>
</tip> </tip>
......
...@@ -46,9 +46,6 @@ ...@@ -46,9 +46,6 @@
# HEADERS_built_$(MODULE) -- as above but built first (also NOT cleaned) # HEADERS_built_$(MODULE) -- as above but built first (also NOT cleaned)
# REGRESS -- list of regression test cases (without suffix) # REGRESS -- list of regression test cases (without suffix)
# REGRESS_OPTS -- additional switches to pass to pg_regress # REGRESS_OPTS -- additional switches to pass to pg_regress
# TAP_TESTS -- switch to enable TAP tests
# ISOLATION -- list of isolation test cases
# ISOLATION_OPTS -- additional switches to pass to pg_isolation_regress
# NO_INSTALLCHECK -- don't define an installcheck target, useful e.g. if # NO_INSTALLCHECK -- don't define an installcheck target, useful e.g. if
# tests require special configuration, or don't use pg_regress # tests require special configuration, or don't use pg_regress
# EXTRA_CLEAN -- extra files to remove in 'make clean' # EXTRA_CLEAN -- extra files to remove in 'make clean'
...@@ -352,12 +349,6 @@ ifeq ($(PORTNAME), win) ...@@ -352,12 +349,6 @@ ifeq ($(PORTNAME), win)
rm -f regress.def rm -f regress.def
endif endif
endif # REGRESS endif # REGRESS
ifdef TAP_TESTS
rm -rf tmp_check/
endif
ifdef ISOLATION
rm -rf output_iso/ tmp_check_iso/
endif
ifdef MODULE_big ifdef MODULE_big
clean: clean-lib clean: clean-lib
...@@ -392,47 +383,28 @@ $(test_files_build): $(abs_builddir)/%: $(srcdir)/% ...@@ -392,47 +383,28 @@ $(test_files_build): $(abs_builddir)/%: $(srcdir)/%
$(MKDIR_P) $(dir $@) $(MKDIR_P) $(dir $@)
ln -s $< $@ ln -s $< $@
endif # VPATH endif # VPATH
endif # REGRESS
.PHONY: submake .PHONY: submake
submake: submake:
ifndef PGXS ifndef PGXS
$(MAKE) -C $(top_builddir)/src/test/regress pg_regress$(X) $(MAKE) -C $(top_builddir)/src/test/regress pg_regress$(X)
$(MAKE) -C $(top_builddir)/src/test/isolation all
endif endif
# Standard rules to run regression tests including multiple test suites. # against installed postmaster
# Runs against an installed postmaster
ifndef NO_INSTALLCHECK ifndef NO_INSTALLCHECK
installcheck: submake $(REGRESS_PREP) installcheck: submake $(REGRESS_PREP)
ifdef REGRESS
$(pg_regress_installcheck) $(REGRESS_OPTS) $(REGRESS) $(pg_regress_installcheck) $(REGRESS_OPTS) $(REGRESS)
endif endif
ifdef ISOLATION
$(pg_isolation_regress_installcheck) $(ISOLATION_OPTS) $(ISOLATION)
endif
ifdef TAP_TESTS
$(prove_installcheck)
endif
endif # NO_INSTALLCHECK
# Runs independently of any installation
ifdef PGXS ifdef PGXS
check: check:
@echo '"$(MAKE) check" is not supported.' @echo '"$(MAKE) check" is not supported.'
@echo 'Do "$(MAKE) install", then "$(MAKE) installcheck" instead.' @echo 'Do "$(MAKE) install", then "$(MAKE) installcheck" instead.'
else else
check: submake $(REGRESS_PREP) check: submake $(REGRESS_PREP)
ifdef REGRESS
$(pg_regress_check) $(REGRESS_OPTS) $(REGRESS) $(pg_regress_check) $(REGRESS_OPTS) $(REGRESS)
endif endif
ifdef ISOLATION endif # REGRESS
$(pg_isolation_regress_check) $(ISOLATION_OPTS) $(ISOLATION)
endif
ifdef TAP_TESTS
$(prove_check)
endif
endif # PGXS
ifndef NO_TEMP_INSTALL ifndef NO_TEMP_INSTALL
temp-install: EXTRA_INSTALL+=$(subdir) temp-install: EXTRA_INSTALL+=$(subdir)
......
# Generated subdirectories # Generated subdirectories
/output_iso/ /isolation_output/
/tmp_check/ /tmp_check/
# src/test/modules/brin/Makefile # src/test/modules/brin/Makefile
EXTRA_INSTALL = contrib/pageinspect # Note: because we don't tell the Makefile there are any regression tests,
# we have to clean those result files explicitly
EXTRA_CLEAN = $(pg_regress_clean_files) ./isolation_output
ISOLATION = summarization-and-inprogress-insertion EXTRA_INSTALL=contrib/pageinspect
TAP_TESTS = 1
ISOLATIONCHECKS=summarization-and-inprogress-insertion
ifdef USE_PGXS ifdef USE_PGXS
PG_CONFIG = pg_config PG_CONFIG = pg_config
...@@ -15,3 +18,19 @@ top_builddir = ../../../.. ...@@ -15,3 +18,19 @@ top_builddir = ../../../..
include $(top_builddir)/src/Makefile.global include $(top_builddir)/src/Makefile.global
include $(top_srcdir)/contrib/contrib-global.mk include $(top_srcdir)/contrib/contrib-global.mk
endif endif
check: isolation-check prove-check
isolation-check: | submake-isolation temp-install
$(MKDIR_P) isolation_output
$(pg_isolation_regress_check) \
--outputdir=./isolation_output \
$(ISOLATIONCHECKS)
prove-check: | temp-install
$(prove_check)
.PHONY: check isolation-check prove-check
submake-isolation:
$(MAKE) -C $(top_builddir)/src/test/isolation all
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
REGRESS = commit_timestamp REGRESS = commit_timestamp
REGRESS_OPTS = --temp-config=$(top_srcdir)/src/test/modules/commit_ts/commit_ts.conf REGRESS_OPTS = --temp-config=$(top_srcdir)/src/test/modules/commit_ts/commit_ts.conf
TAP_TESTS = 1
ifdef USE_PGXS ifdef USE_PGXS
PG_CONFIG = pg_config PG_CONFIG = pg_config
...@@ -14,3 +13,8 @@ top_builddir = ../../../.. ...@@ -14,3 +13,8 @@ top_builddir = ../../../..
include $(top_builddir)/src/Makefile.global include $(top_builddir)/src/Makefile.global
include $(top_srcdir)/contrib/contrib-global.mk include $(top_srcdir)/contrib/contrib-global.mk
endif endif
check: prove-check
prove-check: | temp-install
$(prove_check)
...@@ -4,12 +4,7 @@ ...@@ -4,12 +4,7 @@
# we have to clean those result files explicitly # we have to clean those result files explicitly
EXTRA_CLEAN = $(pg_regress_clean_files) EXTRA_CLEAN = $(pg_regress_clean_files)
ISOLATION = sto_using_cursor sto_using_select sto_using_hash_index ISOLATIONCHECKS=sto_using_cursor sto_using_select sto_using_hash_index
ISOLATION_OPTS = --temp-config $(top_srcdir)/src/test/modules/snapshot_too_old/sto.conf
# Disabled because these tests require "old_snapshot_threshold" >= 0, which
# typical installcheck users do not have (e.g. buildfarm clients).
NO_INSTALLCHECK = 1
ifdef USE_PGXS ifdef USE_PGXS
PG_CONFIG = pg_config PG_CONFIG = pg_config
...@@ -22,7 +17,31 @@ include $(top_builddir)/src/Makefile.global ...@@ -22,7 +17,31 @@ include $(top_builddir)/src/Makefile.global
include $(top_srcdir)/contrib/contrib-global.mk include $(top_srcdir)/contrib/contrib-global.mk
endif endif
# Disabled because these tests require "old_snapshot_threshold" >= 0, which
# typical installcheck users do not have (e.g. buildfarm clients).
installcheck:;
# But it can nonetheless be very helpful to run tests on preexisting # But it can nonetheless be very helpful to run tests on preexisting
# installation, allow to do so, but only if requested explicitly. # installation, allow to do so, but only if requested explicitly.
installcheck-force: installcheck-force: isolationcheck-install-force
$(pg_isolation_regress_installcheck) $(ISOLATION)
check: isolationcheck
submake-isolation:
$(MAKE) -C $(top_builddir)/src/test/isolation all
submake-test_snapshot_too_old:
$(MAKE) -C $(top_builddir)/src/test/modules/snapshot_too_old
isolationcheck: | submake-isolation submake-test_snapshot_too_old temp-install
$(pg_isolation_regress_check) \
--temp-config $(top_srcdir)/src/test/modules/snapshot_too_old/sto.conf \
$(ISOLATIONCHECKS)
isolationcheck-install-force: all | submake-isolation submake-test_snapshot_too_old temp-install
$(pg_isolation_regress_installcheck) \
$(ISOLATIONCHECKS)
.PHONY: check submake-test_snapshot_too_old isolationcheck isolationcheck-install-force
temp-install: EXTRA_INSTALL=src/test/modules/snapshot_too_old
...@@ -7,7 +7,6 @@ EXTENSION = test_pg_dump ...@@ -7,7 +7,6 @@ EXTENSION = test_pg_dump
DATA = test_pg_dump--1.0.sql DATA = test_pg_dump--1.0.sql
REGRESS = test_pg_dump REGRESS = test_pg_dump
TAP_TESTS = 1
ifdef USE_PGXS ifdef USE_PGXS
PG_CONFIG = pg_config PG_CONFIG = pg_config
...@@ -19,3 +18,8 @@ top_builddir = ../../../.. ...@@ -19,3 +18,8 @@ top_builddir = ../../../..
include $(top_builddir)/src/Makefile.global include $(top_builddir)/src/Makefile.global
include $(top_srcdir)/contrib/contrib-global.mk include $(top_srcdir)/contrib/contrib-global.mk
endif endif
check: prove-check
prove-check: | temp-install
$(prove_check)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment