11#! /usr/bin/env bash
22
33#
4- # Copyright (c) 2019-2020 , Postgres Professional
4+ # Copyright (c) 2019-2021 , Postgres Professional
55#
66
7- PG_SRC=$PWD /postgres
7+ PTRACK_SRC=${PWD} /ptrack
8+ PG_SRC=${PWD} /postgres
9+ PBK_SRC=${PWD} /pg_probackup
810status=0
911
10- # curl "https://ftp.postgresql.org/pub/source/v$PG_VERSION/postgresql-$PG_VERSION.tar.bz2" -o postgresql.tar.bz2
11- # echo "$PG_SHA256 *postgresql.tar.bz2" | sha256sum -c -
12-
13- # mkdir $PG_SRC
14-
15- # tar \
16- # --extract \
17- # --file postgresql.tar.bz2 \
18- # --directory $PG_SRC \
19- # --strip-components 1
20-
12+ # ########################################################
2113# Clone Postgres
2214echo " ############### Getting Postgres sources"
23- git clone https://github.com/postgres/postgres.git -b $PG_BRANCH -- depth=1
15+ git clone https://github.com/postgres/postgres.git -- depth=1 --branch= ${PG_BRANCH} ${PG_SRC}
2416
2517# Clone pg_probackup
2618echo " ############### Getting pg_probackup sources"
27- git clone https://github.com/postgrespro/pg_probackup.git --depth=1 -b master
28- # git clone https://github.com/ololobus/pg_probackup.git --depth=1 -b ptrack-tests
19+ git clone https://github.com/postgrespro/pg_probackup.git --depth=1 --branch=master ${PBK_SRC}
2920
21+ # ########################################################
3022# Compile and install Postgres
31- cd postgres # Go to postgres dir
23+ cd ${PG_SRC} # Go to postgres dir
3224
3325echo " ############### Applying ptrack patch"
34- git apply -v -3 .. /patches/$PG_BRANCH -ptrack-core.diff
26+ git apply --verbose --3way ${PTRACK_SRC} /patches/${ PG_BRANCH} -ptrack-core.diff
3527
36- if [ " $MODE " = " paranoia" ]; then
28+ if [ " ${ MODE} " = " paranoia" ]; then
3729 echo " ############### Paranoia mode: applying turn-off-hint-bits.diff"
38- git apply -v -3 .. /patches/turn-off-hint-bits.diff
30+ git apply --verbose --3way ${PTRACK_SRC} /patches/turn-off-hint-bits.diff
3931fi
4032
4133echo " ############### Compiling Postgres"
42- if [ " $TEST_CASE " = " tap" ] && [ " $MODE " = " legacy" ]; then
43- ./configure CFLAGS=' -DEXEC_BACKEND' --disable-atomics --prefix=$PGHOME --enable-debug --enable-cassert --enable-depend --enable-tap-tests
34+ if [ " ${ TEST_CASE} " = " tap" ] && [ " ${ MODE} " = " legacy" ]; then
35+ ./configure CFLAGS=' -DEXEC_BACKEND' --disable-atomics --prefix=${ PGHOME} --enable-debug --enable-cassert --enable-depend --enable-tap-tests --quiet
4436else
45- ./configure --prefix=$PGHOME --enable-debug --enable-cassert --enable-depend --enable-tap-tests
37+ ./configure --prefix=${ PGHOME} --enable-debug --enable-cassert --enable-depend --enable-tap-tests --quiet
4638fi
47- make -s -j $( nproc) install
48- make -s -j $( nproc) -C contrib/ install
39+ make --quiet --jobs= $( nproc) install
40+ make --quiet --jobs= $( nproc) --directory= contrib/ install
4941
5042# Override default Postgres instance
51- export PATH=$PGHOME /bin:$PATH
52- export LD_LIBRARY_PATH=$PGHOME /lib
43+ export PATH=${ PGHOME} /bin:${ PATH}
44+ export LD_LIBRARY_PATH=${ PGHOME} /lib
5345export PG_CONFIG=$( which pg_config)
5446
5547# Show pg_config path (just in case)
@@ -60,48 +52,37 @@ which pg_config
6052echo " ############### pg_config"
6153pg_config
6254
63- # Get amcheck if missing
64- if [ ! -d " contrib/amcheck" ]; then
65- echo " ############### Getting missing amcheck"
66- git clone https://github.com/petergeoghegan/amcheck.git --depth=1 contrib/amcheck
67- make USE_PGXS=1 -C contrib/amcheck install
68- fi
69-
70- # Get back to testdir
71- cd ..
72-
55+ # ########################################################
7356# Build and install ptrack extension
7457echo " ############### Compiling and installing ptrack extension"
58+ cp --recursive ${PTRACK_SRC} ${PG_SRC} /contrib/ptrack
59+ make USE_PGXS=1 PG_CPPFLAGS=" -coverage" SHLIB_LINK=" -coverage" --directory=${PG_SRC} /contrib/ptrack/ install
7560
76- # XXX: Hackish way to make possible to run tap tests
77- mkdir $PG_SRC /contrib/ptrack
78- cp * $PG_SRC /contrib/ptrack/
79- cp -R t $PG_SRC /contrib/ptrack/
80-
81- make USE_PGXS=1 PG_CPPFLAGS=" -coverage" SHLIB_LINK=" -coverage" -C $PG_SRC /contrib/ptrack/ install
82-
83- if [ " $TEST_CASE " = " tap" ]; then
61+ if [ " ${TEST_CASE} " = " tap" ]; then
8462
8563 # Run tap tests
8664 echo " ############### Running tap tests"
87- if [ " $MODE " = " legacy" ]; then
65+ if [ " ${ MODE} " = " legacy" ]; then
8866 # There is a known issue with attaching shared memory segment using the same
8967 # address each time, when EXEC_BACKEND mechanism is turned on. It happens due
9068 # to the ASLR address space randomization, so we are trying to attach a segment
9169 # to the already occupied location. That way we simply turning off ASLR here.
9270 #
9371 # Postgres comment: https://github.com/postgres/postgres/blob/5cbfce562f7cd2aab0cdc4694ce298ec3567930e/src/backend/postmaster/postmaster.c#L4929
94- setarch x86_64 --addr-no-randomize make -C postgres /contrib/ptrack check || status=$?
72+ setarch x86_64 --addr-no-randomize make --directory= ${PG_SRC} /contrib/ptrack check || status=$?
9573 else
96- make -C postgres /contrib/ptrack check || status=$?
74+ make --directory= ${PG_SRC} /contrib/ptrack check || status=$?
9775 fi
9876
9977else
78+ # Set kernel params (used for debugging -- probackup tests)
79+ echo " ############### setting kernel params"
80+ sudo sh -c ' echo 0 > /proc/sys/kernel/yama/ptrace_scope'
10081
10182 # Build and install pg_probackup
10283 echo " ############### Compiling and installing pg_probackup"
103- cd pg_probackup # Go to pg_probackup dir
104- make USE_PGXS=1 top_srcdir=$PG_SRC install
84+ cd ${PBK_SRC} # Go to pg_probackup dir
85+ make USE_PGXS=1 top_srcdir=${ PG_SRC} install
10586
10687 # Setup python environment
10788 echo " ############### Setting up python env"
@@ -110,35 +91,36 @@ else
11091 pip install testgres==1.8.2
11192
11293 echo " ############### Testing"
113- if [ " $MODE " = " basic" ]; then
94+ export PG_PROBACKUP_PTRACK=ON
95+ if [ " ${MODE} " = " basic" ]; then
11496 export PG_PROBACKUP_TEST_BASIC=ON
115- elif [ " $MODE " = " paranoia" ]; then
97+ elif [ " ${ MODE} " = " paranoia" ]; then
11698 export PG_PROBACKUP_PARANOIA=ON
11799 fi
118100
119- export PG_PROBACKUP_PTRACK=ON
120- if [ " $TEST_CASE " = " all" ]; then
101+ if [ " ${TEST_CASE} " = " all" ]; then
121102 # Run all pg_probackup ptrack tests
122- python3 -m unittest -v tests.ptrack || status= $?
103+ PBK_TEST_CASE= tests.ptrack
123104 else
124- for i in ` seq $TEST_REPEATS ` ; do
125- python3 -m unittest -v tests.ptrack.PtrackTest.$TEST_CASE || status=$?
126- done
105+ PBK_TEST_CASE=tests.ptrack.PtrackTest.${TEST_CASE}
127106 fi
107+ for i in ` seq ${TEST_REPEATS} ` ; do
108+ python3 -m unittest -v ${PBK_TEST_CASE} || status=$?
109+ done
128110
129111 # Exit virtualenv
130112 deactivate
131-
132- # Get back to testdir
133- cd ..
134-
135113fi
136114
115+ # ########################################################
116+ # codecov
117+ echo " ############### Codecov"
118+ cd ${PTRACK_SRC}
137119# Generate *.gcov files
138- gcov $PG_SRC /contrib/ptrack/* .c $PG_SRC /contrib/ptrack/* .h
120+ gcov ${ PG_SRC} /contrib/ptrack/* .c ${ PG_SRC} /contrib/ptrack/* .h
139121
140122# Send coverage stats to Codecov
141123bash <( curl -s https://codecov.io/bash)
142124
143125# Something went wrong, exit with code 1
144- if [ $status -ne 0 ]; then exit 1; fi
126+ if [ ${ status} -ne 0 ]; then exit 1; fi
0 commit comments