diff options
author | Pavel Raiskup <praiskup@redhat.com> | 2014-10-22 08:54:05 +0200 |
---|---|---|
committer | Pavel Raiskup <praiskup@redhat.com> | 2014-10-22 08:54:05 +0200 |
commit | 2422a081a5be0d5ac5afb122361bc283da67341f (patch) | |
tree | cb255582060af6547dd9318c56ba0e8c761846a1 /postgresql-tests/lib_pgsql.sh | |
parent | 922089746e1029de9be986672fcdeb6bc82e18d7 (diff) | |
download | postgresql-setup-tests-2422a081a5be0d5ac5afb122361bc283da67341f.tar.gz postgresql-setup-tests-2422a081a5be0d5ac5afb122361bc283da67341f.tar.xz postgresql-setup-tests-2422a081a5be0d5ac5afb122361bc283da67341f.zip |
big reorg: prepare for generalization
Try to split into three separate components -> controller, tester,
and 'tasks' (postgresql-tasks in our case). The controller
component is the main part which is able to run the task remotely.
Tester is more-like library for 'tasks' component (should be
reusable on the raw git level).
* controller: Almost separated component.
* postgresql-tasks: Likewise.
* tester: Likewise.
Diffstat (limited to 'postgresql-tests/lib_pgsql.sh')
-rw-r--r-- | postgresql-tests/lib_pgsql.sh | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/postgresql-tests/lib_pgsql.sh b/postgresql-tests/lib_pgsql.sh new file mode 100644 index 0000000..13bfc82 --- /dev/null +++ b/postgresql-tests/lib_pgsql.sh @@ -0,0 +1,157 @@ +# PostgreSQL related helper functions. + +# PostgreSQL tests require beakerlib: +# https://fedorahosted.org/beakerlib/ + +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +dtf_postgresql_check_started() +{ + service postgresql status &>/dev/null + rlAssertEquals "service postgresql should be started" $? 0 +} + +dtf_postgresql_check_stopped() +{ + service postgresql status &>/dev/null + rlAssertEquals "service postgresql should be stopped" $? 3 +} + +dtf_postgresql_phase_cleanup() +{ + rlPhaseStartCleanup + rlServiceStop postgresql + dtf_postgresql_check_stopped + rlRun "rm -rf /var/lib/pgsql/data" + rlPhaseEnd +} + +dtf_postgresql_checkphase() +{ + rlPhaseStart FAIL "Check" + rlAssertRpm postgresql-server + + dtf_postgresql_check_stopped + + rlAssertNotExists "/var/lib/pgsql/data/PG_VERSION" + + rlAssert0 "run under root user" "$(id -u)" + + rlGetPhaseState + test $? -gt 0 \ + && echo >&2 "Check phase failed." && exit 1 + rlPhaseEnd +} + +dtf_postgresql_test_init() +{ + rlJournalStart + dtf_postgresql_checkphase + rlPhaseStartTest +} + +dtf_postgresql_test_finish() +{ + rlPhaseEnd + dtf_generate_results_tarball "$BEAKERLIB_DIR" + dtf_postgresql_phase_cleanup + rlJournalEnd + rlGetTestState || return 1 +} + +dtf_postgresql_unpack_remote_data() +( + local tarball="$1" + cd /var/lib/pgsql || return 1 + set -o pipefail + echo "downloading '$tarball'" + curl "$tarball" | tar -xzf - +) + +# Detect current distribution and print set of "distro version action" lines +# where DISTRO may be rhel/fedora, VERSION may be e.g. 6.6 for rhel or 20 for +# Fedora. ACTION is either run or upgrade and it means whether currently +# installed PostgreSQL server is able to RUN the older data from DISTRO-VERSION +# or it should be first UPGRADEd. +# +# What versions are currently in Fedoras: +# f17(9.1.9); f18(9.2.5); f19(9.2.9); f20(9.3.5); f21(9.3.5); +# rawhide(9.3.5) + +dtf_postgresql_upgrade_matrix() +{ + if rlIsFedora 19; then + # echo fedora 17 upgrade + # echo fedora 18 run + echo fedora 19 run + elif rlIsFedora 20; then + # echo fedora 18 upgrade + echo fedora 19 upgrade + echo fedora 20 run + elif rlIsFedora 21; then + echo fedora 19 upgrade + echo fedora 20 run + echo fedora 21 run + elif rlIsFedora 22; then + echo fedora 19 upgrade + echo fedora 20 run + echo fedora 21 run + echo fedora 22 run + fi +} + +dtf_postgresql_cb_upgrade() +{ + local dashdash="" + if rlIsFedora 22; then + dashdash="--" + fi + rlRun "postgresql-setup $dashdash""upgrade" +} + +dtf_postgresql_cb_upgrade_select() +{ + cat +} + +dtf_postgresql_upgrade_tour() +{ + local arch=$(uname -i) + local rv=0 + + items="$(dtf_postgresql_upgrade_matrix | dtf_postgresql_cb_upgrade_select)" + test "$items" = "$(:)" && return 0 + + while read distro version action; do + echo "--> Performing upgrade: $distro-$version - $action" + + url="$1/$distro/$version/$arch/$2" + + dtf_postgresql_unpack_remote_data "$url" || return 1 + + case "$action" in + upgrade) + dtf_postgresql_cb_upgrade + if test $? -ne 0; then + rv=1 + find /var/lib/pgsql -maxdepth 1 -name '*.log' | \ + while read line; do + echo "====== reading log $line ======" + cat "$line" + done + fi + ;; + *) + ;; + esac + + rlServiceStart postgresql + dtf_postgresql_check_started + rlServiceStop postgresql + dtf_postgresql_check_stopped + + rm -rf /var/lib/pgsql/data + done <<<"$items" + + return $rv +} |