ctdb-tests: Add run_tests.sh option to print logs on test failure
authorMartin Schwenke <martin@meltin.net>
Thu, 17 Oct 2019 04:53:09 +0000 (15:53 +1100)
committerRalph Boehme <slow@samba.org>
Tue, 22 Oct 2019 19:39:40 +0000 (19:39 +0000)
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>
ctdb/tests/run_tests.sh
ctdb/tests/scripts/integration_local_daemons.bash

index c162aa54bc48a563283fec05eea0914d4f257816..8304443b1962ef8e1589f982c23a67aff001396b 100755 (executable)
@@ -12,6 +12,7 @@ Options:
   -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
@@ -44,11 +45,12 @@ export TEST_VERBOSE=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=""
 
-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="" ;;
@@ -57,6 +59,7 @@ while getopts "AcCDehHI:NqS:T:vV:xX?" opt ; do
        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" ;;
index 327c69a9ea9a2820f4ae0f0ba38737e80b49c724..ec9c477bb0fc73c35d40faca251a69541456ccfc 100644 (file)
@@ -39,6 +39,10 @@ setup_ctdb ()
                        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
 }
 
 start_ctdb_1 ()
@@ -75,3 +79,16 @@ 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   --------------------"
+}