Messages in this thread Patch in this message | | | Date | Fri, 21 Apr 2017 10:41:44 -0400 | From | Steven Rostedt <> | Subject | [PATCH v2] selftests: ftrace: Allow some tests to be run in a tracing instance |
| |
An tracing instance has several of the same capabilities as the top level instance, but may be implemented slightly different. Instead of just writing tests that duplicat the same test cases of the top level instance, allow a test to be written for both the top level as well as for an instance.
If a test case can be run in both the top level as well as in an tracing instance directory, then it should add a tag "# flags: instance" in the header of the test file. Then after all tests have run, any test that has an instance flag set, will run again within a tracing instance.
Cc: Shuah Khan <shuah@kernel.org> Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> ---
Changes since v1: (comments from Masami Hiramatsu)
Use test flag instead of file name change. Remove -i option to run_test function Use global variable to denote instance running Update TRACING_DIR instead of cd'ing to another directory.
tools/testing/selftests/ftrace/ftracetest | 40 +++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+)
diff --git a/tools/testing/selftests/ftrace/ftracetest b/tools/testing/selftests/ftrace/ftracetest index a8631d9..9992ff6 100755 --- a/tools/testing/selftests/ftrace/ftracetest +++ b/tools/testing/selftests/ftrace/ftracetest @@ -157,6 +157,15 @@ testcase() { # testfile prlog -n "[$CASENO]$desc" } +INSTANCE=0 +testinstance() { # testfile + if grep -q '^#[ \t]*flags:.*instance' $1 ; then + INSTANCE=1 + else + INSTANCE=0 + fi +} + eval_result() { # sigval case $1 in $PASS) @@ -233,18 +242,26 @@ exit_xfail () { } trap 'SIG_RESULT=$XFAIL' $SIG_XFAIL +INSTANCE_DIR="." __run_test() { # testfile # setup PID and PPID, $$ is not updated. (cd $TRACING_DIR; read PID _ < /proc/self/stat; set -e; set -x; initialize_ftrace; . $1) [ $? -ne 0 ] && kill -s $SIG_FAIL $SIG_PID } +TEST_INSTANCES=0 + # Run one test case run_test() { # testfile local testname=`basename $1` local testlog=`mktemp $LOG_DIR/${testname}-log.XXXXXX` export TMPDIR=`mktemp -d /tmp/ftracetest-dir.XXXXXX` testcase $1 + local SAVE_TRACING_DIR=$TRACING_DIR + if [ $TEST_INSTANCES -eq 1 ]; then + TRACING_DIR=$TRACING_DIR/instances/${testname}_test_$$ + mkdir $TRACING_DIR + fi echo "execute: "$1 > $testlog SIG_RESULT=0 if [ $VERBOSE -ge 2 ]; then @@ -260,17 +277,40 @@ run_test() { # testfile [ $VERBOSE -ge 1 ] && catlog $testlog TOTAL_RESULT=1 fi + if [ $TEST_INSTANCES -eq 1 ]; then + rmdir $TRACING_DIR + fi + TRACING_DIR=$SAVE_TRACING_DIR rm -rf $TMPDIR } # load in the helper functions . $TEST_DIR/functions +RUN_INSTANCES=0 + # Main loop for t in $TEST_CASES; do + testinstance $t + if [ $INSTANCE -eq 1 ]; then + RUN_INSTANCES=1 + fi run_test $t done +TEST_INSTANCES=1 + +if [ $RUN_INSTANCES -eq 1 ]; then + echo "Running tests in a tracing instance:" + for t in $TEST_CASES; do + testinstance $t + if [ $INSTANCE -eq 0 ]; then + continue + fi + run_test $t + done +fi + prlog "" prlog "# of passed: " `echo $PASSED_CASES | wc -w` prlog "# of failed: " `echo $FAILED_CASES | wc -w` -- 2.9.3
| |