ctdb-tests: Extend eventscript unit test infrastructure for other scripts
authorMartin Schwenke <martin@meltin.net>
Fri, 27 Feb 2015 04:19:04 +0000 (15:19 +1100)
committerAmitay Isaacs <amitay@samba.org>
Wed, 4 Mar 2015 09:42:26 +0000 (10:42 +0100)
There's so much infrastructure here that it would be a shame not to
use it for testing things like statd-callout.

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
ctdb/tests/eventscripts/scripts/local.sh

index 54a065c76a3b87d564d6b1dc94785eca5dc1a9cf..c3cd6a071d8b4eb94b6dcf18bdae2be92b45dcae 100644 (file)
@@ -993,19 +993,32 @@ define_test ()
     # Remaining format should be NN.service.event.NNN or NN.service.NNN:
     _num="${_f##*.}"
     _f="${_f%.*}"
+
     case "$_f" in
-       *.*.*)
+       [0-9][0-9].*.*)
            script="${_f%.*}"
            event="${_f##*.}"
+           script_dir="${CTDB_BASE}/events.d"
            ;;
-       *.*)
+       [0-9][0-9].*)
            script="$_f"
            unset event
+           script_dir="${CTDB_BASE}/events.d"
+           ;;
+       *.*)
+           script="${_f%.*}"
+           event="${_f##*.}"
+           script_dir="${CTDB_BASE}"
            ;;
        *)
-           die "Internal error - unknown testcase filename format"
+           script="${_f%.*}"
+           unset event
+           script_dir="${CTDB_BASE}"
     esac
 
+    [ -x "${script_dir}/${script}" ] || \
+       die "Internal error - unable to find script \"${script_dir}/${script}\""
+
     printf "%-17s %-10s %-4s - %s\n\n" "$script" "$event" "$_num" "$desc"
 }
 
@@ -1030,14 +1043,14 @@ simple_test ()
 
     _extra_header=$(_extra_header)
 
-    echo "Running eventscript \"$script $event${1:+ }$*\""
+    echo "Running script \"$script $event${1:+ }$*\""
     _shell=""
     if $TEST_COMMAND_TRACE ; then
        _shell="sh -x"
     else
        _shell="sh"
     fi
-    _out=$($_shell "${CTDB_BASE}/events.d/$script" "$event" "$@" 2>&1)
+    _out=$($_shell "${script_dir}/${script}" "$event" "$@" 2>&1)
 
     result_check "$_extra_header"
 }
@@ -1123,7 +1136,7 @@ iterate_test ()
        else
            _shell="sh"
        fi
-       _out=$($_shell "${CTDB_BASE}/events.d/$script" "$event" $args 2>&1)
+       _out=$($_shell "${script_dir}/${script}" "$event" $args 2>&1)
        _rc=$?
 
        _fout=$(echo "$_out" | result_filter)