162306a36Sopenharmony_ci#!/bin/bash
262306a36Sopenharmony_ci# perf all metrics test
362306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
462306a36Sopenharmony_ci
562306a36Sopenharmony_cierr=0
662306a36Sopenharmony_cifor m in $(perf list --raw-dump metrics); do
762306a36Sopenharmony_ci  echo "Testing $m"
862306a36Sopenharmony_ci  result=$(perf stat -M "$m" true 2>&1)
962306a36Sopenharmony_ci  if [[ "$result" =~ ${m:0:50} ]] || [[ "$result" =~ "<not supported>" ]]
1062306a36Sopenharmony_ci  then
1162306a36Sopenharmony_ci    continue
1262306a36Sopenharmony_ci  fi
1362306a36Sopenharmony_ci  # Failed so try system wide.
1462306a36Sopenharmony_ci  result=$(perf stat -M "$m" -a sleep 0.01 2>&1)
1562306a36Sopenharmony_ci  if [[ "$result" =~ ${m:0:50} ]]
1662306a36Sopenharmony_ci  then
1762306a36Sopenharmony_ci    continue
1862306a36Sopenharmony_ci  fi
1962306a36Sopenharmony_ci  # Failed again, possibly the workload was too small so retry with something
2062306a36Sopenharmony_ci  # longer.
2162306a36Sopenharmony_ci  result=$(perf stat -M "$m" perf bench internals synthesize 2>&1)
2262306a36Sopenharmony_ci  if [[ "$result" =~ ${m:0:50} ]]
2362306a36Sopenharmony_ci  then
2462306a36Sopenharmony_ci    continue
2562306a36Sopenharmony_ci  fi
2662306a36Sopenharmony_ci  echo "Metric '$m' not printed in:"
2762306a36Sopenharmony_ci  echo "$result"
2862306a36Sopenharmony_ci  if [[ "$err" != "1" ]]
2962306a36Sopenharmony_ci  then
3062306a36Sopenharmony_ci    err=2
3162306a36Sopenharmony_ci    if [[ "$result" =~ "FP_ARITH" || "$result" =~ "AMX" ]]
3262306a36Sopenharmony_ci    then
3362306a36Sopenharmony_ci      echo "Skip, not fail, for FP issues"
3462306a36Sopenharmony_ci    elif [[ "$result" =~ "PMM" ]]
3562306a36Sopenharmony_ci    then
3662306a36Sopenharmony_ci      echo "Skip, not fail, for Optane memory issues"
3762306a36Sopenharmony_ci    else
3862306a36Sopenharmony_ci      err=1
3962306a36Sopenharmony_ci    fi
4062306a36Sopenharmony_ci  fi
4162306a36Sopenharmony_cidone
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ciexit "$err"
44