Support regression testing with postgres on non-default port

[from github handle-remote-attendees branch]
This commit is contained in:
Andrew McMillan 2013-10-25 23:36:35 +13:00 committed by Florian Schlichting
parent 8e9eaa3410
commit 9580da622a
2 changed files with 38 additions and 23 deletions

View File

@ -38,20 +38,22 @@ fi
export AWL_DBAUSER=davical_dba
export AWL_APPUSER=davical_app
# set -x
# Get the major version for PostgreSQL
export DBVERSION="`psql -qXAt -c "SELECT version();" template1 | cut -f2 -d' ' | cut -f1-2 -d'.'`"
export DBVERSION="`psql -qXAt ${PSQLOPTS} -c "SELECT version();" template1 | cut -f2 -d' ' | cut -f1-2 -d'.'`"
install_note() {
cat >>"${INSTALL_NOTE_FN}"
}
db_users() {
psql -qXAt -c "SELECT usename FROM pg_user;" template1
psql -qXAt ${PSQLOPTS} -c "SELECT usename FROM pg_user;" template1
}
create_db_user() {
if ! db_users | grep "^${1}$" >/dev/null ; then
psql -qXAt -c "CREATE USER ${1} NOCREATEDB NOCREATEROLE;" template1
psql -qXAt ${PSQLOPTS} -c "CREATE USER ${1} NOCREATEDB NOCREATEROLE;" template1
cat <<EONOTE | install_note
* You will need to edit the PostgreSQL pg_hba.conf to allow the
'${1}' database user access to the 'davical' database.
@ -61,13 +63,13 @@ EONOTE
}
create_plpgsql_language() {
if ! psql ${DBA} -qXAt -c "SELECT lanname FROM pg_language;" "${DBNAME}" | grep "^plpgsql$" >/dev/null; then
createlang plpgsql "${DBNAME}"
if ! psql ${DBA} -qXAt ${PSQLOPTS} -c "SELECT lanname FROM pg_language;" "${DBNAME}" | grep "^plpgsql$" >/dev/null; then
createlang ${PSQLOPTS} plpgsql "${DBNAME}"
fi
}
try_db_user() {
[ "XtestX`psql -U "${1}" -qXAt -c \"SELECT usename FROM pg_user;\" \"${DBNAME}\" 2>/dev/null`" != "XtestX" ]
[ "XtestX`psql -U "${1}" -qXAt ${PSQLOPTS} -c \"SELECT usename FROM pg_user;\" \"${DBNAME}\" 2>/dev/null`" != "XtestX" ]
}
# Hide all the annoying NOTICE... messages
@ -77,7 +79,7 @@ create_db_user "${AWL_DBAUSER}"
create_db_user "${AWL_APPUSER}"
# FIXME: Need to check that the database was actually created.
if ! createdb --encoding UTF8 --template template0 --owner "${AWL_DBAUSER}" "${DBNAME}" ; then
if ! createdb --encoding UTF8 --template template0 --owner "${AWL_DBAUSER}" ${PSQLOPTS} "${DBNAME}" ; then
echo "Unable to create database"
exit 1
fi
@ -122,16 +124,16 @@ create_plpgsql_language
#
# Load the AWL base tables and schema management tables
psql -qXAt ${DBA} -f "${AWLDIR}/dba/awl-tables.sql" "${DBNAME}" 2>&1
psql -qXAt ${DBA} -f "${AWLDIR}/dba/schema-management.sql" "${DBNAME}" 2>&1
psql -qXAt ${PSQLOPTS} ${DBA} -f "${AWLDIR}/dba/awl-tables.sql" "${DBNAME}" 2>&1
psql -qXAt ${PSQLOPTS} ${DBA} -f "${AWLDIR}/dba/schema-management.sql" "${DBNAME}" 2>&1
#
# Load the DAViCal tables
psql -qXAt ${DBA} -f "${DBADIR}/davical.sql" "${DBNAME}" 2>&1
psql -qXAt ${PSQLOPTS} ${DBA} -f "${DBADIR}/davical.sql" "${DBNAME}" 2>&1
#
# Set permissions for the application DB user on the database
if ! ${DBADIR}/update-davical-database --dbname "${DBNAME}" --appuser "${AWL_APPUSER}" --nopatch --owner "${AWL_DBAUSER}" ; then
if ! ${DBADIR}/update-davical-database ${DBAOPTS} --dbname "${DBNAME}" --appuser "${AWL_APPUSER}" --nopatch --owner "${AWL_DBAUSER}" ; then
cat <<EOFAILURE
* * * * ERROR * * * *
The database administration utility failed. This may be due to database
@ -148,7 +150,7 @@ EOFAILURE
fi
#
# Load the required base data
psql -qXAt ${DBA} -f "${DBADIR}/base-data.sql" "${DBNAME}" | egrep -v '^10'
psql -qXAt ${PSQLOPTS} ${DBA} -f "${DBADIR}/base-data.sql" "${DBNAME}" | egrep -v '^10'
#
# We can override the admin password generation for regression testing predictability
@ -172,7 +174,7 @@ if [ "$ADMINPW" = "" ] ; then
ADMINPW="please change this password"
fi
psql -qX ${DBA} -c "UPDATE usr SET password = '**${ADMINPW}' WHERE user_no = 1;" "${DBNAME}"
psql -qX ${PSQLOPTS} ${DBA} -c "UPDATE usr SET password = '**${ADMINPW}' WHERE user_no = 1;" "${DBNAME}"
echo "NOTE"
echo "===="

