On Thu, 10 Jul 2025 13:01:34 +0000
Tengda Wu <wuten...@huaweicloud.com> wrote:


> 
> Fixes: 1a4ea83a6e67 ("selftests/ftrace: Limit length in subsystem-enable 
> tests")
> Signed-off-by: Tengda Wu <wuten...@huaweicloud.com>
> ---
>  .../selftests/ftrace/test.d/event/subsystem-enable.tc     | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc 
> b/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc
> index b7c8f29c09a9..3a28adc7b727 100644
> --- a/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc
> +++ b/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc
> @@ -19,8 +19,8 @@ echo 'sched:*' > set_event
>  yield
>  
>  count=`head -n 100 trace | grep -v ^# | awk '{ print $5 }' | sort -u | wc -l`
> -if [ $count -lt 3 ]; then
> -    fail "at least fork, exec and exit events should be recorded"
> +if [ $count -eq 0 ]; then
> +    fail "none of scheduler events are recorded"
>  fi
>  
>  do_reset
> @@ -30,8 +30,8 @@ echo 1 > events/sched/enable
>  yield
>  
>  count=`head -n 100 trace | grep -v ^# | awk '{ print $5 }' | sort -u | wc -l`
> -if [ $count -lt 3 ]; then
> -    fail "at least fork, exec and exit events should be recorded"
> +if [ $count -eq 0 ]; then
> +    fail "none of scheduler events are recorded"

So if there's a bug that causes the system enable to only enable a
single event, this will no longer catch it?

I rather not let the slide.

Can you test this to see if this works for you?

-- Steve

diff --git a/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc 
b/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc
index b7c8f29c09a9..46a9e6d92730 100644
--- a/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc
+++ b/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc
@@ -14,11 +14,32 @@ fail() { #msg
     exit_fail
 }
 
+check_unique() {
+    cat trace_pipe | grep -v '^#' | awk '
+       BEGIN { cnt = 0; }
+       {
+           for (i = 0; i < cnt; i++) {
+               if (event[i] == $5) {
+                   break;
+               }
+           }
+           if (i == cnt) {
+               event[cnt++] = $5;
+               if (cnt > 2) {
+                   exit;
+               }
+           }
+       }
+       END {
+           printf "%d", cnt;
+       }'
+}
+
 echo 'sched:*' > set_event
 
 yield
 
-count=`head -n 100 trace | grep -v ^# | awk '{ print $5 }' | sort -u | wc -l`
+count=`check_unique`
 if [ $count -lt 3 ]; then
     fail "at least fork, exec and exit events should be recorded"
 fi
@@ -29,7 +50,7 @@ echo 1 > events/sched/enable
 
 yield
 
-count=`head -n 100 trace | grep -v ^# | awk '{ print $5 }' | sort -u | wc -l`
+count=`check_unique`
 if [ $count -lt 3 ]; then
     fail "at least fork, exec and exit events should be recorded"
 fi

Reply via email to