btrfs-progs: tests: add support for command instrumentation
authorDavid Sterba <dsterba@suse.com>
Mon, 26 Oct 2015 14:03:37 +0000 (15:03 +0100)
committerDavid Sterba <dsterba@suse.com>
Mon, 2 Nov 2015 08:35:07 +0000 (09:35 +0100)
Add a way to wrap commands executed by the tests. This means the
common wrappers: run_check, run_check_stdout and run_mayfail , with the
exception of the use root_helper.

The contents of the shell variable INSTRUMENT are prepended to the
command, without quotes. Use with care.

Example: this has been tested with valgrind, the output goes to the
RESULTS file.

 $ INSTRUMENT=valgrind make test-misc

Any use of root_helper/SUDO_HELPER will skip the instrumentation.

Signed-off-by: David Sterba <dsterba@suse.com>
tests/common

index 4542fa8..ea9a569 100644 (file)
@@ -25,7 +25,11 @@ run_check()
 {
        echo "############### $@" >> $RESULTS 2>&1
        if [ "$TEST_LOG" = 'tty' ]; then echo "CMD: $@" > /dev/tty; fi
-       "$@" >> $RESULTS 2>&1 || _fail "failed: $@"
+       if [ "$1" = 'root_helper' ]; then
+               "$@" >> $RESULTS 2>&1 || _fail "failed: $@"
+       else
+               $INSTRUMENT "$@" >> $RESULTS 2>&1 || _fail "failed: $@"
+       fi
 }
 
 # same as run_check but the stderr+stdout output is duplicated on stdout and
@@ -34,7 +38,11 @@ run_check_stdout()
 {
        echo "############### $@" >> $RESULTS 2>&1
        if [ "$TEST_LOG" = 'tty' ]; then echo "CMD(stdout): $@" > /dev/tty; fi
-       "$@" 2>&1 | tee -a $RESULTS || _fail "failed: $@"
+       if [ "$1" = 'root_helper' ]; then
+               "$@" 2>&1 | tee -a $RESULTS || _fail "failed: $@"
+       else
+               $INSTRUMENT "$@" 2>&1 | tee -a $RESULTS || _fail "failed: $@"
+       fi
 }
 
 # same as run_check but does not fail the test, output is logged
@@ -42,7 +50,11 @@ run_mayfail()
 {
        echo "############### $@" >> $RESULTS 2>&1
        if [ "$TEST_LOG" = 'tty' ]; then echo "CMD(mayfail): $@" > /dev/tty; fi
-       "$@" >> $RESULTS 2>&1 || _log "failed (ignored): $@"
+       if [ "$1" = 'root_helper' ]; then
+               "$@" >> $RESULTS 2>&1 || _log "failed (ignored): $@"
+       else
+               $INSTRUMENT "$@" >> $RESULTS 2>&1 || _log "failed (ignored): $@"
+       fi
 }
 
 check_prereq()