add missing script
Version: 9.4.1209-1
This commit is contained in:
parent
df7c1ce59f
commit
8a374e609a
173
postgres-testing.sh
Normal file
173
postgres-testing.sh
Normal file
@ -0,0 +1,173 @@
|
||||
#! /bin/sh
|
||||
|
||||
# Do some "integration" testing against running PostgreSQL server.
|
||||
|
||||
# This file is to be sourced.
|
||||
|
||||
: ${PGTESTS_DATADIR=`pwd`/datadir}
|
||||
: ${PGTESTS_ADMIN=`id -u -n`}
|
||||
: ${PGTESTS_ADMINDB=$PGTESTS_ADMIN}
|
||||
: ${PGTESTS_ADMINPASS=$PGTESTS_ADMIN}
|
||||
: ${PGTESTS_PORT=54321}
|
||||
: ${PGTESTS_SOCKETDIR=/tmp}
|
||||
: ${PGTESTS_USERS=test:test}
|
||||
: ${PGTESTS_DATABASES=test:test}
|
||||
|
||||
# Stop the old cluster and/or remove it's data.
|
||||
: ${PGTESTS_STARTCLEANUP=:}
|
||||
|
||||
# Cleanup once we exit the script.
|
||||
: ${PGTESTS_CLEANUP=:}
|
||||
|
||||
# Cleanup once we exit the script.
|
||||
: ${PGTESTS_CLEANUP=:}
|
||||
|
||||
export PGPORT=$PGTESTS_PORT
|
||||
export PGHOST=$PGTESTS_SOCKETDIR
|
||||
|
||||
warning ()
|
||||
{
|
||||
echo >&2 " ! $*"
|
||||
}
|
||||
|
||||
|
||||
__trap_cb ()
|
||||
{
|
||||
IFS=' '
|
||||
for __func in $__TRAP_ACTIONS
|
||||
do
|
||||
$__func
|
||||
done
|
||||
}
|
||||
trap __trap_cb EXIT
|
||||
|
||||
|
||||
__pgtests_initdb ()
|
||||
{
|
||||
initdb "$PGTESTS_DATADIR" -U "$PGTESTS_ADMIN" \
|
||||
--auth-local=peer --auth-host=md5 \
|
||||
${PGTESTS_LOCALE+--locale="$PGTESTS_LOCALE"}
|
||||
}
|
||||
|
||||
|
||||
__pgtests_start ()
|
||||
{
|
||||
pg_ctl -D "$PGTESTS_DATADIR" -l "$PGTESTS_DATADIR"/start.log start -o "-k $PGTESTS_SOCKETDIR -p $PGTESTS_PORT" -w
|
||||
}
|
||||
|
||||
|
||||
__pgtests_create_admins_db ()
|
||||
{
|
||||
createdb -h "$PGTESTS_SOCKETDIR" "$PGTESTS_ADMINDB" --owner "$PGTESTS_ADMIN" -p "$PGTESTS_PORT"
|
||||
}
|
||||
|
||||
|
||||
__pgtests_passwd()
|
||||
{
|
||||
psql -d postgres --set=user="$1" --set=pass="$2" -tA \
|
||||
<<<"ALTER USER :\"user\" WITH ENCRYPTED PASSWORD :'pass';"
|
||||
}
|
||||
|
||||
pgtests_start ()
|
||||
{
|
||||
unset __TRAP_ACTIONS
|
||||
|
||||
if $PGTESTS_STARTCLEANUP; then
|
||||
# We don't plan to be serious here. This pgtests_* effort is just to
|
||||
# ease _testing_ against running postgresql server without too much
|
||||
# writing.
|
||||
if test -f "$PGTESTS_DATADIR"/postmaster.pid; then
|
||||
# Give it a try.
|
||||
warning "Seems like server works, trying to stop."
|
||||
pg_ctl stop -D "$PGTESTS_DATADIR" -w
|
||||
fi
|
||||
|
||||
# Cleanup testing directory
|
||||
if test -e "$PGTESTS_DATADIR"; then
|
||||
warning "Removing old data directory."
|
||||
rm -r "$PGTESTS_DATADIR"
|
||||
fi
|
||||
fi
|
||||
|
||||
__pgtests_initdb && __TRAP_ACTIONS="pgtests_cleanup $__TRAP_ACTIONS"
|
||||
__pgtests_start && __TRAP_ACTIONS="pgtests_stop $__TRAP_ACTIONS"
|
||||
__pgtests_create_admins_db
|
||||
|
||||
__pgtests_passwd "$PGTESTS_ADMIN" "$PGTESTS_ADMINPASS"
|
||||
|
||||
|
||||
for _pgt_user in $PGTESTS_USERS
|
||||
do
|
||||
save_IFS=$IFS
|
||||
IFS=:
|
||||
_user=
|
||||
_pass=
|
||||
for _part in $_pgt_user
|
||||
do
|
||||
if test -z "$_user"; then
|
||||
_user=$_part
|
||||
else
|
||||
_pass=$_part
|
||||
fi
|
||||
done
|
||||
|
||||
createuser "$_user"
|
||||
__pgtests_passwd "$_user" "$_pass"
|
||||
IFS=$save_IFS
|
||||
done
|
||||
|
||||
|
||||
for _pgt_db in $PGTESTS_DATABASES
|
||||
do
|
||||
save_IFS=$IFS
|
||||
IFS=:
|
||||
_db=
|
||||
_user=
|
||||
for _part in $_pgt_db
|
||||
do
|
||||
if test -z "$_user"; then
|
||||
_user=$_part
|
||||
else
|
||||
_db=$_part
|
||||
fi
|
||||
done
|
||||
|
||||
createdb "$_db" --owner "$_part"
|
||||
|
||||
IFS=$save_IFS
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
__clean_trap_action ()
|
||||
{
|
||||
__new_actions=
|
||||
for __action in $__TRAP_ACTIONS
|
||||
do
|
||||
if test "$__action" = "$1"; then
|
||||
:
|
||||
else
|
||||
__new_actions="$__action $__new_actions"
|
||||
fi
|
||||
done
|
||||
|
||||
__TRAP_ACTIONS=$__new_actions
|
||||
}
|
||||
|
||||
|
||||
pgtests_cleanup ()
|
||||
{
|
||||
if $PGTESTS_CLEANUP && $PGTESTS_AUTOSTOP; then
|
||||
rm -r "$PGTESTS_DATADIR"
|
||||
fi
|
||||
__clean_trap_action pgtests_cleanup
|
||||
}
|
||||
|
||||
|
||||
pgtests_stop ()
|
||||
{
|
||||
if $PGTESTS_AUTOSTOP; then
|
||||
pg_ctl stop -D "$PGTESTS_DATADIR" -w
|
||||
fi
|
||||
__clean_trap_action pgtests_stop
|
||||
}
|
Loading…
Reference in New Issue
Block a user