[5/8] perf test: Add system-wide mode in perf record tests

Message ID 20221020172643.3458767-6-namhyung@kernel.org
State New
Headers
Series perf test: Improve perf record tests (v2) |

Commit Message

Namhyung Kim Oct. 20, 2022, 5:26 p.m. UTC
  Add system wide recording test with the same pattern.  It'd skip the
test when it failes to run perf record.  For system-wide mode, it needs
to avoid build-id collection and synthesis because the test only cares
about the test program and kernel would generates necessary events as
the process starts.

Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
 tools/perf/tests/shell/record.sh | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
  

Comments

Ian Rogers Oct. 21, 2022, midnight UTC | #1
On Thu, Oct 20, 2022 at 10:26 AM Namhyung Kim <namhyung@kernel.org> wrote:
>
> Add system wide recording test with the same pattern.  It'd skip the
> test when it failes to run perf record.  For system-wide mode, it needs

nit: s/failes/fails/

> to avoid build-id collection and synthesis because the test only cares
> about the test program and kernel would generates necessary events as

nit: s/generates/generate the/

> the process starts.
>
> Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>

Acked-by: Ian Rogers <irogers@google.com>

Thanks,
Ian

> ---
>  tools/perf/tests/shell/record.sh | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
>
> diff --git a/tools/perf/tests/shell/record.sh b/tools/perf/tests/shell/record.sh
> index d1640d1daf2e..345764afb745 100755
> --- a/tools/perf/tests/shell/record.sh
> +++ b/tools/perf/tests/shell/record.sh
> @@ -154,10 +154,31 @@ test_register_capture() {
>    echo "Register capture test [Success]"
>  }
>
> +test_system_wide() {
> +  echo "Basic --system-wide mode test"
> +  if ! perf record -aB --synth=no -o "${perfdata}" ${testprog} 2> /dev/null
> +  then
> +    echo "System-wide record [Skipped not supported]"
> +    if [ $err -ne 1 ]
> +    then
> +      err=2
> +    fi
> +    return
> +  fi
> +  if ! perf report -i "${perfdata}" -q | grep -q "${testsym}"
> +  then
> +    echo "System-wide record [Failed missing output]"
> +    err=1
> +    return
> +  fi
> +  echo "Basic --system-wide mode test [Success]"
> +}
> +
>  build_test_program
>
>  test_per_thread
>  test_register_capture
> +test_system_wide
>
>  cleanup
>  exit $err
> --
> 2.38.0.135.g90850a2211-goog
>
  
Arnaldo Carvalho de Melo Oct. 26, 2022, 2:11 p.m. UTC | #2
Em Thu, Oct 20, 2022 at 05:00:39PM -0700, Ian Rogers escreveu:
> On Thu, Oct 20, 2022 at 10:26 AM Namhyung Kim <namhyung@kernel.org> wrote:
> >
> > Add system wide recording test with the same pattern.  It'd skip the
> > test when it failes to run perf record.  For system-wide mode, it needs
> 
> nit: s/failes/fails/
> 
> > to avoid build-id collection and synthesis because the test only cares
> > about the test program and kernel would generates necessary events as
> 
> nit: s/generates/generate the/

fixed
 
> > the process starts.
> >
> > Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>
> > Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> 
> Acked-by: Ian Rogers <irogers@google.com>
> 
> Thanks,
> Ian
> 
> > ---
> >  tools/perf/tests/shell/record.sh | 21 +++++++++++++++++++++
> >  1 file changed, 21 insertions(+)
> >
> > diff --git a/tools/perf/tests/shell/record.sh b/tools/perf/tests/shell/record.sh
> > index d1640d1daf2e..345764afb745 100755
> > --- a/tools/perf/tests/shell/record.sh
> > +++ b/tools/perf/tests/shell/record.sh
> > @@ -154,10 +154,31 @@ test_register_capture() {
> >    echo "Register capture test [Success]"
> >  }
> >
> > +test_system_wide() {
> > +  echo "Basic --system-wide mode test"
> > +  if ! perf record -aB --synth=no -o "${perfdata}" ${testprog} 2> /dev/null
> > +  then
> > +    echo "System-wide record [Skipped not supported]"
> > +    if [ $err -ne 1 ]
> > +    then
> > +      err=2
> > +    fi
> > +    return
> > +  fi
> > +  if ! perf report -i "${perfdata}" -q | grep -q "${testsym}"
> > +  then
> > +    echo "System-wide record [Failed missing output]"
> > +    err=1
> > +    return
> > +  fi
> > +  echo "Basic --system-wide mode test [Success]"
> > +}
> > +
> >  build_test_program
> >
> >  test_per_thread
> >  test_register_capture
> > +test_system_wide
> >
> >  cleanup
> >  exit $err
> > --
> > 2.38.0.135.g90850a2211-goog
> >
  

Patch

diff --git a/tools/perf/tests/shell/record.sh b/tools/perf/tests/shell/record.sh
index d1640d1daf2e..345764afb745 100755
--- a/tools/perf/tests/shell/record.sh
+++ b/tools/perf/tests/shell/record.sh
@@ -154,10 +154,31 @@  test_register_capture() {
   echo "Register capture test [Success]"
 }
 
+test_system_wide() {
+  echo "Basic --system-wide mode test"
+  if ! perf record -aB --synth=no -o "${perfdata}" ${testprog} 2> /dev/null
+  then
+    echo "System-wide record [Skipped not supported]"
+    if [ $err -ne 1 ]
+    then
+      err=2
+    fi
+    return
+  fi
+  if ! perf report -i "${perfdata}" -q | grep -q "${testsym}"
+  then
+    echo "System-wide record [Failed missing output]"
+    err=1
+    return
+  fi
+  echo "Basic --system-wide mode test [Success]"
+}
+
 build_test_program
 
 test_per_thread
 test_register_capture
+test_system_wide
 
 cleanup
 exit $err