PG_CPPFLAGS = -I$(libpq_srcdir)
SHLIB_LINK = $(libpq)
-SHLIB_PREREQS = submake-libpq
+
OBJS = \
bdr.o \
bdr_apply.o \
bdr_relcache.o \
bdr_seq.o
-ifndef USE_PGXS
-subdir = contrib/bdr
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
-include $(top_srcdir)/contrib/contrib-global.mk
-else
+# Can only be built using pgxs
+USE_PGXS=1
+
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)
-endif
DATE=$(shell date "+%Y-%m-%d")
GITHASH=$(shell if [ -e .distgitrev ]; then cat .distgitrev; else git rev-parse --short HEAD; fi)
bdr.o: bdr_version.h
-bdr_init_copy: bdr_init_copy.o | submake-libpq submake-libpgport
+bdr_init_copy: bdr_init_copy.o
$(CC) $(CFLAGS) $^ $(LDFLAGS) $(LDFLAGS_EX) $(libpq_pgport) $(LIBS) -o $@$(X)
scripts/bdr_initial_load: scripts/bdr_initial_load.in
# typical installcheck users do not have (e.g. buildfarm clients).
installcheck: ;
-check: all | submake-regress submake-btree_gist submake-pg_trgm submake-cube submake-hstore regresscheck isolationcheck
-
-ifndef USE_PGXS
-submake-regress:
- $(MAKE) -C $(top_builddir)/src/test/regress
-
-submake-isolation: | submake-regress
- $(MAKE) -C $(top_builddir)/src/test/isolation
-
-submake-btree_gist:
- $(MAKE) -C $(top_builddir)/contrib/btree_gist
-
-submake-pg_trgm:
- $(MAKE) -C $(top_builddir)/contrib/pg_trgm
-
-submake-cube:
- $(MAKE) -C $(top_builddir)/contrib/cube
-
-submake-hstore:
- $(MAKE) -C $(top_builddir)/contrib/hstore
+check: regresscheck isolationcheck
REGRESSCHECKS=init \
ddl/create ddl/alter_table ddl/extension ddl/function ddl/grant ddl/namespace ddl/sequence ddl/view \
dml/basic dml/contrib dml/delete_pk dml/extended dml/missing_pk dml/mixed dml/toasted
-regresscheck:
- [ -e pg_hba.conf ] || ln -s $(top_srcdir)/contrib/bdr/pg_hba.conf .
- mkdir -p results/ddl
- mkdir -p results/dml
- $(pg_regress_check) \
- --temp-config $(top_srcdir)/contrib/bdr/bdr_ddlregress.conf \
- --temp-install=./tmp_check \
- --extra-install=contrib/btree_gist \
- --extra-install=contrib/bdr \
- --extra-install=contrib/pg_trgm \
- --extra-install=contrib/cube \
- --extra-install=contrib/hstore \
- $(REGRESSCHECKS)
ISOLATIONCHECKS=\
isolation/waitforstart \
# this test demonstrates a divergent conflict, so deactivate for now
# isolation/update_pk_change_conflict
-isolationcheck: all | submake-isolation submake-btree_gist
+# XXX: Add a check that these are installed
+REQUIRED_EXTENSIONS="btree_gist"
+REQUIRED_TEST_EXTENSIONS="pg_trgm cube hstore"
+
+regresscheck: all install
[ -e pg_hba.conf ] || ln -s $(top_srcdir)/contrib/bdr/pg_hba.conf .
+
+ mkdir -p results/ddl
+ mkdir -p results/dml
+
+ ./run_tests --config bdr_regress.conf \
+ --testbinary src/test/regress/pg_regress \
+ $(REGRESSCHECKS)
+
+isolationcheck: all install
mkdir -p results/isolation
- $(pg_isolation_regress_check) \
- --dbname node1,node2,node3 \
- --temp-config $(top_srcdir)/contrib/bdr/bdr_isolationregress.conf \
- --temp-install=./tmp_check \
- --extra-install=contrib/btree_gist \
- --extra-install=contrib/bdr \
- $(ISOLATIONCHECKS)
+ ./run_tests --config bdr_isolationregress.conf \
+ --testbinary src/test/isolation/pg_isolation_regress \
+ --dbname node1,node2,node3 \
+ $(ISOLATIONCHECKS)
bdr_pgbench_check: bdr_pgbench_check.sh
sed -e 's,@bindir@,$(bindir),g' \
pgbenchcheck: bdr_pgbench_check
./bdr_pgbench_check
-else #USE_PGXS
-
-error-pgxs:
- @echo "Regression checks require an in-tree build in contrib/bdr"
- @echo "You cannot run \"make check\" using pgxs"
- exit 1
-
-submake-regress: ;
-
-submake-btree_gist: ;
-
-submake-pg_trgm: ;
-
-submake-cube: ;
-
-submake-hstore: ;
-
-bdr_pgbench_check: error-pgxs
- ;
-
-regresscheck: error-pgxs
- ;
-
-endif #USE_PGXS
-
distdir = bdr-$(BDR_VERSION)
git-dist: clean
# phony target...
-.PHONY: all check
+.PHONY: all check regresscheck isolationcheck
-listen_addresses = '*'
-max_connections = 20
+include = 'bdr_common_regress.conf'
-shared_preload_libraries = 'bdr'
bdr.connections = 'node1to2,node1to3,node2to3,node2to1,node3to1,node3to2'
bdr.node1to2_dsn = 'dbname=node2'
bdr.node3to2_dsn = 'dbname=node2'
bdr.node3to2_local_dbname = 'node3'
-bdr.permit_unsafe_ddl_commands = false
-
bdr.log_conflicts_to_table = True
bdr.default_apply_delay = 100
-track_commit_timestamp = on
-
-max_wal_senders = 10
-max_replication_slots = 10
-
-wal_level = 'logical'
-
-hba_file = 'pg_hba.conf'
-
-log_min_messages = 'debug4'
-log_line_prefix = 'd=%d p=%p a=%a%q '
+#log_min_messages = 'debug4'
+#log_line_prefix = 'd=%d p=%p a=%a%q '
log_statement = 'all'
max_worker_processes = 18
--- /dev/null
+#!/bin/bash
+
+set -e
+#set -x
+
+BINDIR=$(pg_config --bindir)
+REGRESS_BASE=$(pg_config --libdir)/pgxs/
+DBNAME=regression
+
+mkdir -p tmp_check
+rm -rf tmp_check/data
+rm -rf tmp_check/postmaster.log
+rm -rf tmp_check/initdb.log
+mkdir tmp_check/data
+
+PARSEOPTS=$(getopt \
+ --longoptions testbinary: \
+ --longoptions dbname: \
+ --longoptions config: \
+ -o 'h' -- "$@")
+
+eval set -- "$PARSEOPTS"
+
+
+usage() {
+ echo "run_tests -h --testbinary binary LIST OF TESTS"
+ exit 1
+}
+
+while true ; do
+ case "$1" in
+ -h) usage; shift;;
+ --testbinary) TESTBINARY="$2"; shift;shift;;
+ --dbname) DBNAME="$2"; shift;shift;;
+ --config) CONFIGFILE="$2"; shift;shift;;
+ --) shift ; break ;;
+ *) echo "unknown option $1"; exit 1;;
+ esac
+done
+
+SOCKET=$(pwd)/tmp_check
+PORT=5440
+OPTIONS="-c config_file=${CONFIGFILE}"
+OPTIONS="$OPTIONS -c unix_socket_directories=$SOCKET"
+OPTIONS="$OPTIONS -c listen_addresses=''"
+
+PGHOST=$SOCKET
+PGPORT=$PORT
+
+# create new data directory
+$BINDIR/initdb --nosync tmp_check/data > tmp_check/initdb.log 2>&1
+
+# install trap to shutdown server at failure/exit
+trap "$BINDIR/pg_ctl stop -w -D tmp_check/data" INT QUIT TERM EXIT
+
+#start server
+$BINDIR/pg_ctl start -w -D tmp_check/data -o "$OPTIONS" -l tmp_check/postmaster.log
+
+$REGRESS_BASE/$TESTBINARY \
+ --host $SOCKET \
+ --port $PORT \
+ --dbname $DBNAME \
+ "$@"
+
+exit 0