mirror of
https://gitlab.com/davical-project/davical.git
synced 2026-08-24 17:36:39 +00:00
Support regression testing with postgres on non-default port
[from github handle-remote-attendees branch]
This commit is contained in:
parent
8e9eaa3410
commit
9580da622a
@ -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 "===="
|
||||
|
||||
@ -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}"
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user