# SPDX-License-Identifier: GPL-2.0
#
# init.sh
# Author: Michael Petlan <[email protected]>
#
# Description:
#
# This file should be used for initialization of basic functions
# for checking, reporting results etc.
#
#
. ../common/settings.sh
. ../common/patterns.sh
THIS_TEST_NAME=`basename $0 .sh`
_echo()
{
test "$TESTLOG_VERBOSITY" -ne 0 && echo -e "$@"
}
print_results()
{
PERF_RETVAL="$1"; shift
CHECK_RETVAL="$1"; shift
FAILURE_REASON=""
TASK_COMMENT="$*"
if [ $PERF_RETVAL -eq 0 ] && [ $CHECK_RETVAL -eq 0 ]; then
_echo "$MPASS-- [ PASS ] --$MEND $TEST_NAME :: $THIS_TEST_NAME :: $TASK_COMMENT"
return 0
else
if [ $PERF_RETVAL -ne 0 ]; then
FAILURE_REASON="command exitcode"
fi
if [ $CHECK_RETVAL -ne 0 ]; then
test -n "$FAILURE_REASON" && FAILURE_REASON="$FAILURE_REASON + "
FAILURE_REASON="$FAILURE_REASON""output regexp parsing"
fi
_echo "$MFAIL-- [ FAIL ] --$MEND $TEST_NAME :: $THIS_TEST_NAME :: $TASK_COMMENT ($FAILURE_REASON)"
return 1
fi
}
print_overall_results()
{
RETVAL="$1"; shift
if [ $RETVAL -eq 0 ]; then
_echo "$MALLPASS## [ PASS ] ##$MEND $TEST_NAME :: $THIS_TEST_NAME SUMMARY"
else
_echo "$MALLFAIL## [ FAIL ] ##$MEND $TEST_NAME :: $THIS_TEST_NAME SUMMARY :: $RETVAL failures found"
fi
return $RETVAL
}
print_testcase_skipped()
{
TASK_COMMENT="$*"
_echo "$MSKIP-- [ SKIP ] --$MEND $TEST_NAME :: $THIS_TEST_NAME :: $TASK_COMMENT :: testcase skipped"
return 0
}
print_overall_skipped()
{
_echo "$MSKIP## [ SKIP ] ##$MEND $TEST_NAME :: $THIS_TEST_NAME :: testcase skipped"
return 0
}
print_warning()
{
WARN_COMMENT="$*"
_echo "$MWARN-- [ WARN ] --$MEND $TEST_NAME :: $THIS_TEST_NAME :: $WARN_COMMENT"
return 0
}
# this function should skip a testcase if the testsuite is not run in
# a runmode that fits the testcase --> if the suite runs in BASIC mode
# all STANDARD and EXPERIMENTAL testcases will be skipped; if the suite
# runs in STANDARD mode, all EXPERIMENTAL testcases will be skipped and
# if the suite runs in EXPERIMENTAL mode, nothing is skipped
consider_skipping()
{
TESTCASE_RUNMODE="$1"
# the runmode of a testcase needs to be at least the current suite's runmode
if [ $PERFTOOL_TESTSUITE_RUNMODE -lt $TESTCASE_RUNMODE ]; then
print_overall_skipped
exit 0
fi
}
detect_baremetal()
{
# return values:
# 0 = bare metal
# 1 = virtualization detected
# 2 = unknown state
VIRT=`systemd-detect-virt 2>/dev/null`
test $? -eq 127 && return 2
test "$VIRT" = "none"
}
detect_intel()
{
# return values:
# 0 = is Intel
# 1 = is not Intel or unknown
grep "vendor_id" < /proc/cpuinfo | grep -q "GenuineIntel"
}
detect_amd()
{
# return values:
# 0 = is AMD
# 1 = is not AMD or unknown
grep "vendor_id" < /proc/cpuinfo | grep -q "AMD"
}
# base probe utility
check_kprobes_available()
{
test -e /sys/kernel/debug/tracing/kprobe_events
}
check_uprobes_available()
{
test -e /sys/kernel/debug/tracing/uprobe_events
}
clear_all_probes()
{
echo 0 > /sys/kernel/debug/tracing/events/enable
check_kprobes_available && echo > /sys/kernel/debug/tracing/kprobe_events
check_uprobes_available && echo > /sys/kernel/debug/tracing/uprobe_events
}
check_sdt_support()
{
$CMD_PERF list sdt | grep sdt > /dev/null 2> /dev/null
}