[PATCH v1] perf test: Add cputype testing to perf stat

Ian Rogers posted 1 patch 2 years, 9 months ago
tools/perf/tests/shell/stat.sh | 44 ++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+)
[PATCH v1] perf test: Add cputype testing to perf stat
Posted by Ian Rogers 2 years, 9 months ago
Check a bogus PMU fails and that a known PMU succeeds. Limit to PMUs
known cpu, cpu_atom and armv8_pmuv3_0 ones.

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

diff --git a/tools/perf/tests/shell/stat.sh b/tools/perf/tests/shell/stat.sh
index b154fbb15d54..3f1e67795490 100755
--- a/tools/perf/tests/shell/stat.sh
+++ b/tools/perf/tests/shell/stat.sh
@@ -103,10 +103,54 @@ test_topdown_weak_groups() {
   echo "Topdown weak groups test [Success]"
 }
 
+test_cputype() {
+  # Test --cputype argument.
+  echo "cputype test"
+
+  # Bogus PMU should fail.
+  if perf stat --cputype="123" -e instructions true > /dev/null 2>&1
+  then
+    echo "cputype test [Bogus PMU didn't fail]"
+    err=1
+    return
+  fi
+
+  # Find a known PMU for cputype.
+  pmu=""
+  for i in cpu cpu_atom armv8_pmuv3_0
+  do
+    if test -d "/sys/devices/$i"
+    then
+      pmu="$i"
+      break
+    fi
+    if perf stat -e "$i/instructions/" true > /dev/null 2>&1
+    then
+      pmu="$i"
+      break
+    fi
+  done
+  if test "x$pmu" = "x"
+  then
+    echo "cputype test [Skipped known PMU not found]"
+    return
+  fi
+
+  # Test running with cputype produces output.
+  if ! perf stat --cputype="$pmu" -e instructions true 2>&1 | grep -E -q "instructions"
+  then
+    echo "cputype test [Failed count missed with given filter]"
+    err=1
+    return
+  fi
+  echo "cputype test [Success]"
+}
+
 test_default_stat
 test_stat_record_report
 test_stat_record_script
 test_stat_repeat_weak_groups
 test_topdown_groups
 test_topdown_weak_groups
+test_cputype
 exit $err
-- 
2.40.1.606.ga4b1b128d6-goog
Re: [PATCH v1] perf test: Add cputype testing to perf stat
Posted by Arnaldo Carvalho de Melo 2 years, 8 months ago
Em Fri, May 12, 2023 at 11:34:47PM -0700, Ian Rogers escreveu:
> Check a bogus PMU fails and that a known PMU succeeds. Limit to PMUs
> known cpu, cpu_atom and armv8_pmuv3_0 ones.

Thanks, applied.

- Arnaldo

 
> Signed-off-by: Ian Rogers <irogers@google.com>
> ---
>  tools/perf/tests/shell/stat.sh | 44 ++++++++++++++++++++++++++++++++++
>  1 file changed, 44 insertions(+)
> 
> diff --git a/tools/perf/tests/shell/stat.sh b/tools/perf/tests/shell/stat.sh
> index b154fbb15d54..3f1e67795490 100755
> --- a/tools/perf/tests/shell/stat.sh
> +++ b/tools/perf/tests/shell/stat.sh
> @@ -103,10 +103,54 @@ test_topdown_weak_groups() {
>    echo "Topdown weak groups test [Success]"
>  }
>  
> +test_cputype() {
> +  # Test --cputype argument.
> +  echo "cputype test"
> +
> +  # Bogus PMU should fail.
> +  if perf stat --cputype="123" -e instructions true > /dev/null 2>&1
> +  then
> +    echo "cputype test [Bogus PMU didn't fail]"
> +    err=1
> +    return
> +  fi
> +
> +  # Find a known PMU for cputype.
> +  pmu=""
> +  for i in cpu cpu_atom armv8_pmuv3_0
> +  do
> +    if test -d "/sys/devices/$i"
> +    then
> +      pmu="$i"
> +      break
> +    fi
> +    if perf stat -e "$i/instructions/" true > /dev/null 2>&1
> +    then
> +      pmu="$i"
> +      break
> +    fi
> +  done
> +  if test "x$pmu" = "x"
> +  then
> +    echo "cputype test [Skipped known PMU not found]"
> +    return
> +  fi
> +
> +  # Test running with cputype produces output.
> +  if ! perf stat --cputype="$pmu" -e instructions true 2>&1 | grep -E -q "instructions"
> +  then
> +    echo "cputype test [Failed count missed with given filter]"
> +    err=1
> +    return
> +  fi
> +  echo "cputype test [Success]"
> +}
> +
>  test_default_stat
>  test_stat_record_report
>  test_stat_record_script
>  test_stat_repeat_weak_groups
>  test_topdown_groups
>  test_topdown_weak_groups
> +test_cputype
>  exit $err
> -- 
> 2.40.1.606.ga4b1b128d6-goog
> 

-- 

- Arnaldo