1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-08 21:18:16 +03:00
samba-mirror/ctdb/tests/scripts/integration_local_daemons.bash
Martin Schwenke 455d931a16 ctdb-tests: Dump logs on shutdown failure
Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
2020-02-18 02:56:38 +00:00

96 lines
1.8 KiB
Bash

# Hey Emacs, this is a -*- shell-script -*- !!! :-)
hdir="$CTDB_SCRIPTS_HELPER_BINDIR"
export CTDB_EVENT_HELPER="${hdir}/ctdb-event"
if $CTDB_TESTS_ARE_INSTALLED ; then
# Find it in $PATH
helper="ctdb_local_daemons"
else
helper="${CTDB_TEST_DIR}/local_daemons.sh"
fi
ctdb_local_daemons="${helper} ${CTDB_TEST_TMP_DIR}"
#######################################
setup_ctdb ()
{
local no_event_scripts=false
# All other options are passed through to local_daemons.sh setup
case "$1" in
--no-event-scripts) no_event_scripts=true ; shift ;;
esac
$ctdb_local_daemons setup "$@" \
-n "$CTDB_TEST_LOCAL_DAEMONS" \
${CTDB_USE_IPV6:+-6} \
${CTDB_TEST_SWRAP_SO_PATH:+-S ${CTDB_TEST_SWRAP_SO_PATH}}
# Burying the above in an if-statement condition reduces readability.
# shellcheck disable=SC2181
if [ $? -ne 0 ] ; then
exit 1
fi
if $no_event_scripts ; then
# Want CTDB_BASE expanded when executed under onnode
# shellcheck disable=SC2016
$ctdb_local_daemons onnode -q all \
'rm "${CTDB_BASE}/events/legacy/"*'
fi
if $CTDB_TEST_PRINT_LOGS_ON_ERROR ; then
ctdb_test_exit_hook_add _print_logs_on_test_failure
fi
}
ctdb_nodes_start ()
{
local nodespec="${1:-all}"
$ctdb_local_daemons start "$nodespec"
}
ctdb_nodes_stop ()
{
local nodespec="${1:-all}"
if $ctdb_local_daemons stop "$nodespec" ; then
return 0
fi
# Failed, dump logs?
if $CTDB_TEST_PRINT_LOGS_ON_ERROR ; then
_print_logs
fi
# Next level up can log the error...
return 1
}
onnode ()
{
$ctdb_local_daemons onnode "$@"
}
_print_logs ()
{
echo "*** LOG START --------------------"
$ctdb_local_daemons print-log all | tail -n 500
echo "*** LOG END --------------------"
}
_print_logs_on_test_failure ()
{
# This is called from ctdb_test_exit() where $status is available
# shellcheck disable=SC2154
if [ "$status" -eq 0 ] ; then
return
fi
_print_logs
}