View File

@ -14,16 +14,29 @@ ALLSUITES="regression-suite binding carddav scheduling timezone"
. ./regression.conf
[ -z "${DSN}" ] && DSN="${DBNAME}"
if [ -z "${DSN}" ]; then
DSN="${DBNAME}"
[ -n "${PGPORT}" ] && DSN="${DSN};port=${PGPORT}"
fi
[ -n "${HOSTNAME}" ] && WEBHOST="--webhost ${HOSTNAME}"
[ -n "${ALTHOST}" ] && ALTHOST="--althost ${ALTHOST}"
if [ -z "${PSQLOPTS}" ]; then
[ -n "${PGPORT}" ] && PSQLOPTS="${PSQLOPTS} --port ${PGPORT}"
[ -n "${PGHOST}" ] && PSQLOPTS="${PSQLOPTS} --host ${PGHOST}"
export PSQLOPTS
[ -n "${PGPORT}" ] && DBAOPTS="${DBAOPTS} --dbport ${PGPORT}"
[ -n "${PGHOST}" ] && DBAOPTS="${DBAOPTS} --dbhost ${PGHOST}"
export DBAOPTS
fi
SUITE=${1:-"regression-suite"}
ACCEPT_ALL=${2:-""}
[ -z "${UNTIL}" ] && UNTIL=99999
[ -z "${SUITE}" ] && SUITE="regression-suite"
# psql ${PSQLOPTS} -l
check_result() {
@ -89,14 +102,14 @@ check_result() {
}
drop_database() {
dropdb $1
dropdb $PSQLOPTS $1
if psql -ltA | cut -f1 -d'|' | grep "^$1$" >/dev/null ; then
# Restart PGPool to ensure we can drop and recreate the database
# FIXME: We should really drop everything *from* the database and create it
# from that, so we don't need to do this.
[ "${PGPOOL}" = "inactive" ] || sudo /etc/init.d/pgpool restart
dropdb $1
if psql -ltA | cut -f1 -d'|' | grep "^$1$" >/dev/null ; then
dropdb $PSQLOPTS $1
if psql -ltA $PSQLOPTS | cut -f1 -d'|' | grep "^$1$" >/dev/null ; then
echo "Failed to drop $1 database"
exit 1
fi
@ -108,15 +121,15 @@ restore_database() {
drop_database ${DBNAME}
TEST="Restore-Database"
createdb --owner davical_dba --encoding UTF8 ${DBNAME} >"${RESULTS}/${TEST}" 2>&1
psql ${DBNAME} -q -f "${REGRESSION}/initial.dbdump" >>"${RESULTS}/${TEST}" 2>&1
createdb --owner davical_dba --encoding UTF8 $PSQLOPTS ${DBNAME} >"${RESULTS}/${TEST}" 2>&1
psql $PSQLOPTS ${DBNAME} -q -f "${REGRESSION}/initial.dbdump" >>"${RESULTS}/${TEST}" 2>&1
check_result "${TEST}"
}
dump_database() {
TEST="Dump-Database"
pg_dump -Fp ${DBNAME} > "${REGRESSION}/initial.dbdump" 2>&1
pg_dump -Fp $PSQLOPTS ${DBNAME} > "${REGRESSION}/initial.dbdump" 2>&1
}
@ -128,17 +141,17 @@ initialise_regression() {
check_result "${TEST}"
TEST="Upgrade-Database"
../dba/update-davical-database --dbname=${DBNAME} --nopatch --appuser davical_app --owner davical_dba >"${RESULTS}/${TEST}" 2>&1
../dba/update-davical-database ${DBAOPTS} --dbname=${DBNAME} --nopatch --appuser davical_app --owner davical_dba >"${RESULTS}/${TEST}" 2>&1
check_result "${TEST}"
if [ -f "${REGRESSION}/sample-data.sql" ]; then
TEST="Load-Sample-Data"
psql -q -f "${REGRESSION}/sample-data.sql" "${DBNAME}" >"${RESULTS}/${TEST}" 2>&1
psql -q -f "${REGRESSION}/sample-data.sql" $PSQLOPTS "${DBNAME}" >"${RESULTS}/${TEST}" 2>&1
check_result "${TEST}"
fi
TEST="Really-Upgrade-Database"
../dba/update-davical-database --dbname=${DBNAME} --appuser davical_app --owner davical_dba >"${RESULTS}/${TEST}" 2>&1
../dba/update-davical-database ${DBAOPTS} --dbname=${DBNAME} --appuser davical_app --owner davical_dba >"${RESULTS}/${TEST}" 2>&1
check_result "${TEST}"
}