129d97deeSIan Rogers#!/bin/bash
24a87dea9SIan Rogers# perf all metrics test
34a87dea9SIan Rogers# SPDX-License-Identifier: GPL-2.0
44a87dea9SIan Rogers
500236a2dSIan Rogerserr=0
64a87dea9SIan Rogersfor m in $(perf list --raw-dump metrics); do
74a87dea9SIan Rogers  echo "Testing $m"
84a87dea9SIan Rogers  result=$(perf stat -M "$m" true 2>&1)
9*a6bdb815SBarnali Guha Thakurata  if [[ "$result" =~ ${m:0:50} ]] || [[ "$result" =~ "<not supported>" ]]
1029d97deeSIan Rogers  then
1129d97deeSIan Rogers    continue
1229d97deeSIan Rogers  fi
1329d97deeSIan Rogers  # Failed so try system wide.
14f9fa0778SKajol Jain  result=$(perf stat -M "$m" -a sleep 0.01 2>&1)
15*a6bdb815SBarnali Guha Thakurata  if [[ "$result" =~ ${m:0:50} ]]
1629d97deeSIan Rogers  then
1729d97deeSIan Rogers    continue
1829d97deeSIan Rogers  fi
1929d97deeSIan Rogers  # Failed again, possibly the workload was too small so retry with something
2029d97deeSIan Rogers  # longer.
214a87dea9SIan Rogers  result=$(perf stat -M "$m" perf bench internals synthesize 2>&1)
22*a6bdb815SBarnali Guha Thakurata  if [[ "$result" =~ ${m:0:50} ]]
2329d97deeSIan Rogers  then
2429d97deeSIan Rogers    continue
2529d97deeSIan Rogers  fi
264a87dea9SIan Rogers  echo "Metric '$m' not printed in:"
274a87dea9SIan Rogers  echo "$result"
2829d97deeSIan Rogers  if [[ "$err" != "1" ]]
2929d97deeSIan Rogers  then
3000236a2dSIan Rogers    err=2
3129d97deeSIan Rogers    if [[ "$result" =~ "FP_ARITH" || "$result" =~ "AMX" ]]
3229d97deeSIan Rogers    then
3329d97deeSIan Rogers      echo "Skip, not fail, for FP issues"
3429d97deeSIan Rogers    elif [[ "$result" =~ "PMM" ]]
3529d97deeSIan Rogers    then
3629d97deeSIan Rogers      echo "Skip, not fail, for Optane memory issues"
3700236a2dSIan Rogers    else
3800236a2dSIan Rogers      err=1
3900236a2dSIan Rogers    fi
404a87dea9SIan Rogers  fi
414a87dea9SIan Rogersdone
424a87dea9SIan Rogers
4300236a2dSIan Rogersexit "$err"
44