Implement this for local daemons integration tests, dumping last 100
lines of logs. This makes it possible to debug some failures in
automated tests where the logs are unavailable for analysis.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
-e Exit on the first test failure
-H No headers - for running single test with other wrapper
-I <count> Iterate tests <count> times, exiting on failure (implies -e, -N)
-e Exit on the first test failure
-H No headers - for running single test with other wrapper
-I <count> Iterate tests <count> times, exiting on failure (implies -e, -N)
+ -L Print daemon logs on test failure (only some tests)
-N Don't print summary of tests results after running all tests
-q Quiet - don't show tests being run (still displays summary)
-S <lib> Use socket wrapper library <lib> for local integration tests
-N Don't print summary of tests results after running all tests
-q Quiet - don't show tests being run (still displays summary)
-S <lib> Use socket wrapper library <lib> for local integration tests
export TEST_COMMAND_TRACE=false
export TEST_CAT_RESULTS_OPTS=""
export TEST_DIFF_RESULTS=false
export TEST_COMMAND_TRACE=false
export TEST_CAT_RESULTS_OPTS=""
export TEST_DIFF_RESULTS=false
+export CTDB_TEST_PRINT_LOGS_ON_ERROR=false
export TEST_LOCAL_DAEMONS
[ -n "$TEST_LOCAL_DAEMONS" ] || TEST_LOCAL_DAEMONS=3
export TEST_SOCKET_WRAPPER_SO_PATH=""
export TEST_LOCAL_DAEMONS
[ -n "$TEST_LOCAL_DAEMONS" ] || TEST_LOCAL_DAEMONS=3
export TEST_SOCKET_WRAPPER_SO_PATH=""
-while getopts "AcCDehHI:NqS:T:vV:xX?" opt ; do
+while getopts "AcCDehHI:LNqS:T:vV:xX?" opt ; do
case "$opt" in
A) TEST_CAT_RESULTS_OPTS="-A" ;;
c) TEST_LOCAL_DAEMONS="" ;;
case "$opt" in
A) TEST_CAT_RESULTS_OPTS="-A" ;;
c) TEST_LOCAL_DAEMONS="" ;;
e) exit_on_fail=true ;;
H) no_header=true ;;
I) max_iterations="$OPTARG" ; exit_on_fail=true ; with_summary=false ;;
e) exit_on_fail=true ;;
H) no_header=true ;;
I) max_iterations="$OPTARG" ; exit_on_fail=true ; with_summary=false ;;
+ L) CTDB_TEST_PRINT_LOGS_ON_ERROR=true ;;
N) with_summary=false ;;
q) quiet=true ;;
S) TEST_SOCKET_WRAPPER_SO_PATH="$OPTARG" ;;
N) with_summary=false ;;
q) quiet=true ;;
S) TEST_SOCKET_WRAPPER_SO_PATH="$OPTARG" ;;
rm -vf "${CTDB_BASE}/events/legacy/"*
done
fi
rm -vf "${CTDB_BASE}/events/legacy/"*
done
fi
+
+ if $CTDB_TEST_PRINT_LOGS_ON_ERROR ; then
+ ctdb_test_exit_hook_add _print_logs_on_test_failure
+ fi
{
$ctdb_local_daemons onnode "$@"
}
{
$ctdb_local_daemons onnode "$@"
}
+
+_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
+
+ echo "*** LOG START --------------------"
+ $ctdb_local_daemons print-log all | tail -n 100
+ echo "*** LOG END --------------------"
+}