#!/bin/bash

echo Preparing...

if ! [ -a postgresql ]; then
  git clone git://git.postgresql.org/git/postgresql.git;
fi
cd postgresql
git checkout REL_10_0
cd ..

if ! [ -a rum ]; then
  git clone https://github.com/postgrespro/rum
fi

rm -rf postgresql_correctness
cp -r postgresql postgresql_correctness
cp -r rum postgresql_correctness/contrib

cd postgresql_correctness
patch -p1 < ../generic_xlog_diffdelta_v1.patch
cd ..

test_postgresql_versions="postgresql_correctness"
test_contribs="rum bloom"

prefix=`pwd`

port=5845

for postgresql in $test_postgresql_versions; do
  echo Testing $postgresql...
  rm -rf db_$postgresql
  rm -rf bin_$postgresql
  rm -f log_${postgresql}.log

  cd $postgresql
  ./configure --prefix=$prefix/bin_$postgresql --enable-cassert --enable-debug --enable-nls --with-pgport=$port CFLAGS="-DWAL_DEBUG" > /dev/null
  make -j4 > /dev/null
  make install > /dev/null
  for contrib in $test_contribs; do
    cd contrib/$contrib
    make -j4 > /dev/null
    make install > /dev/null
    cd ../..;
  done
  cd ..

  bin_$postgresql/bin/initdb -D db_$postgresql > /dev/null 2> /dev/null
  echo "wal_debug = on" >> db_$postgresql/postgresql.conf

  bin_$postgresql/bin/pg_ctl -D db_$postgresql -l log_${postgresql}.log start
  while !(bin_$postgresql/bin/psql --port $port -d postgres -c "SELECT 1;" > /dev/null 2> /dev/null); do
    sleep 1;
  done

  #cd $postgresql
  #PGPORT=$port time make installcheck
  #cd ..

  for contrib in $test_contribs; do
    cd $postgresql/contrib/$contrib
    PGPORT=$port time make installcheck
    cd ../../..;
  done

  bin_$postgresql/bin/pg_ctl -D db_$postgresql -l log_${postgresql}.log stop
done
