1# SPDX-License-Identifier: GPL-2.0 2# 3# init.sh 4# Author: Michael Petlan <mpetlan@redhat.com> 5# 6# Description: 7# 8# This file should be used for initialization of basic functions 9# for checking, reporting results etc. 10# 11# 12 13 14. ../common/settings.sh 15. ../common/patterns.sh 16 17THIS_TEST_NAME=`basename $0 .sh` 18 19_echo() 20{ 21 test "$TESTLOG_VERBOSITY" -ne 0 && echo -e "$@" 22} 23 24print_results() 25{ 26 PERF_RETVAL="$1"; shift 27 CHECK_RETVAL="$1"; shift 28 FAILURE_REASON="" 29 TASK_COMMENT="$*" 30 if [ $PERF_RETVAL -eq 0 ] && [ $CHECK_RETVAL -eq 0 ]; then 31 _echo "$MPASS-- [ PASS ] --$MEND $TEST_NAME :: $THIS_TEST_NAME :: $TASK_COMMENT" 32 return 0 33 else 34 if [ $PERF_RETVAL -ne 0 ]; then 35 FAILURE_REASON="command exitcode" 36 fi 37 if [ $CHECK_RETVAL -ne 0 ]; then 38 test -n "$FAILURE_REASON" && FAILURE_REASON="$FAILURE_REASON + " 39 FAILURE_REASON="$FAILURE_REASON""output regexp parsing" 40 fi 41 _echo "$MFAIL-- [ FAIL ] --$MEND $TEST_NAME :: $THIS_TEST_NAME :: $TASK_COMMENT ($FAILURE_REASON)" 42 return 1 43 fi 44} 45 46print_overall_results() 47{ 48 RETVAL="$1"; shift 49 if [ $RETVAL -eq 0 ]; then 50 _echo "$MALLPASS## [ PASS ] ##$MEND $TEST_NAME :: $THIS_TEST_NAME SUMMARY" 51 else 52 _echo "$MALLFAIL## [ FAIL ] ##$MEND $TEST_NAME :: $THIS_TEST_NAME SUMMARY :: $RETVAL failures found" 53 fi 54 return $RETVAL 55} 56 57print_testcase_skipped() 58{ 59 TASK_COMMENT="$*" 60 _echo "$MSKIP-- [ SKIP ] --$MEND $TEST_NAME :: $THIS_TEST_NAME :: $TASK_COMMENT :: testcase skipped" 61 return 0 62} 63 64print_overall_skipped() 65{ 66 _echo "$MSKIP## [ SKIP ] ##$MEND $TEST_NAME :: $THIS_TEST_NAME :: testcase skipped" 67 return 0 68} 69 70print_warning() 71{ 72 WARN_COMMENT="$*" 73 _echo "$MWARN-- [ WARN ] --$MEND $TEST_NAME :: $THIS_TEST_NAME :: $WARN_COMMENT" 74 return 0 75} 76 77# this function should skip a testcase if the testsuite is not run in 78# a runmode that fits the testcase --> if the suite runs in BASIC mode 79# all STANDARD and EXPERIMENTAL testcases will be skipped; if the suite 80# runs in STANDARD mode, all EXPERIMENTAL testcases will be skipped and 81# if the suite runs in EXPERIMENTAL mode, nothing is skipped 82consider_skipping() 83{ 84 TESTCASE_RUNMODE="$1" 85 # the runmode of a testcase needs to be at least the current suite's runmode 86 if [ $PERFTOOL_TESTSUITE_RUNMODE -lt $TESTCASE_RUNMODE ]; then 87 print_overall_skipped 88 exit 0 89 fi 90} 91 92detect_baremetal() 93{ 94 # return values: 95 # 0 = bare metal 96 # 1 = virtualization detected 97 # 2 = unknown state 98 VIRT=`systemd-detect-virt 2>/dev/null` 99 test $? -eq 127 && return 2 100 test "$VIRT" = "none" 101} 102 103detect_intel() 104{ 105 # return values: 106 # 0 = is Intel 107 # 1 = is not Intel or unknown 108 grep "vendor_id" < /proc/cpuinfo | grep -q "GenuineIntel" 109} 110 111detect_amd() 112{ 113 # return values: 114 # 0 = is AMD 115 # 1 = is not AMD or unknown 116 grep "vendor_id" < /proc/cpuinfo | grep -q "AMD" 117} 118 119# base probe utility 120check_kprobes_available() 121{ 122 test -e /sys/kernel/debug/tracing/kprobe_events 123} 124 125check_uprobes_available() 126{ 127 test -e /sys/kernel/debug/tracing/uprobe_events 128} 129 130clear_all_probes() 131{ 132 echo 0 > /sys/kernel/debug/tracing/events/enable 133 check_kprobes_available && echo > /sys/kernel/debug/tracing/kprobe_events 134 check_uprobes_available && echo > /sys/kernel/debug/tracing/uprobe_events 135} 136 137check_sdt_support() 138{ 139 $CMD_PERF list sdt | grep sdt > /dev/null 2> /dev/null 140} 141