ctdb-tests: Shutdown local daemons if the tests exit abnormally
authorAmitay Isaacs <amitay@gmail.com>
Fri, 4 Jul 2014 07:04:10 +0000 (17:04 +1000)
committerAmitay Isaacs <amitay@samba.org>
Tue, 8 Jul 2014 08:17:54 +0000 (10:17 +0200)
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Pair-Programmed-With: Martin Schwenke <martin@meltin.net>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
ctdb/tests/run_tests.sh

index 2ff11ff35aa4ca5719fc3434777d533b2e037529..d705ac17e9fd6310eaf24697315e30cd490d77b8 100755 (executable)
@@ -261,6 +261,29 @@ if [ -z "$1" ] ; then
     fi
 fi
 
+do_cleanup ()
+{
+    if $TEST_CLEANUP ; then
+       echo "Removing TEST_VAR_DIR=$TEST_VAR_DIR"
+       rm -rf "$TEST_VAR_DIR"
+    else
+       echo "Not cleaning up TEST_VAR_DIR=$TEST_VAR_DIR"
+    fi
+}
+
+cleanup_handler ()
+{
+    if $TEST_CLEANUP ; then
+       if [ -n "$TEST_LOCAL_DAEMONS" -a "$f" = "simple" ] ; then
+           echo "***** shutting down daemons *****"
+           find_and_run_one_test simple/99_daemons_shutdown.sh "$tests_dir"
+       fi
+    fi
+    do_cleanup
+}
+
+trap cleanup_handler SIGINT SIGTERM
+
 for f ; do
     find_and_run_one_test "$f"
 
@@ -295,12 +318,7 @@ rm -f "$sf"
 
 echo
 
-if $TEST_CLEANUP ; then
-    echo "Removing TEST_VAR_DIR=$TEST_VAR_DIR"
-    rm -rf "$TEST_VAR_DIR"
-else
-    echo "Not cleaning up TEST_VAR_DIR=$TEST_VAR_DIR"
-fi
+do_cleanup
 
 if $no_header || $exit_on_fail ; then
     exit $status