[PATCH v1] perf test: Add basic callgraph test to record testing

Ian Rogers posted 1 patch 3 months, 3 weeks ago
There is a newer version of this series
tools/perf/tests/shell/record.sh | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
[PATCH v1] perf test: Add basic callgraph test to record testing
Posted by Ian Rogers 3 months, 3 weeks ago
Give some basic perf record callgraph coverage.

Signed-off-by: Ian Rogers <irogers@google.com>
---
 tools/perf/tests/shell/record.sh | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/tools/perf/tests/shell/record.sh b/tools/perf/tests/shell/record.sh
index 2022a4f739be..603fa6b79b5d 100755
--- a/tools/perf/tests/shell/record.sh
+++ b/tools/perf/tests/shell/record.sh
@@ -12,8 +12,10 @@ shelldir=$(dirname "$0")
 . "${shelldir}"/lib/perf_has_symbol.sh
 
 testsym="test_loop"
+testsym2="brstack"
 
 skip_test_missing_symbol ${testsym}
+skip_test_missing_symbol ${testsym2}
 
 err=0
 perfdata=$(mktemp /tmp/__perf_test.perf.data.XXXXX)
@@ -359,6 +361,23 @@ test_precise_max() {
   fi
 }
 
+test_callgraph() {
+  echo "Callgraph test"
+  if ! perf record -o "${perfdata}" -g perf test -w brstack
+  then
+    echo "Callgraph test [Failed missing output]"
+    err=1
+    return
+  fi
+  if ! perf report -i "${perfdata}" 2>&1 | grep "${testsym2}"
+  then
+    echo "Callgraph test [Failed missing symbol]"
+    err=1
+    return
+  fi
+  echo "Callgraph test [Success]"
+}
+
 # raise the limit of file descriptors to minimum
 if [[ $default_fd_limit -lt $min_fd_limit ]]; then
        ulimit -Sn $min_fd_limit
@@ -374,6 +393,7 @@ test_uid
 test_leader_sampling
 test_topdown_leader_sampling
 test_precise_max
+test_callgraph
 
 # restore the default value
 ulimit -Sn $default_fd_limit
-- 
2.50.0.rc2.701.gf1e915cc24-goog
Re: [PATCH v1] perf test: Add basic callgraph test to record testing
Posted by James Clark 3 months, 3 weeks ago

On 19/06/2025 1:24 am, Ian Rogers wrote:
> Give some basic perf record callgraph coverage.
> 
> Signed-off-by: Ian Rogers <irogers@google.com>
> ---
>   tools/perf/tests/shell/record.sh | 20 ++++++++++++++++++++
>   1 file changed, 20 insertions(+)
> 
> diff --git a/tools/perf/tests/shell/record.sh b/tools/perf/tests/shell/record.sh
> index 2022a4f739be..603fa6b79b5d 100755
> --- a/tools/perf/tests/shell/record.sh
> +++ b/tools/perf/tests/shell/record.sh
> @@ -12,8 +12,10 @@ shelldir=$(dirname "$0")
>   . "${shelldir}"/lib/perf_has_symbol.sh
>   
>   testsym="test_loop"
> +testsym2="brstack"
>   
>   skip_test_missing_symbol ${testsym}
> +skip_test_missing_symbol ${testsym2}
>   
>   err=0
>   perfdata=$(mktemp /tmp/__perf_test.perf.data.XXXXX)
> @@ -359,6 +361,23 @@ test_precise_max() {
>     fi
>   }
>   
> +test_callgraph() {
> +  echo "Callgraph test"
> +  if ! perf record -o "${perfdata}" -g perf test -w brstack

Looking at 2dac1f089 ("perf test: Fix 'perf script' tests on s390"), it 
looks like this won't work there. Although I'm not sure why the fix 
wasn't to change the default -g mode to dwarf on s390 if fp doesn't work 
at all. That wouldn't fix -e cpu-clock being required though.

Thanks
James
Re: [PATCH v1] perf test: Add basic callgraph test to record testing
Posted by Namhyung Kim 3 months, 2 weeks ago
On Thu, Jun 19, 2025 at 09:24:04AM +0100, James Clark wrote:
> 
> 
> On 19/06/2025 1:24 am, Ian Rogers wrote:
> > Give some basic perf record callgraph coverage.
> > 
> > Signed-off-by: Ian Rogers <irogers@google.com>
> > ---
> >   tools/perf/tests/shell/record.sh | 20 ++++++++++++++++++++
> >   1 file changed, 20 insertions(+)
> > 
> > diff --git a/tools/perf/tests/shell/record.sh b/tools/perf/tests/shell/record.sh
> > index 2022a4f739be..603fa6b79b5d 100755
> > --- a/tools/perf/tests/shell/record.sh
> > +++ b/tools/perf/tests/shell/record.sh
> > @@ -12,8 +12,10 @@ shelldir=$(dirname "$0")
> >   . "${shelldir}"/lib/perf_has_symbol.sh
> >   testsym="test_loop"
> > +testsym2="brstack"
> >   skip_test_missing_symbol ${testsym}
> > +skip_test_missing_symbol ${testsym2}
> >   err=0
> >   perfdata=$(mktemp /tmp/__perf_test.perf.data.XXXXX)
> > @@ -359,6 +361,23 @@ test_precise_max() {
> >     fi
> >   }
> > +test_callgraph() {
> > +  echo "Callgraph test"
> > +  if ! perf record -o "${perfdata}" -g perf test -w brstack
> 
> Looking at 2dac1f089 ("perf test: Fix 'perf script' tests on s390"), it
> looks like this won't work there. Although I'm not sure why the fix wasn't
> to change the default -g mode to dwarf on s390 if fp doesn't work at all.
> That wouldn't fix -e cpu-clock being required though.

Maybe we can add a new 'perf check callchain' subcommand to check the
relevant information and display and/or verify them properly.

Thanks,
Namhyung