|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
#
|
|
Packit |
bbb0ff |
# Name: logging.sh - part of the BeakerLib project
|
|
Packit |
bbb0ff |
# Description: Phases, logging & metrics related stuff
|
|
Packit |
bbb0ff |
#
|
|
Packit |
bbb0ff |
# Author: Chris Ward <cward@redhat.com>
|
|
Packit |
bbb0ff |
# Author: Ondrej Hudlicky <ohudlick@redhat.com>
|
|
Packit |
bbb0ff |
# Author: Petr Muller <pmuller@redhat.com>
|
|
Packit |
bbb0ff |
# Author: Jan Hutar <jhutar@redhat.com>
|
|
Packit |
bbb0ff |
# Author: Ales Zelinka <azelinka@redhat.com>
|
|
Packit |
bbb0ff |
# Author: Petr Splichal <psplicha@redhat.com>
|
|
Packit |
bbb0ff |
#
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
#
|
|
Packit |
bbb0ff |
# Copyright (c) 2008-2010 Red Hat, Inc. All rights reserved.
|
|
Packit |
bbb0ff |
#
|
|
Packit |
bbb0ff |
# This copyrighted material is made available to anyone wishing
|
|
Packit |
bbb0ff |
# to use, modify, copy, or redistribute it subject to the terms
|
|
Packit |
bbb0ff |
# and conditions of the GNU General Public License version 2.
|
|
Packit |
bbb0ff |
#
|
|
Packit |
bbb0ff |
# This program is distributed in the hope that it will be
|
|
Packit |
bbb0ff |
# useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
Packit |
bbb0ff |
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
Packit |
bbb0ff |
# PURPOSE. See the GNU General Public License for more details.
|
|
Packit |
bbb0ff |
#
|
|
Packit |
bbb0ff |
# You should have received a copy of the GNU General Public
|
|
Packit |
bbb0ff |
# License along with this program; if not, write to the Free
|
|
Packit |
bbb0ff |
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
Packit |
bbb0ff |
# Boston, MA 02110-1301, USA.
|
|
Packit |
bbb0ff |
#
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
export __INTERNAL_DEFAULT_SUBMIT_LOG=__INTERNAL_FileSubmit
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
: <<'=cut'
|
|
Packit |
bbb0ff |
=pod
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head1 NAME
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
BeakerLib - logging - phase support, logging functions and metrics
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head1 DESCRIPTION
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Routines for creating various types of logs inside BeakerLib tests.
|
|
Packit |
bbb0ff |
Implements also phase support with automatic assert evaluation.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head1 FUNCTIONS
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=cut
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
# Internal Stuff
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
__INTERNAL_PrintText() {
|
|
Packit |
bbb0ff |
local tmp="$__INTERNAL_LogText_no_file"
|
|
Packit |
bbb0ff |
__INTERNAL_LogText_no_file=1
|
|
Packit |
bbb0ff |
__INTERNAL_LogText "$@"
|
|
Packit |
bbb0ff |
__INTERNAL_LogText_no_file=$tmp
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
__INTERNAL_LogText() {
|
|
Packit |
bbb0ff |
local MESSAGE="$1"
|
|
Packit |
bbb0ff |
local MESSAGE_COLORED="${MESSAGE}"
|
|
Packit |
bbb0ff |
local prio="$2"
|
|
Packit |
bbb0ff |
local LOGFILE=${3:-$OUTPUTFILE}
|
|
Packit |
bbb0ff |
local res=0
|
|
Packit |
bbb0ff |
local COLOR='' UNCOLOR=''
|
|
Packit |
bbb0ff |
if [[ -t 2 ]]; then
|
|
Packit |
bbb0ff |
UNCOLOR="$__INTERNAL_color_reset"
|
|
Packit |
bbb0ff |
case ${prio^^} in
|
|
Packit |
bbb0ff |
DEBUG*)
|
|
Packit |
bbb0ff |
COLOR="$__INTERNAL_color_purple"
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
PASS)
|
|
Packit |
bbb0ff |
COLOR="$__INTERNAL_color_green"
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
FAIL|FATAL)
|
|
Packit |
bbb0ff |
COLOR="$__INTERNAL_color_light_red"
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
LOG)
|
|
Packit |
bbb0ff |
COLOR="$__INTERNAL_color_cyan"
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
LOG|INFO|BEGIN)
|
|
Packit |
bbb0ff |
COLOR="$__INTERNAL_color_blue"
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
WARN*|SKIP*)
|
|
Packit |
bbb0ff |
COLOR="$__INTERNAL_color_yellow"
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
esac
|
|
Packit |
bbb0ff |
fi
|
|
Packit |
bbb0ff |
[[ -n "$prio" ]] && {
|
|
Packit |
bbb0ff |
local left=$(( (10+${#prio})/2 ))
|
|
Packit |
bbb0ff |
local prefix prefix_colored timestamp
|
|
Packit |
bbb0ff |
__INTERNAL_SET_TIMESTAMP
|
|
Packit |
bbb0ff |
printf -v timestamp "%($__INTERNAL_TIMEFORMAT_SHORT)T" "$__INTERNAL_TIMESTAMP"
|
|
Packit |
bbb0ff |
printf -v prefix_colored ":: [ %s ] :: [%s%*s%*s%s] ::" "$timestamp" "$COLOR" "$left" "${prio}" "$(( 10-$left ))" '' "$UNCOLOR"
|
|
Packit |
bbb0ff |
printf -v prefix ":: [ %s ] :: [%*s%*s] ::" "$timestamp" "$left" "${prio}" "$(( 10-$left ))"
|
|
Packit |
bbb0ff |
MESSAGE="$prefix $MESSAGE"
|
|
Packit |
bbb0ff |
MESSAGE_COLORED="$prefix_colored $MESSAGE_COLORED"
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
if [[ -z "$__INTERNAL_LogText_no_file" ]]; then
|
|
Packit |
bbb0ff |
if [[ -n "$LOGFILE" ]]; then
|
|
Packit |
bbb0ff |
echo -e "${MESSAGE}" >> $LOGFILE || let res++
|
|
Packit |
bbb0ff |
fi
|
|
Packit |
bbb0ff |
echo -e "${MESSAGE}" >> "$__INTERNAL_BEAKERLIB_JOURNAL_TXT" || let res++
|
|
Packit |
bbb0ff |
echo -e "${MESSAGE_COLORED}" >> "$__INTERNAL_BEAKERLIB_JOURNAL_COLORED" || let res++
|
|
Packit |
bbb0ff |
fi
|
|
Packit |
bbb0ff |
echo -e "${MESSAGE_COLORED}" >&2 || let res++
|
|
Packit |
bbb0ff |
return $res
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
__INTERNAL_FileSubmit() {
|
|
Packit |
bbb0ff |
local FILENAME="$4"
|
|
Packit |
bbb0ff |
local STORENAME="$__INTERNAL_PERSISTENT_TMP/BEAKERLIB_${TESTID}_STORED_$(basename $FILENAME)"
|
|
Packit |
bbb0ff |
if [ -z "$TESTID" ]
|
|
Packit |
bbb0ff |
then
|
|
Packit |
bbb0ff |
STORENAME="$__INTERNAL_PERSISTENT_TMP/BEAKERLIB_STORED_$(basename $FILENAME)"
|
|
Packit |
bbb0ff |
fi
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlLog "File '$FILENAME' stored here: $STORENAME"
|
|
Packit |
bbb0ff |
cp -f "$FILENAME" "$STORENAME"
|
|
Packit |
bbb0ff |
return $?
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
# rlLog*
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
: <<'=cut'
|
|
Packit |
bbb0ff |
=pod
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head2 Logging
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head3 rlLog
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head3 rlLogDebug
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head3 rlLogInfo
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head3 rlLogWarning
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head3 rlLogError
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head3 rlLogFatal
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Create a time/priority-labelled message in the log. There is a bunch of aliases
|
|
Packit |
bbb0ff |
which can create messages formated as DEBUG/INFO/WARNING/ERROR or FATAL (but you
|
|
Packit |
bbb0ff |
would probably want to use rlDie instead of the last one).
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlLog message [logfile] [priority] [label]
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=over
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item message
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Message you want to show (use quotes when invoking).
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item logfile
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Log file. If not supplied, OUTPUTFILE is assumed.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item priority
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Priority of the log.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item label
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Print this text instead of time in log label.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=back
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=cut
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
__INTERNAL_color_set() {
|
|
Packit |
bbb0ff |
local T="$TERM"
|
|
Packit |
bbb0ff |
[[ -t 1 ]] || T=""
|
|
Packit |
bbb0ff |
[[ -t 2 ]] || T=""
|
|
Packit |
bbb0ff |
case $T in
|
|
Packit |
bbb0ff |
xterm*|screen|linux)
|
|
Packit |
bbb0ff |
__INTERNAL_color_black="\e[0;30m"
|
|
Packit |
bbb0ff |
__INTERNAL_color_dark_gray="\e[1;30m"
|
|
Packit |
bbb0ff |
__INTERNAL_color_red="\e[0;31m"
|
|
Packit |
bbb0ff |
__INTERNAL_color_light_red="\e[1;31m"
|
|
Packit |
bbb0ff |
__INTERNAL_color_green="\e[0;32m"
|
|
Packit |
bbb0ff |
__INTERNAL_color_light_green="\e[1;32m"
|
|
Packit |
bbb0ff |
__INTERNAL_color_yellow="\e[0;33m"
|
|
Packit |
bbb0ff |
__INTERNAL_color_light_yellow="\e[1;33m"
|
|
Packit |
bbb0ff |
__INTERNAL_color_blue="\e[0;34m"
|
|
Packit |
bbb0ff |
__INTERNAL_color_light_blue="\e[1;34m"
|
|
Packit |
bbb0ff |
__INTERNAL_color_purple="\e[0;35m"
|
|
Packit |
bbb0ff |
__INTERNAL_color_light_purple="\e[1;35m"
|
|
Packit |
bbb0ff |
__INTERNAL_color_cyan="\e[0;36m"
|
|
Packit |
bbb0ff |
__INTERNAL_color_light_cyan="\e[1;36m"
|
|
Packit |
bbb0ff |
__INTERNAL_color_light_gray="\e[0;37m"
|
|
Packit |
bbb0ff |
__INTERNAL_color_white="\e[1;37m"
|
|
Packit |
bbb0ff |
__INTERNAL_color_reset="\e[00m"
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
* )
|
|
Packit |
bbb0ff |
__INTERNAL_color_black=""
|
|
Packit |
bbb0ff |
__INTERNAL_color_dark_gray=""
|
|
Packit |
bbb0ff |
__INTERNAL_color_red=""
|
|
Packit |
bbb0ff |
__INTERNAL_color_light_red=""
|
|
Packit |
bbb0ff |
__INTERNAL_color_green=""
|
|
Packit |
bbb0ff |
__INTERNAL_color_light_green=""
|
|
Packit |
bbb0ff |
__INTERNAL_color_brown=""
|
|
Packit |
bbb0ff |
__INTERNAL_color_yellow=""
|
|
Packit |
bbb0ff |
__INTERNAL_color_blue=""
|
|
Packit |
bbb0ff |
__INTERNAL_color_light_blue=""
|
|
Packit |
bbb0ff |
__INTERNAL_color_purple=""
|
|
Packit |
bbb0ff |
__INTERNAL_color_light_purple=""
|
|
Packit |
bbb0ff |
__INTERNAL_color_cyan=""
|
|
Packit |
bbb0ff |
__INTERNAL_color_light_cyan=""
|
|
Packit |
bbb0ff |
__INTERNAL_color_light_gray=""
|
|
Packit |
bbb0ff |
__INTERNAL_color_white=""
|
|
Packit |
bbb0ff |
__INTERNAL_color_reset=""
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
esac
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
__INTERNAL_color_set
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
__INTERNAL_CenterText() {
|
|
Packit |
bbb0ff |
local text="$1"
|
|
Packit |
bbb0ff |
local left=$(( ($2+${#text})/2 ))
|
|
Packit |
bbb0ff |
printf "%*s%*s" $left "${text}" $(( $2-$left ))
|
|
Packit |
bbb0ff |
}; # end of __INTERNAL_CenterText
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlLog() {
|
|
Packit |
bbb0ff |
local message="$1"
|
|
Packit |
bbb0ff |
local logfile="$2"
|
|
Packit |
bbb0ff |
local prio="${3:-LOG}"
|
|
Packit |
bbb0ff |
__INTERNAL_LogText "$message" "$prio" "$logfile"
|
|
Packit |
bbb0ff |
rljAddMessage "$message" "$prio"
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
LOG_LEVEL=${LOG_LEVEL:-""}
|
|
Packit |
bbb0ff |
DEBUG=${DEBUG:-""}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlLogDebug() {
|
|
Packit |
bbb0ff |
if [ "$DEBUG" == 'true' -o "$DEBUG" == '1' -o "$LOG_LEVEL" == "DEBUG" ]; then
|
|
Packit |
bbb0ff |
rlLog "$1" "$2" "DEBUG" && rljAddMessage "$1" "DEBUG"
|
|
Packit |
bbb0ff |
fi
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
rlLogInfo() { rlLog "$1" "$2" "INFO"; }
|
|
Packit |
bbb0ff |
rlLogWarning() { rlLog "$1" "$2" "WARNING"; }
|
|
Packit |
bbb0ff |
rlLogError() { rlLog "$1" "$2" "ERROR"; }
|
|
Packit |
bbb0ff |
rlLogFatal() { rlLog "$1" "$2" "FATAL"; }
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
# rlDie
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
: <<'=cut'
|
|
Packit |
bbb0ff |
=pod
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head3 rlDie
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Create a time-labelled message in the log, report test result,
|
|
Packit |
bbb0ff |
upload logs, close unfinished phase and terminate the test.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlDie message [file...]
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=over
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item message
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Message you want to show (use quotes when invoking) - this
|
|
Packit |
bbb0ff |
option is mandatory.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item file
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Files (logs) you want to upload as well. C<rlBundleLogs>
|
|
Packit |
bbb0ff |
will be used for it. Files which are not readable will be
|
|
Packit |
bbb0ff |
excluded before calling C<rlBundleLogs>, so it is safe to
|
|
Packit |
bbb0ff |
call even with possibly not existent logs and it will
|
|
Packit |
bbb0ff |
succeed.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=back
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=cut
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlDie() {
|
|
Packit |
bbb0ff |
# handle mandatory comment
|
|
Packit |
bbb0ff |
local rlMSG="$1"
|
|
Packit |
bbb0ff |
shift
|
|
Packit |
bbb0ff |
# handle optional list of logs
|
|
Packit |
bbb0ff |
if [ -n "$*" ]; then
|
|
Packit |
bbb0ff |
local logs=''
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
local log
|
|
Packit |
bbb0ff |
for log in "$@"; do
|
|
Packit |
bbb0ff |
[ -r "$log" ] && logs="$logs $log"
|
|
Packit |
bbb0ff |
done
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
[ -n "$logs" ] && rlBundleLogs rlDieLogsBundling $logs
|
|
Packit |
bbb0ff |
fi
|
|
Packit |
bbb0ff |
# do the work
|
|
Packit |
bbb0ff |
rlLogFatal "$rlMSG"
|
|
Packit |
bbb0ff |
rlAssert0 "$rlMSG" 1
|
|
Packit |
bbb0ff |
rlPhaseEnd
|
|
Packit |
bbb0ff |
exit 0
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
# rlHeadLog
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
# obsoleted by phases
|
|
Packit |
bbb0ff |
# : <<=cut
|
|
Packit |
bbb0ff |
# =pod
|
|
Packit |
bbb0ff |
#
|
|
Packit |
bbb0ff |
# =head2 rlHeadLog
|
|
Packit |
bbb0ff |
#
|
|
Packit |
bbb0ff |
# Creates a header in the supplied log
|
|
Packit |
bbb0ff |
#
|
|
Packit |
bbb0ff |
# * parameter 1: message you want to show (use quotes when invoking)
|
|
Packit |
bbb0ff |
# * optional parameter 2: log file. If not supplied, OUTPUTFILE is assumed
|
|
Packit |
bbb0ff |
# =cut
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlHeadLog() {
|
|
Packit |
bbb0ff |
local text="$1"
|
|
Packit |
bbb0ff |
local logfile=${2:-""}
|
|
Packit |
bbb0ff |
__INTERNAL_LogText "\n::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::" "$logfile"
|
|
Packit |
bbb0ff |
rlLog "$text" "$logfile"
|
|
Packit |
bbb0ff |
__INTERNAL_LogText "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::\n" "$logfile"
|
|
Packit |
bbb0ff |
rlLogWarning "rlHeadLog is obsoleted, use rlPhase* instead"
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
# rlBundleLogs
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
: <<'=cut'
|
|
Packit |
bbb0ff |
=pod
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head3 rlBundleLogs
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Create a tarball of files (e.g. logs) and attach them to the test result.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlBundleLogs package file [file...]
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=over
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item package
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Name of the package. Will be used as a part of the tar-ball name.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item file
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
File(s) to be packed and submitted.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=back
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Returns result of submiting the tarball.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=cut
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlBundleLogs(){
|
|
Packit |
bbb0ff |
local BASENAME="$1"
|
|
Packit |
bbb0ff |
local LOGDIR="/tmp/$BASENAME" # no-reboot
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
if [ -n "$JOBID" ]
|
|
Packit |
bbb0ff |
then
|
|
Packit |
bbb0ff |
LOGDIR="$LOGDIR-$JOBID"
|
|
Packit |
bbb0ff |
fi
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
if [ -n "$RECIPEID" ]
|
|
Packit |
bbb0ff |
then
|
|
Packit |
bbb0ff |
LOGDIR="$LOGDIR-$RECIPEID"
|
|
Packit |
bbb0ff |
fi
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
if [ -n "$TESTID" ]
|
|
Packit |
bbb0ff |
then
|
|
Packit |
bbb0ff |
LOGDIR="$LOGDIR-$TESTID"
|
|
Packit |
bbb0ff |
fi
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlLog "Bundling logs"
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlLogDebug "rlBundleLogs: Creating directory for logs: $LOGDIR"
|
|
Packit |
bbb0ff |
mkdir -p "$LOGDIR"
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
local i
|
|
Packit |
bbb0ff |
for i in "${@:2}"; do
|
|
Packit |
bbb0ff |
local i_new="$( echo $i | sed 's|[/ ]|_|g' )"
|
|
Packit |
bbb0ff |
while [ -e "$LOGDIR/$i_new" ]; do
|
|
Packit |
bbb0ff |
i_new="${i_new}_next"
|
|
Packit |
bbb0ff |
done
|
|
Packit |
bbb0ff |
rlLogInfo "rlBundleLogs: Adding '$i' as '$i_new'"
|
|
Packit |
bbb0ff |
cp -r "$i" "$LOGDIR/$i_new"
|
|
Packit |
bbb0ff |
[ $? -eq 0 ] || rlLogError "rlBundleLogs: '$i' can't be packed"
|
|
Packit |
bbb0ff |
done
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
local TARBALL="$LOGDIR.tar.gz"
|
|
Packit |
bbb0ff |
tar zcf "$TARBALL" "$LOGDIR"
|
|
Packit |
bbb0ff |
if [ ! $? -eq 0 ]; then
|
|
Packit |
bbb0ff |
rlLogError "rlBundleLogs: Packing was not successful"
|
|
Packit |
bbb0ff |
return 1
|
|
Packit |
bbb0ff |
fi
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlFileSubmit "$TARBALL"
|
|
Packit |
bbb0ff |
SUBMITCODE=$?
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
if [ ! $SUBMITCODE -eq 0 ]; then
|
|
Packit |
bbb0ff |
rlLogError "rlBundleLog: Submit wasn't successful"
|
|
Packit |
bbb0ff |
fi
|
|
Packit |
bbb0ff |
rlLogDebug "rlBundleLogs: Removing tmp: $TARBALL"
|
|
Packit |
bbb0ff |
rm -rf $TARBALL
|
|
Packit |
bbb0ff |
rlLogDebug "rlBundleLogs: Removing tmp: $LOGDIR"
|
|
Packit |
bbb0ff |
rm -rf $LOGDIR
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
return $SUBMITCODE
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
# rlFileSubmit
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
: <<'=cut'
|
|
Packit |
bbb0ff |
=pod
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head3 rlFileSubmit
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Resolves absolute path to the file, replaces / for - and uploads this renamed
|
|
Packit |
bbb0ff |
file using rhts-submit-log.
|
|
Packit |
bbb0ff |
It also allows you to specify your custom name for the uploaded file.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlFileSubmit [-s sep] path_to_file [required_name]
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=over
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item -s sep
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Sets separator (i.e. the replacement of the /) to sep.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item path_to_file
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Either absolute or relative path to file. Relative path is converted
|
|
Packit |
bbb0ff |
to absolute.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item required_name
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Default behavior renames file to full_path_to_file with / replaced for -,
|
|
Packit |
bbb0ff |
if this does not suit your needs, you can specify the name using this
|
|
Packit |
bbb0ff |
option.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Examples:
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlFileSubmit logfile.txt -> logfile.txt
|
|
Packit |
bbb0ff |
cd /etc; rlFileSubmit ./passwd -> etc-passwd
|
|
Packit |
bbb0ff |
rlFileSubmit /etc/passwd -> etc-passwd
|
|
Packit |
bbb0ff |
rlFileSubmit /etc/passwd my-top-secret_file -> my-top-secret-file
|
|
Packit |
bbb0ff |
rlFileSubmit -s '_' /etc/passwd -> etc_passwd
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=back
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=cut
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlFileSubmit() {
|
|
Packit |
bbb0ff |
GETOPT=$(getopt -q -o s: -- "$@")
|
|
Packit |
bbb0ff |
eval set -- "$GETOPT"
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
SEPARATOR='-'
|
|
Packit |
bbb0ff |
while true ; do
|
|
Packit |
bbb0ff |
case "$1" in
|
|
Packit |
bbb0ff |
-s)
|
|
Packit |
bbb0ff |
SEPARATOR=$2;
|
|
Packit |
bbb0ff |
shift 2
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
--) shift; break;;
|
|
Packit |
bbb0ff |
*) shift;;
|
|
Packit |
bbb0ff |
esac
|
|
Packit |
bbb0ff |
done
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
local RETVAL=255
|
|
Packit |
bbb0ff |
local FILE="$1"
|
|
Packit |
bbb0ff |
local ALIAS
|
|
Packit |
bbb0ff |
local TMPDIR="$(mktemp -d)" # no-reboot
|
|
Packit |
bbb0ff |
if [ -f "$FILE" ]; then
|
|
Packit |
bbb0ff |
if [ -n "$2" ]; then
|
|
Packit |
bbb0ff |
ALIAS="$2"
|
|
Packit |
bbb0ff |
else
|
|
Packit |
bbb0ff |
if echo "$FILE" | egrep -q "^\.(\.)?/"; then
|
|
Packit |
bbb0ff |
# ^ if the path is specified as relative ~ begins with ./ or ../
|
|
Packit |
bbb0ff |
local POM=$(dirname "$FILE")
|
|
Packit |
bbb0ff |
ALIAS=$(cd "$POM"; pwd)
|
|
Packit |
bbb0ff |
ALIAS="$ALIAS/$(basename $FILE)"
|
|
Packit |
bbb0ff |
else
|
|
Packit |
bbb0ff |
ALIAS=$1
|
|
Packit |
bbb0ff |
fi
|
|
Packit |
bbb0ff |
ALIAS=$(echo $ALIAS | tr '/' "$SEPARATOR" | sed "s/^${SEPARATOR}*//")
|
|
Packit |
bbb0ff |
fi
|
|
Packit |
bbb0ff |
rlLogInfo "Sending $FILE as $ALIAS"
|
|
Packit |
bbb0ff |
ln -s "$(readlink -f $FILE)" "$TMPDIR/$ALIAS"
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
if [ -z "$BEAKERLIB_COMMAND_SUBMIT_LOG" ]
|
|
Packit |
bbb0ff |
then
|
|
Packit |
bbb0ff |
BEAKERLIB_COMMAND_SUBMIT_LOG="$__INTERNAL_DEFAULT_SUBMIT_LOG"
|
|
Packit |
bbb0ff |
fi
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
$BEAKERLIB_COMMAND_SUBMIT_LOG -T "$TESTID" -l "$TMPDIR/$ALIAS"
|
|
Packit |
bbb0ff |
RETVAL=$?
|
|
Packit |
bbb0ff |
fi
|
|
Packit |
bbb0ff |
rm -rf $TMPDIR
|
|
Packit |
bbb0ff |
return $RETVAL
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
# rlShowPkgVersion
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
: <<'=cut'
|
|
Packit |
bbb0ff |
=pod
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head2 Info
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head3 rlShowPackageVersion
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Shows a message about version of packages.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlShowPackageVersion package [package...]
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=over
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item package
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Name of a package(s) you want to log.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=back
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=cut
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlShowPackageVersion()
|
|
Packit |
bbb0ff |
{
|
|
Packit |
bbb0ff |
local score=0
|
|
Packit |
bbb0ff |
if [ $# -eq 0 ]; then
|
|
Packit |
bbb0ff |
rlLogWarning "rlShowPackageVersion: Too few options"
|
|
Packit |
bbb0ff |
return 1
|
|
Packit |
bbb0ff |
fi
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
local pkg
|
|
Packit |
bbb0ff |
for pkg in "$@"; do
|
|
Packit |
bbb0ff |
if rpm -q $pkg &> /dev/null; then
|
|
Packit |
bbb0ff |
IFS=$'\n'
|
|
Packit |
bbb0ff |
local line
|
|
Packit |
bbb0ff |
for line in $(rpm -q $pkg --queryformat "$pkg RPM version: %{version}-%{release}.%{arch}\n")
|
|
Packit |
bbb0ff |
do
|
|
Packit |
bbb0ff |
rlLog $line
|
|
Packit |
bbb0ff |
done
|
|
Packit |
bbb0ff |
unset IFS
|
|
Packit |
bbb0ff |
else
|
|
Packit |
bbb0ff |
rlLogWarning "rlShowPackageVersion: Unable to locate package $pkg"
|
|
Packit |
bbb0ff |
let score+=1
|
|
Packit |
bbb0ff |
fi
|
|
Packit |
bbb0ff |
done
|
|
Packit |
bbb0ff |
[ $score -eq 0 ] && return 0 || return 1
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
# backward compatibility
|
|
Packit |
bbb0ff |
rlShowPkgVersion() {
|
|
Packit |
bbb0ff |
rlLogWarning "rlShowPkgVersion is obsoleted by rlShowPackageVersion"
|
|
Packit |
bbb0ff |
rlShowPackageVersion "$@";
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
# rlGetArch
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
: <<'=cut'
|
|
Packit |
bbb0ff |
=pod
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head3 rlGetArch
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
This function is deprecated. Use rlGetPrimaryArch or rlGetSecondaryArch
|
|
Packit |
bbb0ff |
instead, or use uname. This function will be only kept for compatibility.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Return base arch for the current system (good when you need
|
|
Packit |
bbb0ff |
base arch on a multilib system).
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlGetArch
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
On an i686 system you will get i386, on a ppc64 you will get ppc.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=cut
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlGetArch() {
|
|
Packit |
bbb0ff |
local archi=$( uname -i 2>/dev/null || uname -m )
|
|
Packit |
bbb0ff |
case "$archi" in
|
|
Packit |
bbb0ff |
i486 | i586 | i686)
|
|
Packit |
bbb0ff |
archi='i386'
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
ppc64)
|
|
Packit |
bbb0ff |
archi='ppc'
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
'')
|
|
Packit |
bbb0ff |
rlLogWarning "rlGetArch: Do not know what the arch is ('$(uname -a)'), guessing 'i386'"
|
|
Packit |
bbb0ff |
archi='i386'
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
esac
|
|
Packit |
bbb0ff |
rlLogWarning "rlGetArch: This function is deprecated"
|
|
Packit |
bbb0ff |
rlLogWarning "rlGetArch: Update test to use rlGetPrimaryArch/rlGetSecondaryArch"
|
|
Packit |
bbb0ff |
rlLogDebug "rlGetArch: This is architecture '$archi'"
|
|
Packit |
bbb0ff |
echo "$archi"
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
# rlGetPrimaryArch
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
: <<'=cut'
|
|
Packit |
bbb0ff |
=pod
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head3 rlGetPrimaryArch
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Return primary arch for the current system (good when you need
|
|
Packit |
bbb0ff |
base arch on a multilib system).
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlGetPrimaryArch
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=cut
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlGetPrimaryArch() {
|
|
Packit |
bbb0ff |
local res=0
|
|
Packit |
bbb0ff |
local archi=$( uname -m )
|
|
Packit |
bbb0ff |
local rhelv=$( rlGetDistroRelease )
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
local retval=$archi
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
case "$archi" in
|
|
Packit |
bbb0ff |
i386 | i486 | i586 | i686)
|
|
Packit |
bbb0ff |
case "$rhelv" in
|
|
Packit |
bbb0ff |
4 | 5)
|
|
Packit |
bbb0ff |
retval='i386'
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
6)
|
|
Packit |
bbb0ff |
retval='i686'
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
7)
|
|
Packit |
bbb0ff |
retval=''
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
*)
|
|
Packit |
bbb0ff |
retval=''
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
esac
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
ppc64)
|
|
Packit |
bbb0ff |
case "$rhelv" in
|
|
Packit |
bbb0ff |
4 | 5)
|
|
Packit |
bbb0ff |
retval='ppc'
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
*)
|
|
Packit |
bbb0ff |
retval='ppc64'
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
esac
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
x86_64)
|
|
Packit |
bbb0ff |
retval='x86_64'
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
s390x)
|
|
Packit |
bbb0ff |
retval='s390x'
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
s390)
|
|
Packit |
bbb0ff |
case "$rhelv" in
|
|
Packit |
bbb0ff |
4)
|
|
Packit |
bbb0ff |
retval='s390'
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
*)
|
|
Packit |
bbb0ff |
retval=''
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
esac
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
ia64)
|
|
Packit |
bbb0ff |
case "$rhelv" in
|
|
Packit |
bbb0ff |
4 | 5)
|
|
Packit |
bbb0ff |
retval='ia64'
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
*)
|
|
Packit |
bbb0ff |
retval=''
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
esac
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
aarch64)
|
|
Packit |
bbb0ff |
retval='aarch64'
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
ppc64le)
|
|
Packit |
bbb0ff |
retval='ppc64le'
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
*)
|
|
Packit |
bbb0ff |
rlLogError "rlGetPrimaryArch: Do not know what the arch is ('$(uname -a)')."
|
|
Packit |
bbb0ff |
retval=''
|
|
Packit |
bbb0ff |
res=1
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
esac
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
if ! rlIsRHEL
|
|
Packit |
bbb0ff |
then
|
|
Packit |
bbb0ff |
rlLogInfo "rlGetPrimaryArch: Concept of primary and secondary architectures is defined on RHEL only"
|
|
Packit |
bbb0ff |
fi
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlLogDebug "rlGetPrimaryArch: The primary architecture is '$retval'"
|
|
Packit |
bbb0ff |
echo "$retval"
|
|
Packit |
bbb0ff |
return $res
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
# rlGetSecondaryArch
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
: <<'=cut'
|
|
Packit |
bbb0ff |
=pod
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head3 rlGetSecondaryArch
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Return base arch for the current system (good when you need
|
|
Packit |
bbb0ff |
base arch on a multilib system).
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlGetSecondaryArch
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=cut
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlGetSecondaryArch() {
|
|
Packit |
bbb0ff |
local res=0
|
|
Packit |
bbb0ff |
local archi=$( uname -m )
|
|
Packit |
bbb0ff |
local rhelv=$( rlGetDistroRelease )
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
local retval=$archi
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
case "$archi" in
|
|
Packit |
bbb0ff |
i386 | i486 | i586 | i686)
|
|
Packit |
bbb0ff |
retval=''
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
ppc64)
|
|
Packit |
bbb0ff |
case "$rhelv" in
|
|
Packit |
bbb0ff |
4 | 5)
|
|
Packit |
bbb0ff |
retval='ppc64'
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
*)
|
|
Packit |
bbb0ff |
retval='ppc'
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
esac
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
x86_64)
|
|
Packit |
bbb0ff |
case "$rhelv" in
|
|
Packit |
bbb0ff |
4 | 5)
|
|
Packit |
bbb0ff |
retval='i386'
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
*)
|
|
Packit |
bbb0ff |
retval='i686'
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
esac
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
s390x)
|
|
Packit |
bbb0ff |
retval='s390'
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
s390)
|
|
Packit |
bbb0ff |
retval=''
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
ia64)
|
|
Packit |
bbb0ff |
case "$rhelv" in
|
|
Packit |
bbb0ff |
4 | 5)
|
|
Packit |
bbb0ff |
retval='i386'
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
*)
|
|
Packit |
bbb0ff |
retval=''
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
esac
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
aarch64)
|
|
Packit |
bbb0ff |
retval=''
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
ppc64le)
|
|
Packit |
bbb0ff |
retval=''
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
*)
|
|
Packit |
bbb0ff |
rlLogError "rlGetSecondaryArch: Do not know what the arch is ('$(uname -a)')."
|
|
Packit |
bbb0ff |
retval=''
|
|
Packit |
bbb0ff |
res=1
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
esac
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
if ! rlIsRHEL; then
|
|
Packit |
bbb0ff |
rlLogError "rlGetSecondaryArch: Concept of primary and secondary architectures is defined on RHEL only"
|
|
Packit |
bbb0ff |
retval=''
|
|
Packit |
bbb0ff |
res=2
|
|
Packit |
bbb0ff |
fi
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlLogDebug "rlGetSecondaryArch: The secondary architecture is '$retval'"
|
|
Packit |
bbb0ff |
echo "$retval"
|
|
Packit |
bbb0ff |
return $res
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
# rlGetDistroRelease, rlGetDistroVariant
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
: <<'=cut'
|
|
Packit |
bbb0ff |
=pod
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head3 rlGetDistroRelease
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head3 rlGetDistroVariant
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Return release or variant of the distribution on the system.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlGetDistroRelease
|
|
Packit |
bbb0ff |
rlGetDistroVariant
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
For example on the RHEL-4-AS you will get release 4 and variant AS,
|
|
Packit |
bbb0ff |
on the RHEL-5-Client you will get release 5 and variant Client.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=cut
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
__rlGetDistroVersion() {
|
|
Packit |
bbb0ff |
local version=0
|
|
Packit |
bbb0ff |
if rpm -q redhat-release &>/dev/null; then
|
|
Packit |
bbb0ff |
version=$( rpm -q --qf="%{VERSION}" redhat-release )
|
|
Packit |
bbb0ff |
elif rpm -q fedora-release &>/dev/null; then
|
|
Packit |
bbb0ff |
version=$( rpm -q --qf="%{VERSION}" fedora-release )
|
|
Packit |
bbb0ff |
elif rpm -q centos-release &>/dev/null; then
|
|
Packit |
bbb0ff |
version=$( rpm -q --qf="%{VERSION}" centos-release )
|
|
Packit |
bbb0ff |
elif rpm -q --whatprovides redhat-release &>/dev/null; then
|
|
Packit |
bbb0ff |
version=$( rpm -q --qf="%{VERSION}" --whatprovides redhat-release )
|
|
Packit |
bbb0ff |
else
|
|
Packit |
bbb0ff |
version="unknown"
|
|
Packit |
bbb0ff |
fi
|
|
Packit |
bbb0ff |
rlLogDebug "__rlGetDistroVersion: This is distribution version '$version'"
|
|
Packit |
bbb0ff |
echo "$version"
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
rlGetDistroRelease() {
|
|
Packit |
bbb0ff |
__rlGetDistroVersion | sed "s/^\([0-9.]\+\)[^0-9.]\+.*$/\1/" | sed "s/6\.9[0-9]/7/" | cut -d '.' -f 1
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
rlGetDistroVariant() {
|
|
Packit |
bbb0ff |
VARIANT="$(__rlGetDistroVersion | sed "s/^[0-9.]\+\(.*\)$/\1/")"
|
|
Packit |
bbb0ff |
if [ -z "$VARIANT" ]; then
|
|
Packit |
bbb0ff |
rpm -q --qf="%{NAME}" --whatprovides redhat-release | cut -c 16- | sed 's/.*/\u&/'
|
|
Packit |
bbb0ff |
else
|
|
Packit |
bbb0ff |
echo $VARIANT
|
|
Packit |
bbb0ff |
fi
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
# rlShowRunningKernel
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
: <<'=cut'
|
|
Packit |
bbb0ff |
=pod
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head3 rlShowRunningKernel
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Log a message with version of the currently running kernel.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlShowRunningKernel
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=cut
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlShowRunningKernel() {
|
|
Packit |
bbb0ff |
rlLog "Kernel version: $(uname -r)"
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
# rlPhaseStart
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
: <<'=cut'
|
|
Packit |
bbb0ff |
=pod
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head2 Phases
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head3 rlPhaseStart
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Starts a phase of a specific type. The final phase result is based
|
|
Packit |
bbb0ff |
on all asserts included in the phase. Do not forget to end phase
|
|
Packit |
bbb0ff |
with C<rlPhaseEnd> when you are done.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlPhaseStart type [name]
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=over
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item type
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Type of the phase, one of the following:
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=over
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item FAIL
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
When assert fails here, phase will report a FAIL.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item WARN
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
When assert fails here, phase will report a WARN.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=back
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item name
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Optional name of the phase (if not provided, one will be generated).
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=back
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
If all asserts included in the phase pass, phase reports PASS.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=cut
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlPhaseStart() {
|
|
Packit |
bbb0ff |
if [ "x$1" = "xFAIL" -o "x$1" = "xWARN" ] ; then
|
|
Packit |
bbb0ff |
rljAddPhase "$1" "$2"
|
|
Packit |
bbb0ff |
return $?
|
|
Packit |
bbb0ff |
else
|
|
Packit |
bbb0ff |
rlLogError "rlPhaseStart: Unknown phase type: $1"
|
|
Packit |
bbb0ff |
return 1
|
|
Packit |
bbb0ff |
fi
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
# rlPhaseEnd
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
: <<'=cut'
|
|
Packit |
bbb0ff |
=pod
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head3 rlPhaseEnd
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
End current phase, summarize asserts included and report phase result.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlPhaseEnd
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Final phase result is based on included asserts and phase type.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=cut
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlPhaseEnd() {
|
|
Packit |
bbb0ff |
rljClosePhase
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
# rlPhaseStart*
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
: <<'=cut'
|
|
Packit |
bbb0ff |
=pod
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head3 rlPhaseStartSetup
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head3 rlPhaseStartTest
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head3 rlPhaseStartCleanup
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Start a phase of the specified type: Setup -> WARN, Test -> FAIL, Cleanup -> WARN.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlPhaseStartSetup [name]
|
|
Packit |
bbb0ff |
rlPhaseStartTest [name]
|
|
Packit |
bbb0ff |
rlPhaseStartCleanup [name]
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=over
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item name
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Optional name of the phase. If not specified, default Setup/Test/Cleanup are
|
|
Packit |
bbb0ff |
used.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=back
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
If you do not want these shortcuts, use plain C<rlPhaseStart> function.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=cut
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlPhaseStartSetup() {
|
|
Packit |
bbb0ff |
rlPhaseStart "WARN" "${1:-Setup}"
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
rlPhaseStartTest() {
|
|
Packit |
bbb0ff |
rlPhaseStart "FAIL" "${1:-Test}"
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
rlPhaseStartCleanup() {
|
|
Packit |
bbb0ff |
rlPhaseStart "WARN" "${1:-Cleanup}"
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
# rlLogLowMetric
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
: <<'=cut'
|
|
Packit |
bbb0ff |
=pod
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head2 Metric
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head3 rlLogMetricLow
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Log a metric, which should be as low as possible to the journal.
|
|
Packit |
bbb0ff |
(Example: memory consumption, run time)
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlLogMetricLow name value [tolerance]
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=over
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item name
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Name of the metric. It has to be unique in a phase.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item value
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Value of the metric.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item tolerance
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
It is used when comparing via rcw. It means how larger can the
|
|
Packit |
bbb0ff |
second value be to not trigger a FAIL. Default is 0.2
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=back
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
When comparing FIRST, SECOND, then:
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
FIRST >= SECOND means PASS
|
|
Packit |
bbb0ff |
FIRST+FIRST*tolerance >= SECOND means WARN
|
|
Packit |
bbb0ff |
FIRST+FIRST*tolerance < SECOND means FAIL
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
B<Example:> Simple benchmark is compared via this metric type in
|
|
Packit |
bbb0ff |
rcw. It has a tolerance of 0.2. First run had 1 second. So:
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
For PASS, second run has to be better or equal to first.
|
|
Packit |
bbb0ff |
So any value of second or less is a PASS.
|
|
Packit |
bbb0ff |
For WARN, second run can be a little worse than first.
|
|
Packit |
bbb0ff |
Tolerance is 0.2, so anything lower than 1.2 means WARN.
|
|
Packit |
bbb0ff |
For FAIL, anything worse than 1.2 means FAIL.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=cut
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlLogMetricLow() {
|
|
Packit |
bbb0ff |
rljAddMetric "low" "$1" "$2" "$3"
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlLogLowMetric() {
|
|
Packit |
bbb0ff |
rlLogWarning "rlLogLowMetric is deprecated, use rlLogMetricLow instead"
|
|
Packit |
bbb0ff |
rljAddMetric "low" "$1" "$2" "$3"
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
# rlLogMetricHigh
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
: <<'=cut'
|
|
Packit |
bbb0ff |
=pod
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head3 rlLogMetricHigh
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Log a metric, which should be as high as possible to the journal.
|
|
Packit |
bbb0ff |
(Example: number of executions per second)
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlLogMetricHigh name value [tolerance]
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=over
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item name
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Name of the metric. It has to be unique in a phase.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item value
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Value of the metric.
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item tolerance
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
It is used when comparing via rcw. It means how lower can the
|
|
Packit |
bbb0ff |
second value be to not trigger a FAIL. Default is 0.2
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=back
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
When comparing FIRST, SECOND, then:
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
FIRST <= SECOND means PASS
|
|
Packit |
bbb0ff |
FIRST+FIRST*tolerance <= SECOND means WARN
|
|
Packit |
bbb0ff |
FIRST+FIRST*tolerance > SECOND means FAIL
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=cut
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlLogMetricHigh() {
|
|
Packit |
bbb0ff |
rljAddMetric "high" "$1" "$2" "$3"
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
rlLogHighMetric() {
|
|
Packit |
bbb0ff |
rlLogWarning "rlLogHighMetric is deprecated, use rlLogMetricHigh instead"
|
|
Packit |
bbb0ff |
rljAddMetric "high" "$1" "$2" "$3"
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
# AUTHORS
|
|
Packit |
bbb0ff |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
bbb0ff |
: <<'=cut'
|
|
Packit |
bbb0ff |
=pod
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=head1 AUTHORS
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=over
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item *
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Petr Muller <pmuller@redhat.com>
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item *
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Jan Hutar <jhutar@redhat.com>
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item *
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Ales Zelinka <azelinka@redhat.com>
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item *
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Petr Splichal <psplicha@redhat.com>
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item *
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Dalibor Pospisil <dapospis@redhat.com>
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=item *
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
Jakub Heger <jheger@redhat.com>
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=back
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
=cut
|