selftests/ftrace: Add "requires:" list support
authorMasami Hiramatsu <mhiramat@kernel.org>
Wed, 3 Jun 2020 02:40:28 +0000 (11:40 +0900)
committerShuah Khan <skhan@linuxfoundation.org>
Tue, 16 Jun 2020 15:19:08 +0000 (09:19 -0600)
Introduce "requires:" list to check required ftrace interface
for each test. This will simplify the interface checking code
and unify the error message. Another good point is, it can
skip the ftrace initializing.

Note that this requires list must be written as a shell
comment.

Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Reviewed-by: Tom Zanussi <zanussi@kernel.org>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
tools/testing/selftests/ftrace/ftracetest
tools/testing/selftests/ftrace/test.d/functions
tools/testing/selftests/ftrace/test.d/template

index d3f6652311ef422a74a8aaedf11630e2af93a854..cdf7940b6610a4cde5518a44a7cc989aa8e4f84c 100755 (executable)
@@ -267,6 +267,11 @@ testcase() { # testfile
   prlog -n "[$CASENO]$INSTANCE$desc"
 }
 
+checkreq() { # testfile
+  requires=`grep "^#[ \t]*requires:" $1 | cut -f2- -d:`
+  check_requires $requires
+}
+
 test_on_instance() { # testfile
   grep -q "^#[ \t]*flags:.*instance" $1
 }
@@ -356,7 +361,8 @@ trap 'SIG_RESULT=$XFAIL' $SIG_XFAIL
 
 __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)
+  (cd $TRACING_DIR; read PID _ < /proc/self/stat; set -e; set -x;
+   checkreq $1; initialize_ftrace; . $1)
   [ $? -ne 0 ] && kill -s $SIG_FAIL $SIG_PID
 }
 
index 697c77ef2e2bf0aab7a7abdb470cccf1c3b1da3c..5100eb1ada0f353061442c146da5ba7066d2ddfc 100644 (file)
@@ -113,6 +113,15 @@ initialize_ftrace() { # Reset ftrace to initial-state
     enable_tracing
 }
 
+check_requires() { # Check required files
+    for i in $* ; do
+        if [ ! -e $i ]; then
+            echo "Required feature interface $i doesn't exist."
+            exit_unsupported
+        fi
+    done
+}
+
 LOCALHOST=127.0.0.1
 
 yield() {
index e1a5d14c4eaf7cdeab5169aa0a28b78ba8d125ac..611423c4e75f312e23f3a6d5d08bd0035d806fc4 100644 (file)
@@ -1,6 +1,7 @@
 #!/bin/sh
 # SPDX-License-Identifier: GPL-2.0
 # description: %HERE DESCRIBE WHAT THIS DOES%
+# requires: %HERE LIST THE REQUIRED FILES%
 # you have to add ".tc" extention for your testcase file
 # Note that all tests are run with "errexit" option.