1#!/bin/bash
2# perf all metrics test
3# SPDX-License-Identifier: GPL-2.0
4
5err=0
6for m in $(perf list --raw-dump metrics); do
7  echo "Testing $m"
8  result=$(perf stat -M "$m" true 2>&1)
9  if [[ "$result" =~ "${m:0:50}" ]] || [[ "$result" =~ "<not supported>" ]]
10  then
11    continue
12  fi
13  # Failed so try system wide.
14  result=$(perf stat -M "$m" -a sleep 0.01 2>&1)
15  if [[ "$result" =~ "${m:0:50}" ]]
16  then
17    continue
18  fi
19  # Failed again, possibly the workload was too small so retry with something
20  # longer.
21  result=$(perf stat -M "$m" perf bench internals synthesize 2>&1)
22  if [[ "$result" =~ "${m:0:50}" ]]
23  then
24    continue
25  fi
26  echo "Metric '$m' not printed in:"
27  echo "$result"
28  if [[ "$err" != "1" ]]
29  then
30    err=2
31    if [[ "$result" =~ "FP_ARITH" || "$result" =~ "AMX" ]]
32    then
33      echo "Skip, not fail, for FP issues"
34    elif [[ "$result" =~ "PMM" ]]
35    then
36      echo "Skip, not fail, for Optane memory issues"
37    else
38      err=1
39    fi
40  fi
41done
42
43exit "$err"
44