Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests/tracing: Fix event filter test to retry up to 10 times

Commit eb50d0f250e9 ("selftests/ftrace: Choose target function for filter
test from samples") choose the target function from samples, but sometimes
this test failes randomly because the target function does not hit at the
next time. So retry getting samples up to 10 times.

Fixes: eb50d0f250e9 ("selftests/ftrace: Choose target function for filter test from samples")
Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>

authored by

Masami Hiramatsu (Google) and committed by
Shuah Khan
0f42bdf5 cb708ab9

+19 -1
+19 -1
tools/testing/selftests/ftrace/test.d/filter/event-filter-function.tc
··· 10 10 } 11 11 12 12 sample_events() { 13 - echo > trace 14 13 echo 1 > events/kmem/kmem_cache_free/enable 15 14 echo 1 > tracing_on 16 15 ls > /dev/null ··· 21 22 echo 0 > events/enable 22 23 23 24 echo "Get the most frequently calling function" 25 + echo > trace 24 26 sample_events 25 27 26 28 target_func=`cat trace | grep -o 'call_site=\([^+]*\)' | sed 's/call_site=//' | sort | uniq -c | sort | tail -n 1 | sed 's/^[ 0-9]*//'` ··· 32 32 33 33 echo "Test event filter function name" 34 34 echo "call_site.function == $target_func" > events/kmem/kmem_cache_free/filter 35 + 35 36 sample_events 37 + max_retry=10 38 + while [ `grep kmem_cache_free trace| wc -l` -eq 0 ]; do 39 + sample_events 40 + max_retry=$((max_retry - 1)) 41 + if [ $max_retry -eq 0 ]; then 42 + exit_fail 43 + fi 44 + done 36 45 37 46 hitcnt=`grep kmem_cache_free trace| grep $target_func | wc -l` 38 47 misscnt=`grep kmem_cache_free trace| grep -v $target_func | wc -l` ··· 58 49 59 50 echo "Test event filter function address" 60 51 echo "call_site.function == 0x$address" > events/kmem/kmem_cache_free/filter 52 + echo > trace 61 53 sample_events 54 + max_retry=10 55 + while [ `grep kmem_cache_free trace| wc -l` -eq 0 ]; do 56 + sample_events 57 + max_retry=$((max_retry - 1)) 58 + if [ $max_retry -eq 0 ]; then 59 + exit_fail 60 + fi 61 + done 62 62 63 63 hitcnt=`grep kmem_cache_free trace| grep $target_func | wc -l` 64 64 misscnt=`grep kmem_cache_free trace| grep -v $target_func | wc -l`