CI testing: Drop the Regression/testsuite-upstream-raw TC
This commit is contained in:
parent
6e2eede1a1
commit
1c8c98dbcd
@ -1,158 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Show the testcase list on demand.
|
||||
if [[ "$1" == "TCLIST" ]]; then
|
||||
if [[ "$(arch)" == "s390x" ]]; then
|
||||
# Save the s390x machine time (regardless the rhel major):
|
||||
# Almost all the testcases are failing there, and those, that
|
||||
# do not, are flaky.
|
||||
echo -n "notest.exp"
|
||||
else
|
||||
echo -n "bpf-asm.exp bpf.exp"
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
|
||||
_LOG=systemtap.check
|
||||
cp systemtap.sum $_LOG
|
||||
|
||||
_cleanup()
|
||||
{
|
||||
rm $_LOG
|
||||
}
|
||||
trap _cleanup EXIT
|
||||
|
||||
set -xe
|
||||
|
||||
EXPECTED_PASSES_TRESHOLD=-1
|
||||
|
||||
if test $(rpm --eval '0%{rhel}') -eq 8; then
|
||||
# systemtap-4.0-7.el8, kernel-4.18.0-64.el8
|
||||
case `arch` in
|
||||
x86_64)
|
||||
EXPECTED_PASSES_TRESHOLD=55
|
||||
sed -i '/FAIL: bigmap1.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: cast_op_tracepoint.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: logging1.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: perf1.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: pr23875_loop.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: pr23875_smash.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: reg_alloc3.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: string3.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: timer1.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: timer2.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: tracepoint1.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: tracepoint1.stp/d' $_LOG || :
|
||||
;;
|
||||
aarch64)
|
||||
EXPECTED_PASSES_TRESHOLD=58
|
||||
sed -i '/FAIL: bigmap1.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: logging1.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: perf1.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: perf2.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: pr23875_loop.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: pr23875_smash.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: reg_alloc3.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: string3.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: timer2.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: tracepoint1.stp/d' $_LOG || :
|
||||
;;
|
||||
ppc64le)
|
||||
EXPECTED_PASSES_TRESHOLD=53
|
||||
sed -i '/FAIL: array.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: array_preinit.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: context_vars1.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: context_vars2.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: context_vars2.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: context_vars3.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: globals2.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: globals3.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: kprobes.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: logging1.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: perf1.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: perf2.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: pr23875_loop.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: pr23875_loop.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: pr23875_smash.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: reg_alloc3.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: string3.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: timer2.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: tracepoint1.stp/d' $_LOG || :
|
||||
;;
|
||||
s390x)
|
||||
# Many testcases fail for s390x, many of them are flaky
|
||||
# Not worth testing at all at this stage at all probably.
|
||||
echo "INFO: UNSUPPORTED RHEL7 ARCHITECTIRE ($(arch))"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "ERROR: UNSUPPORTED RHEL8 ARCHITECTIRE"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
elif test $(rpm --eval '0%{rhel}') -eq 7; then
|
||||
case `arch` in
|
||||
x86_64)
|
||||
# (rhel7) systemtap-3.3-3.el7.x86_64, kernel-3.10.0-993.el7.x86_64
|
||||
if test $(rpm -q --queryformat='%{version}\n' kernel | awk -F. '{print $1}') -eq 3; then
|
||||
EXPECTED_PASSES_TRESHOLD=32
|
||||
sed -i '/FAIL: cast_op_tracepoint.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: perf2.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: reg_alloc3.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: tracepoint1.stp/d' $_LOG || :
|
||||
elif test $(rpm -q --queryformat='%{version}\n' kernel | awk -F. '{print $1}') -eq 4; then
|
||||
# (rhel-alt-7) systemtap-3.3-3.el7.x86_64, kernel-4.14.0-115.el7a.x86_64
|
||||
echo "ERROR: known bug on rhel-alt ('map entry 0: Function not implemented')"
|
||||
echo "<@fche> # CONFIG_BPF_SYSCALL is not set"
|
||||
exit 0
|
||||
else
|
||||
echo "ERROR: UNSUPPORTED RHEL7 KERNEL VERSION"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "INFO: UNSUPPORTED RHEL7 ARCHITECTIRE ($(arch))"
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
elif test $(rpm --eval '0%{fedora}') -eq 29; then
|
||||
case `arch` in
|
||||
x86_64)
|
||||
EXPECTED_PASSES_TRESHOLD=33
|
||||
sed -i '/FAIL: array.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: bigmap1.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: cast_op_tracepoint.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: no_end.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: printf.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: reg_alloc3.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: string1.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: timer2.stp/d' $_LOG || :
|
||||
sed -i '/FAIL: tracepoint1.stp/d' $_LOG || :
|
||||
;;
|
||||
*)
|
||||
# No test results for other arches yet
|
||||
true;
|
||||
;;
|
||||
esac
|
||||
else
|
||||
echo "ERROR: UNSUPPORTED RHELMAJOR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
true _v_v_v_v_v_v_v_v_v_v_v_ UNEXPECTED FAILURES: _v_v_v_v_v_v_v_v_v_v_v_v_v_v_
|
||||
fgrep 'FAIL: ' $_LOG || :
|
||||
true -^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-
|
||||
|
||||
|
||||
EXPECTED_PASSES=$(grep -a '^PASS: ' $_LOG | wc -l)
|
||||
UNEXPECTED_FAILURES=$(grep -a '^FAIL: ' $_LOG | wc -l)
|
||||
|
||||
test ${EXPECTED_PASSES_TRESHOLD} -gt 1
|
||||
test 0${EXPECTED_PASSES} -ge 0${EXPECTED_PASSES_TRESHOLD}
|
||||
test 0${UNEXPECTED_FAILURES} -eq 0
|
||||
|
||||
rm $_LOG
|
||||
|
||||
set +xe
|
||||
|
||||
|
@ -1,55 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [[ "$1" == "TCLIST" ]]; then
|
||||
# Empty list means to run all the testcases:
|
||||
exit 0
|
||||
fi
|
||||
|
||||
set -xe
|
||||
|
||||
# It turns out that dg-extract-results.sh relies on the logfiles
|
||||
# summary (# of expected passes, # of unexpected failures, etc.) and
|
||||
# counts the summary values based on that. This is is okay for the
|
||||
# normal dg-extract-results.sh use-case where it combines together
|
||||
# correct (per single testcase) logs coming from parallel GDB testcase
|
||||
# runs, where each of the input logfiles has such summary.
|
||||
#
|
||||
# But in our case we are combining incomplete log snippets coming from
|
||||
# various terminated/incomplete/partial testsuite runs (kernel
|
||||
# stall/crash, watchdog termination etc), where the log snippets do not
|
||||
# have that summary (with an exception of the very last one). The
|
||||
# result is that only the last of the log snippets gets properly
|
||||
# counted, and the results from the other log snippets are ignored.
|
||||
#
|
||||
# rlRun "EXPECTED_PASSES=$(awk '/^# of expected passes/ {print $NF}' systemtap.sum)"
|
||||
# rlRun "UNEXPECTED_FAILURES=$(awk '/^# of unexpected failures/ {print $NF}' systemtap.sum)"
|
||||
#
|
||||
# So we really need to count the PASSes and FAILs on our own:
|
||||
#
|
||||
|
||||
EXPECTED_PASSES=$(grep -a '^PASS: ' systemtap.sum | wc -l)
|
||||
UNEXPECTED_FAILURES=$(grep -a '^FAIL: ' systemtap.sum | wc -l)
|
||||
|
||||
#
|
||||
# For this rough check, ignoring other states such as KFAIL and others
|
||||
# should be good enough.
|
||||
|
||||
case `arch` in
|
||||
x86_64)
|
||||
EXPECTED_PASSES_TRESHOLD=9000
|
||||
UNEXPECTED_FAILURES_TRESHOLD=800
|
||||
;;
|
||||
ppc64*)
|
||||
EXPECTED_PASSES_TRESHOLD=8000
|
||||
UNEXPECTED_FAILURES_TRESHOLD=750
|
||||
;;
|
||||
*)
|
||||
EXPECTED_PASSES_TRESHOLD=8000
|
||||
UNEXPECTED_FAILURES_TRESHOLD=500
|
||||
;;
|
||||
esac
|
||||
|
||||
test 0${EXPECTED_PASSES} -ge 0${EXPECTED_PASSES_TRESHOLD}
|
||||
test 0${UNEXPECTED_FAILURES} -le 0${UNEXPECTED_FAILURES_TRESHOLD}
|
||||
|
||||
set +xe
|
@ -1,453 +0,0 @@
|
||||
#! /bin/sh
|
||||
|
||||
# For a specified tool and optional list of test variants, extract
|
||||
# test results from one or more test summary (.sum) files and combine
|
||||
# the results into a new test summary file, sent to the standard output.
|
||||
# The resulting file can be used with test result comparison scripts for
|
||||
# results from tests that were run in parallel. See usage() below.
|
||||
|
||||
# Copyright (C) 2008-2016 Free Software Foundation, Inc.
|
||||
# Contributed by Janis Johnson <janis187@us.ibm.com>
|
||||
#
|
||||
# This file is part of GCC.
|
||||
#
|
||||
# GCC is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# GCC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
PROGNAME=dg-extract-results.sh
|
||||
|
||||
# Try to use the python version if possible, since it tends to be faster.
|
||||
PYTHON_VER=`echo "$0" | sed 's/sh$/py/'`
|
||||
if test "$PYTHON_VER" != "$0" &&
|
||||
test -f "$PYTHON_VER" &&
|
||||
python -c 'import sys; sys.exit (0 if sys.version_info >= (2, 6) else 1)' \
|
||||
> /dev/null 2> /dev/null; then
|
||||
exec python $PYTHON_VER "$@"
|
||||
fi
|
||||
|
||||
usage() {
|
||||
cat <<EOF >&2
|
||||
Usage: $PROGNAME [-t tool] [-l variant-list] [-L] sum-file ...
|
||||
|
||||
tool The tool (e.g. g++, libffi) for which to create a
|
||||
new test summary file. If not specified then all
|
||||
specified sum files must be for the same tool.
|
||||
variant-list One or more test variant names. If the list is
|
||||
not specified then one is constructed from all
|
||||
variants in the files for <tool>.
|
||||
sum-file A test summary file with the format of those
|
||||
created by runtest from DejaGnu.
|
||||
If -L is used, merge *.log files instead of *.sum. In this
|
||||
mode the exact order of lines may not be preserved, just different
|
||||
Running *.exp chunks should be in correct order.
|
||||
EOF
|
||||
}
|
||||
|
||||
# Write a message to the standard error.
|
||||
|
||||
msg() {
|
||||
echo "$@" >&2
|
||||
}
|
||||
|
||||
# Parse the command-line options.
|
||||
|
||||
VARIANTS=""
|
||||
TOOL=""
|
||||
MODE="sum"
|
||||
|
||||
while getopts "l:t:L" ARG; do
|
||||
case $ARG in
|
||||
l) VARIANTS="${VARIANTS} ${OPTARG}";;
|
||||
t) test -z "$TOOL" || (msg "${PROGNAME}: only one tool can be specified"; exit 1);
|
||||
TOOL="${OPTARG}";;
|
||||
L) MODE="log";;
|
||||
\?) usage; exit 0;;
|
||||
esac
|
||||
done
|
||||
shift `expr ${OPTIND} - 1`
|
||||
|
||||
if test $# -lt 1 ; then
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
TMPDIR=${TMPDIR-/tmp}
|
||||
SUM_FILES="$@"
|
||||
FIRST_SUM=$1
|
||||
TMP=
|
||||
trap 'EXIT_STATUS=$?; rm -rf $TMP && exit $EXIT_STATUS' 0
|
||||
# Create a (secure) tmp directory for tmp files.
|
||||
{
|
||||
TMP=`(umask 077 && mktemp -d -q "${TMPDIR}/dg-combine-results-$$-XXXXXX") 2>/dev/null` &&
|
||||
test -n "$TMP" && test -d "$TMP"
|
||||
} ||
|
||||
{
|
||||
TMP=${TMPDIR}/dg-combine-results-$$-$RANDOM
|
||||
(umask 077 && mkdir $TMP)
|
||||
} ||
|
||||
{
|
||||
msg "${PROGNAME}: cannot create a temporary directory"
|
||||
{ (exit 1); exit 1; }
|
||||
}
|
||||
|
||||
# Find a good awk.
|
||||
|
||||
if test -z "$AWK" ; then
|
||||
for AWK in gawk nawk awk
|
||||
do
|
||||
if type $AWK 2>&1 | grep 'not found' > /dev/null 2>&1 ; then
|
||||
:
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# Verify that the specified summary files exist.
|
||||
|
||||
ERROR=0
|
||||
for FILE in $SUM_FILES
|
||||
do
|
||||
if ! test -f $FILE ; then
|
||||
msg "${PROGNAME}: file $FILE does not exist."
|
||||
ERROR=1
|
||||
fi
|
||||
done
|
||||
test $ERROR -eq 0 || exit 1
|
||||
|
||||
# Test if grep supports the '--text' option
|
||||
|
||||
GREP=grep
|
||||
|
||||
if echo -e '\x00foo\x00' | $GREP --text foo > /dev/null 2>&1 ; then
|
||||
GREP="grep --text"
|
||||
else
|
||||
# Our grep does not recognize the '--text' option. We have to
|
||||
# treat our files in order to remove any non-printable character.
|
||||
for file in $SUM_FILES ; do
|
||||
mv $file ${file}.orig
|
||||
cat -v ${file}.orig > $file
|
||||
done
|
||||
fi
|
||||
|
||||
if [ -z "$TOOL" ]; then
|
||||
# If no tool was specified, all specified summary files must be for
|
||||
# the same tool.
|
||||
|
||||
CNT=`$GREP '=== .* tests ===' $SUM_FILES | $AWK '{ print $3 }' | sort -u | wc -l`
|
||||
if [ $CNT -eq 1 ]; then
|
||||
TOOL=`$GREP '=== .* tests ===' $FIRST_SUM | $AWK '{ print $2 }'`
|
||||
else
|
||||
msg "${PROGNAME}: sum files are for multiple tools, specify a tool"
|
||||
msg ""
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
# Ignore the specified summary files that are not for this tool. This
|
||||
# should keep the relevant files in the same order.
|
||||
|
||||
SUM_FILES=`$GREP -l "=== $TOOL" $SUM_FILES`
|
||||
if test -z "$SUM_FILES" ; then
|
||||
msg "${PROGNAME}: none of the specified files are results for $TOOL"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$TOOL" = acats ]; then
|
||||
# Acats *.sum or *.log files aren't dejagnu generated, and they have
|
||||
# somewhat different format.
|
||||
ACATS_AWK=${TMP}/acats.awk
|
||||
cat <<EOF > $ACATS_AWK
|
||||
BEGIN {
|
||||
print_prologue=1; curfile=""; insummary=0
|
||||
passcnt=0; failcnt=0; unsupcnt=0; failures=""
|
||||
}
|
||||
/^[ \t]*=== acats configuration ===/ {
|
||||
insummary=0
|
||||
if (print_prologue) print
|
||||
next
|
||||
}
|
||||
/^[ \t]*=== acats tests ===/ {
|
||||
if (print_prologue) print
|
||||
print_prologue=0
|
||||
next
|
||||
}
|
||||
/^Running chapter / {
|
||||
if (curfile) close (curfile)
|
||||
curfile="${TMP}/chapter-"\$3
|
||||
print >> curfile
|
||||
next
|
||||
}
|
||||
/^[ \t]*=== acats Summary ===/ {
|
||||
if (curfile) close (curfile)
|
||||
curfile=""
|
||||
insummary=1
|
||||
next
|
||||
}
|
||||
/^# of expected passes/ { if (insummary == 1) passcnt += \$5; next; }
|
||||
/^# of unexpected failures/ { if (insummary == 1) failcnt += \$5; next; }
|
||||
/^# of unsupported tests/ { if (insummary == 1) unsupcnt += \$5; next; }
|
||||
/^\*\*\* FAILURES: / {
|
||||
if (insummary == 1) {
|
||||
if (failures) sub(/^\*\*\* FAILURES:/,"")
|
||||
failures=failures""\$0
|
||||
}
|
||||
}
|
||||
{
|
||||
if (print_prologue) { print; next }
|
||||
if (curfile) print >> curfile
|
||||
}
|
||||
END {
|
||||
system ("cat ${TMP}/chapter-*")
|
||||
print " === acats Summary ==="
|
||||
print "# of expected passes " passcnt
|
||||
print "# of unexpected failures " failcnt
|
||||
if (unsupcnt) print "# of unsupported tests " unsupcnt
|
||||
if (failures) print failures
|
||||
}
|
||||
EOF
|
||||
|
||||
rm -f ${TMP}/chapter-*
|
||||
$AWK -f $ACATS_AWK $SUM_FILES
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# If no variants were specified, find all variants in the remaining
|
||||
# summary files. Otherwise, ignore specified variants that aren't in
|
||||
# any of those summary files.
|
||||
|
||||
if test -z "$VARIANTS" ; then
|
||||
VAR_AWK=${TMP}/variants.awk
|
||||
cat <<EOF > $VAR_AWK
|
||||
/^Schedule of variations:/ { in_vars=1; next }
|
||||
/^$/ { in_vars=0 }
|
||||
/^Running target/ { exit }
|
||||
{ if (in_vars==1) print \$1; else next }
|
||||
EOF
|
||||
|
||||
touch ${TMP}/varlist
|
||||
for FILE in $SUM_FILES; do
|
||||
$AWK -f $VAR_AWK $FILE >> ${TMP}/varlist
|
||||
done
|
||||
VARIANTS="`sort -u ${TMP}/varlist`"
|
||||
else
|
||||
VARS="$VARIANTS"
|
||||
VARIANTS=""
|
||||
for VAR in $VARS
|
||||
do
|
||||
$GREP "Running target $VAR" $SUM_FILES > /dev/null && VARIANTS="$VARIANTS $VAR"
|
||||
done
|
||||
fi
|
||||
|
||||
# Find out if we have more than one variant, or any at all.
|
||||
|
||||
VARIANT_COUNT=0
|
||||
for VAR in $VARIANTS
|
||||
do
|
||||
VARIANT_COUNT=`expr $VARIANT_COUNT + 1`
|
||||
done
|
||||
|
||||
if test $VARIANT_COUNT -eq 0 ; then
|
||||
msg "${PROGNAME}: no file for $TOOL has results for the specified variants"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cat $SUM_FILES \
|
||||
| $AWK '/^Running/ { if ($2 != "target" && $3 == "...") print "EXPFILE: "$2 } ' \
|
||||
| sort -u > ${TMP}/expfiles
|
||||
|
||||
# Write the begining of the combined summary file.
|
||||
|
||||
head -n 2 $FIRST_SUM
|
||||
echo
|
||||
echo " === $TOOL tests ==="
|
||||
echo
|
||||
echo "Schedule of variations:"
|
||||
for VAR in $VARIANTS
|
||||
do
|
||||
echo " $VAR"
|
||||
done
|
||||
echo
|
||||
|
||||
# For each test variant for the tool, copy test reports from each of the
|
||||
# summary files. Set up two awk scripts from within the loop to
|
||||
# initialize VAR and TOOL with the script, rather than assuming that the
|
||||
# available version of awk can pass variables from the command line.
|
||||
|
||||
for VAR in $VARIANTS
|
||||
do
|
||||
GUTS_AWK=${TMP}/guts.awk
|
||||
cat << EOF > $GUTS_AWK
|
||||
BEGIN {
|
||||
variant="$VAR"
|
||||
firstvar=1
|
||||
expfileno=1
|
||||
cnt=0
|
||||
print_using=0
|
||||
need_close=0
|
||||
}
|
||||
/^EXPFILE: / {
|
||||
expfiles[expfileno] = \$2
|
||||
expfilesr[\$2] = expfileno
|
||||
expfileno = expfileno + 1
|
||||
}
|
||||
/^Running target / {
|
||||
curvar = \$3
|
||||
if (variant == curvar && firstvar == 1) { print; print_using=1; firstvar = 0 }
|
||||
next
|
||||
}
|
||||
/^Using / {
|
||||
if (variant == curvar && print_using) { print; next }
|
||||
}
|
||||
/^Running .*\\.exp \\.\\.\\./ {
|
||||
print_using=0
|
||||
if (variant == curvar) {
|
||||
if (need_close) close(curfile)
|
||||
curfile="${TMP}/list"expfilesr[\$2]
|
||||
expfileseen[\$2]=expfileseen[\$2] + 1
|
||||
need_close=0
|
||||
testname="00"
|
||||
next
|
||||
}
|
||||
}
|
||||
/^\t\t=== .* ===$/ { curvar = ""; next }
|
||||
/^(PASS|XPASS|FAIL|XFAIL|UNRESOLVED|WARNING|ERROR|UNSUPPORTED|UNTESTED|KFAIL):/ {
|
||||
testname=\$2
|
||||
# Ugly hack for gfortran.dg/dg.exp
|
||||
if ("$TOOL" == "gfortran" && testname ~ /^gfortran.dg\/g77\//)
|
||||
testname="h"testname
|
||||
}
|
||||
/^$/ { if ("$MODE" == "sum") next }
|
||||
{ if (variant == curvar && curfile) {
|
||||
if ("$MODE" == "sum") {
|
||||
printf "%s %08d|", testname, cnt >> curfile
|
||||
cnt = cnt + 1
|
||||
}
|
||||
filewritten[curfile]=1
|
||||
need_close=1
|
||||
print >> curfile
|
||||
} else
|
||||
next
|
||||
}
|
||||
END {
|
||||
n=1
|
||||
while (n < expfileno) {
|
||||
if (expfileseen[expfiles[n]]) {
|
||||
print "Running "expfiles[n]" ..."
|
||||
if (filewritten["${TMP}/list"n]) {
|
||||
if (expfileseen[expfiles[n]] == 1)
|
||||
cmd="cat"
|
||||
else
|
||||
cmd="LC_ALL=C sort"
|
||||
if ("$MODE" == "sum")
|
||||
system (cmd" ${TMP}/list"n" | sed -n 's/^[^ ]* [^ |]*|//p'")
|
||||
else
|
||||
system ("cat ${TMP}/list"n)
|
||||
}
|
||||
}
|
||||
n = n + 1
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
SUMS_AWK=${TMP}/sums.awk
|
||||
rm -f $SUMS_AWK
|
||||
cat << EOF > $SUMS_AWK
|
||||
BEGIN {
|
||||
variant="$VAR"
|
||||
tool="$TOOL"
|
||||
passcnt=0; failcnt=0; untstcnt=0; xpasscnt=0; xfailcnt=0; kpasscnt=0; kfailcnt=0; unsupcnt=0; unrescnt=0;
|
||||
curvar=""; insummary=0
|
||||
}
|
||||
/^Running target / { curvar = \$3; next }
|
||||
/^# of / { if (variant == curvar) insummary = 1 }
|
||||
/^# of expected passes/ { if (insummary == 1) passcnt += \$5; next; }
|
||||
/^# of unexpected successes/ { if (insummary == 1) xpasscnt += \$5; next; }
|
||||
/^# of unexpected failures/ { if (insummary == 1) failcnt += \$5; next; }
|
||||
/^# of expected failures/ { if (insummary == 1) xfailcnt += \$5; next; }
|
||||
/^# of unknown successes/ { if (insummary == 1) kpasscnt += \$5; next; }
|
||||
/^# of known failures/ { if (insummary == 1) kfailcnt += \$5; next; }
|
||||
/^# of untested testcases/ { if (insummary == 1) untstcnt += \$5; next; }
|
||||
/^# of unresolved testcases/ { if (insummary == 1) unrescnt += \$5; next; }
|
||||
/^# of unsupported tests/ { if (insummary == 1) unsupcnt += \$5; next; }
|
||||
/^$/ { if (insummary == 1)
|
||||
{ insummary = 0; curvar = "" }
|
||||
next
|
||||
}
|
||||
{ next }
|
||||
END {
|
||||
printf ("\t\t=== %s Summary for %s ===\n\n", tool, variant)
|
||||
if (passcnt != 0) printf ("# of expected passes\t\t%d\n", passcnt)
|
||||
if (failcnt != 0) printf ("# of unexpected failures\t%d\n", failcnt)
|
||||
if (xpasscnt != 0) printf ("# of unexpected successes\t%d\n", xpasscnt)
|
||||
if (xfailcnt != 0) printf ("# of expected failures\t\t%d\n", xfailcnt)
|
||||
if (kpasscnt != 0) printf ("# of unknown successes\t\t%d\n", kpasscnt)
|
||||
if (kfailcnt != 0) printf ("# of known failures\t\t%d\n", kfailcnt)
|
||||
if (untstcnt != 0) printf ("# of untested testcases\t\t%d\n", untstcnt)
|
||||
if (unrescnt != 0) printf ("# of unresolved testcases\t%d\n", unrescnt)
|
||||
if (unsupcnt != 0) printf ("# of unsupported tests\t\t%d\n", unsupcnt)
|
||||
}
|
||||
EOF
|
||||
|
||||
PVAR=`echo $VAR | sed 's,/,.,g'`
|
||||
TMPFILE=${TMP}/var-$PVAR
|
||||
rm -f $TMPFILE
|
||||
rm -f ${TMP}/list*
|
||||
cat ${TMP}/expfiles $SUM_FILES | $AWK -f $GUTS_AWK
|
||||
cat $SUM_FILES | $AWK -f $SUMS_AWK > $TMPFILE
|
||||
# If there are multiple variants, output the counts for this one;
|
||||
# otherwise there will just be the final counts at the end.
|
||||
test $VARIANT_COUNT -eq 1 || cat $TMPFILE
|
||||
done
|
||||
|
||||
# Set up an awk script to get the combined summary counts for the tool.
|
||||
|
||||
TOTAL_AWK=${TMP}/total.awk
|
||||
cat << EOF > $TOTAL_AWK
|
||||
BEGIN {
|
||||
tool="$TOOL"
|
||||
passcnt=0; failcnt=0; untstcnt=0; xpasscnt=0; xfailcnt=0; kfailcnt=0; unsupcnt=0; unrescnt=0
|
||||
}
|
||||
/^# of expected passes/ { passcnt += \$5 }
|
||||
/^# of unexpected failures/ { failcnt += \$5 }
|
||||
/^# of unexpected successes/ { xpasscnt += \$5 }
|
||||
/^# of expected failures/ { xfailcnt += \$5 }
|
||||
/^# of unknown successes/ { kpasscnt += \$5 }
|
||||
/^# of known failures/ { kfailcnt += \$5 }
|
||||
/^# of untested testcases/ { untstcnt += \$5 }
|
||||
/^# of unresolved testcases/ { unrescnt += \$5 }
|
||||
/^# of unsupported tests/ { unsupcnt += \$5 }
|
||||
END {
|
||||
printf ("\n\t\t=== %s Summary ===\n\n", tool)
|
||||
if (passcnt != 0) printf ("# of expected passes\t\t%d\n", passcnt)
|
||||
if (failcnt != 0) printf ("# of unexpected failures\t%d\n", failcnt)
|
||||
if (xpasscnt != 0) printf ("# of unexpected successes\t%d\n", xpasscnt)
|
||||
if (xfailcnt != 0) printf ("# of expected failures\t\t%d\n", xfailcnt)
|
||||
if (kpasscnt != 0) printf ("# of unknown successes\t\t%d\n", kpasscnt)
|
||||
if (kfailcnt != 0) printf ("# of known failures\t\t%d\n", kfailcnt)
|
||||
if (untstcnt != 0) printf ("# of untested testcases\t\t%d\n", untstcnt)
|
||||
if (unrescnt != 0) printf ("# of unresolved testcases\t%d\n", unrescnt)
|
||||
if (unsupcnt != 0) printf ("# of unsupported tests\t\t%d\n", unsupcnt)
|
||||
}
|
||||
EOF
|
||||
|
||||
# Find the total summaries for the tool and add to the end of the output.
|
||||
cat ${TMP}/var-* | $AWK -f $TOTAL_AWK
|
||||
|
||||
# This is ugly, but if there's version output from the compiler under test
|
||||
# at the end of the file, we want it. The other thing that might be there
|
||||
# is the final summary counts.
|
||||
tail -2 $FIRST_SUM | $GREP '^#' > /dev/null || tail -2 $FIRST_SUM
|
||||
|
||||
exit 0
|
@ -1,49 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
TEMPDIR=$( mktemp -d )
|
||||
ORIGPWD=$( pwd )
|
||||
|
||||
cp /mnt/scratch/mcermak/testlogs/systemtap.upstream/*tar.xz $TEMPDIR/
|
||||
|
||||
|
||||
pushd $TEMPDIR || exit 1
|
||||
|
||||
# rename files so that identical commit hashes get identical (lowest possible) timestamp for sorting purposes
|
||||
HASHES=$(ls systemtap*mcermak*tar.xz | awk -F\. '{print $4}' | sort -u)
|
||||
for h in $HASHES; do
|
||||
echo Processing hash $h
|
||||
MINSTAMP4HASH=$( ls *$h* | tr '-' '.' | awk -F\. '{print $9}' | sort -n | grep '[0-9]\+' | head -n 1 )
|
||||
echo Min stamp for hash is: $MINSTAMP4HASH
|
||||
PKG4HASH=$( ls *$h* )
|
||||
for p in $PKG4HASH; do
|
||||
echo Processing pkg $p
|
||||
PKGSTAMP=$( echo $p | tr '-' '.' | awk -F\. '{print $9}' )
|
||||
rename 'systemtap' "$MINSTAMP4HASH" $p
|
||||
done
|
||||
done
|
||||
|
||||
# extract systemtap.sum files and rename them
|
||||
for f in $( ls *tar.xz ); do
|
||||
tar xJf $f systemtap.sum
|
||||
mv systemtap.sum $f.sum
|
||||
rename 'tar.xz.sum' 'log' $f.sum
|
||||
done
|
||||
|
||||
sh $ORIGPWD/report-helper.sh | tee wiki.out
|
||||
|
||||
sed -i 's/UNKNOWN/?/g' wiki.out
|
||||
sed -i 's/UNTESTED/-/g' wiki.out
|
||||
sed -i 's/PASS/P/g' wiki.out
|
||||
sed -i 's/FAIL/F/g' wiki.out
|
||||
sed -i 's/ERROR/E/g' wiki.out
|
||||
|
||||
|
||||
echo uploading logs to scratch...
|
||||
OUT=/mnt/scratch/mcermak/testlogs/out
|
||||
rm -rf $OUT && mkdir -p $OUT && chmod a+rwx $OUT && cp -v *tar.xz $OUT/
|
||||
|
||||
echo uploading to wiki...
|
||||
cat wiki.out | $ORIGPWD/wikiup 'mcermak/systemtap.upstream'
|
||||
|
||||
popd # $TEMPDIR
|
||||
rm -rf $TEMPDIR
|
@ -1,130 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
HASHES=$( ls | awk -F\. '{print $4}' | sort -u )
|
||||
ARCHES=$( ls *log | awk -F- '{print $(NF-1) }' | awk -F. '{print $NF}' | sort -u )
|
||||
|
||||
declare -A MAXTESTS
|
||||
|
||||
for p in $HASHES; do
|
||||
MAXTESTS[$p]=0
|
||||
for a in $ARCHES; do
|
||||
c=$( ls *log | grep $p | grep $a | wc -l )
|
||||
test $c -gt ${MAXTESTS[$p]} && MAXTESTS[$p]=$c
|
||||
done
|
||||
done
|
||||
|
||||
TESTCASES=$( cat *log | awk '/^Running\ \.\/systemtap/ {print $2}' | sort -u )
|
||||
|
||||
TEMPFILE=$( mktemp )
|
||||
|
||||
function getCaseResults() {
|
||||
casename=$1
|
||||
logfile=$2
|
||||
casename=$( echo $casename | tr "/" "." )
|
||||
cmd="cat $logfile | sed -e '/$casename/,/^Running/ !d'"
|
||||
eval "$cmd" | head -n -1
|
||||
}
|
||||
|
||||
function getWorstResult() {
|
||||
results="$1"
|
||||
retval='UNKNOWN'
|
||||
echo "$results" | grep -q '^PASS' && retval='PASS'
|
||||
echo "$results" | grep -q '^KPASS' && retval='KPASS'
|
||||
echo "$results" | grep -q '^XPASS' && retval='XPASS'
|
||||
echo "$results" | grep -q '^UNTESTED' && retval='UNTESTED'
|
||||
echo "$results" | grep -q '^KFAIL' && retval='KFAIL'
|
||||
echo "$results" | grep -q '^XFAIL' && retval='XFAIL'
|
||||
echo "$results" | grep -q '^FAIL' && retval='FAIL'
|
||||
echo "$results" | grep -q '^ERROR' && retval='ERROR'
|
||||
echo $retval
|
||||
}
|
||||
|
||||
function getResult() {
|
||||
casename=$1
|
||||
logfile=$2
|
||||
worstResult=$( getWorstResult "$( getCaseResults "$casename" "$logfile" )" )
|
||||
if test -s $logfile; then
|
||||
loglink="http://nfs.englab.brq.redhat.com/scratch/mcermak/testlogs/out/$( echo $logfile | sed 's/log/tar\.xz/' )"
|
||||
echo "[[$loglink|$worstResult]]"
|
||||
else
|
||||
echo $worstResult
|
||||
fi
|
||||
}
|
||||
|
||||
function getLogs() {
|
||||
package=$1
|
||||
arch=$2
|
||||
logcnt=$3
|
||||
availogcont=$( ls *log | grep $package | grep $arch | wc -l )
|
||||
remainlogcnt=$(( $logcnt - $availogcont ))
|
||||
logs=$( ls *log | grep $package | grep $arch )
|
||||
for i in $( seq 1 $remainlogcnt ); do
|
||||
logs="$logs $TEMPFILE"
|
||||
done
|
||||
echo $logs
|
||||
}
|
||||
|
||||
function colorizeResult() {
|
||||
result=$1
|
||||
if echo $result | egrep -q '(KFAIL|XFAIL)'; then
|
||||
echo "<#a2eea2> $result"
|
||||
elif echo $result | egrep -q '(FAIL|ERROR)'; then
|
||||
echo "<#f30000> $result"
|
||||
elif echo $result | egrep -q '(UNKNOWN)'; then
|
||||
echo "<#ffffff> $result"
|
||||
else
|
||||
echo "<#a2eea2> $result"
|
||||
fi
|
||||
}
|
||||
|
||||
function getResultSet() {
|
||||
package=$1
|
||||
arch=$2
|
||||
testcase=$3
|
||||
#echo -n "|| $package ($arch) "
|
||||
echo -n "|| '''$arch''' "
|
||||
for logfile in $( getLogs "$package" "$arch" ${MAXTESTS[$package]} ); do
|
||||
result=$( getResult "$testcase" "$logfile" )
|
||||
echo -n "||$( colorizeResult "$result" ) "
|
||||
done
|
||||
}
|
||||
|
||||
function getBugsForTestcase() {
|
||||
testcase=$1
|
||||
testcase=$( echo $testcase | sed 's/^\.\///' | tr "/" "." )
|
||||
cmd="awk '/$testcase/ {print \$2}' bugs.txt"
|
||||
eval "$cmd"
|
||||
}
|
||||
|
||||
function getBugLinksForTestcase() {
|
||||
bznos="$1"
|
||||
if ! test -z "$bznos"; then
|
||||
echo
|
||||
for bzno in $bznos; do
|
||||
echo -e "[[https://bugzilla.redhat.com/show_bug.cgi?id=$bzno|bz$bzno]]"
|
||||
done
|
||||
echo
|
||||
fi
|
||||
}
|
||||
|
||||
echo -n "== "
|
||||
first=1
|
||||
for package in $HASHES; do
|
||||
test $first -eq 0 && echo -n "<-> "
|
||||
echo -n "$package "
|
||||
first=0
|
||||
done
|
||||
echo " =="
|
||||
|
||||
for testcase in $TESTCASES; do
|
||||
echo -e "\n=== $testcase ===\n"
|
||||
getBugLinksForTestcase "$( getBugsForTestcase "$testcase" )"
|
||||
for arch in $ARCHES; do
|
||||
for __hash in $HASHES; do
|
||||
getResultSet $__hash $arch $testcase
|
||||
done
|
||||
echo " ||"
|
||||
done
|
||||
done
|
||||
|
||||
|
@ -1,22 +0,0 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
import sys
|
||||
import xmlrpclib
|
||||
|
||||
wikilocation = sys.argv[1]
|
||||
wikicontent = sys.stdin.read()
|
||||
|
||||
if not wikilocation.startswith("mcermak/"):
|
||||
print "wiki location must start with mcermak/"
|
||||
sys.exit(1)
|
||||
|
||||
user = 'xmlrpc2'
|
||||
password = 'fo0m4nchU+'
|
||||
url='http://wiki.test.redhat.com/'
|
||||
wiki = xmlrpclib.ServerProxy(url + '?action=xmlrpc2', allow_none=False)
|
||||
auth_token = wiki.getAuthToken(user, password)
|
||||
mc = xmlrpclib.MultiCall(wiki)
|
||||
mc.applyAuthToken(auth_token)
|
||||
mc.putPage(wikilocation, wikicontent)
|
||||
result = mc()
|
||||
|
@ -1,21 +0,0 @@
|
||||
#/bin/bash
|
||||
|
||||
test -x
|
||||
__TRESHOLD=$(( 240 * 60 ))
|
||||
__SLEEP=$(( 15 * 60 ))
|
||||
__LOG="$1"
|
||||
test -z $__LOG && exit 1
|
||||
test +x
|
||||
|
||||
echo "`date` internal watchdog $$ starting." >> $__LOG
|
||||
while true; do
|
||||
sleep $__SLEEP
|
||||
__DELTA=$(( `date +'%s'` - `stat -c '%Y' $__LOG` ))
|
||||
if [[ $__DELTA -gt $__TRESHOLD ]]; then
|
||||
echo "`date` internal watchdog $$ rebooting due to inactivity." >> $__LOG
|
||||
sync
|
||||
sleep 1m
|
||||
reboot -f
|
||||
sleep 5m
|
||||
fi
|
||||
done
|
@ -1,50 +0,0 @@
|
||||
summary: testsuite-upstream-raw
|
||||
description: ''
|
||||
contact: Martin Cermak <mcermak@redhat.com>
|
||||
component:
|
||||
- systemtap
|
||||
test: ./runtest.sh
|
||||
# test: /bin/true
|
||||
framework: beakerlib
|
||||
recommend:
|
||||
- avahi-debuginfo
|
||||
- avahi-devel
|
||||
- boost-devel
|
||||
- byteman
|
||||
- coreutils
|
||||
- coreutils-debuginfo
|
||||
- crash-devel
|
||||
- dejagnu
|
||||
- '@development'
|
||||
- '@development-tools'
|
||||
- dyninst-devel
|
||||
- elfutils-devel
|
||||
- gcc-c++
|
||||
- gettext-devel
|
||||
- git
|
||||
- glibc-debuginfo
|
||||
- glibc-devel
|
||||
- libselinux-devel
|
||||
- libstdc++-devel
|
||||
- m4
|
||||
- nss-devel
|
||||
- pkgconfig
|
||||
- postgresql-debuginfo
|
||||
- postgresql-server
|
||||
- python
|
||||
- python3-debuginfo
|
||||
- python-debuginfo
|
||||
- python-libs-debuginfo
|
||||
- rpm-devel
|
||||
- sqlite-devel
|
||||
- systemtap
|
||||
- systemtap-testsuite
|
||||
- tcl
|
||||
- xz
|
||||
- zlib-devel
|
||||
- sqlite
|
||||
- systemtap-debuginfo
|
||||
- kernel-headers
|
||||
duration: 72h
|
||||
extra-summary: /tools/systemtap/Regression/testsuite-upstream-raw
|
||||
extra-task: /tools/systemtap/Regression/testsuite-upstream-raw
|
@ -1,282 +0,0 @@
|
||||
#!/bin/bash
|
||||
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#
|
||||
# runtest.sh of /tools/systemtap/Regression/testsuite-upstream-raw
|
||||
# Description: testsuite-upstream-raw
|
||||
# Author: Martin Cermak <mcermak@redhat.com>
|
||||
#
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#
|
||||
# Copyright (c) 2014 Red Hat, Inc.
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation, either version 2 of
|
||||
# the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be
|
||||
# useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
# PURPOSE. See the GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see http://www.gnu.org/licenses/.
|
||||
#
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
# Include Beaker environment
|
||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
||||
|
||||
# What part of the testsuite should we run (and then check for errors)?
|
||||
_WHAT=${_WHAT:-DEFAULT}
|
||||
|
||||
export AVC_ERROR='+no_avc_check'
|
||||
touch /tmp/disable-qe-abrt
|
||||
|
||||
unset DEBUGINFOD_PROGRESS
|
||||
if test $(rpm --eval "0%{rhel}") -ge 9; then
|
||||
# Allow use of debuginfod
|
||||
export DEBUGINFOD_URLS=http://debuginfod.usersys.redhat.com:3632/
|
||||
# export DEBUGINFOD_PROGRESS=1
|
||||
else
|
||||
unset DEBUGINFOD_URLS
|
||||
fi
|
||||
|
||||
trap '' SIGHUP SIGINT SIGQUIT SIGABRT
|
||||
|
||||
ORIGPWD=$( pwd )
|
||||
|
||||
PKGMGR="yum --skip-broken --nogpgcheck"
|
||||
rpm -q dnf && PKGMGR="dnf --setopt=strict=0 --nogpgcheck"
|
||||
|
||||
STARTDATE=$(date +%Y-%m-%d-%H-%M-%S)
|
||||
STAPSRPM=$(rpm -qif `which stap` | awk '/Source RPM/ {print $NF}' | sort -u | sed 's/\.src\.rpm//')
|
||||
SUITERPM=$(rpm --queryformat '%{name}\n' -qf `which stap` | grep -o '.*systemtap' | sort -u)-testsuite
|
||||
SUITELOC=$(rpm -ql $SUITERPM | grep -o '.*systemtap\/testsuite/' | sort -u)
|
||||
|
||||
test_primary_arch_only ()
|
||||
{
|
||||
echo "=== TESTING PRIMARY ARCH ONLY ==="
|
||||
sed -i '/^proc arch_compile_flags/,/^}/d' $SUITELOC/lib/compile_flags.exp
|
||||
echo 'proc arch_compile_flags {} { return 1 }' >> $SUITELOC/lib/compile_flags.exp
|
||||
}
|
||||
|
||||
# For devtoolset, compat arch support was dropped for non-x86_64 arches. Ref: bz1493500
|
||||
if echo $SUITELOC | grep -q toolset && arch | egrep -q '^(ppc64|s390x)$'; then
|
||||
test_primary_arch_only
|
||||
elif test $(rpm -E '0%{rhel}') -ge 8 -a "$(arch)" != "x86_64"; then
|
||||
test_primary_arch_only
|
||||
fi
|
||||
|
||||
# Currently the Makefile overrides what was set in the env via
|
||||
# http://pkgs.devel.redhat.com/cgit/rpms/devtoolset-7/commit/?h=devtoolset-7.1-rhel-7&id=e305f5912a13bd2ca04ac319afca50bfab6f4aea
|
||||
# And actually if the base rhel dyninst is installed, the dts testsuite runs against it rather than agains
|
||||
# the dts-stap - producing irrelevant test results.
|
||||
#
|
||||
# A real fix on the stap side might be:
|
||||
# -LD_LIBRARY_PATH=$(DESTDIR)$(libdir)/systemtap
|
||||
# +LD_LIBRARY_PATH=$(DESTDIR)$(libdir)/systemtap:$(DESTDIR)$(libdir)/dyninst
|
||||
# in the Makefile.am etc, but let's work this around for now in a way that we simply use the
|
||||
# LD_LIBRARY_PATH taken directly from the env:
|
||||
if echo $SUITELOC | grep -q toolset; then
|
||||
sed -i 's/^LD_LIBRARY_PATH/# LD_LIBRARY_PATH/' $SUITELOC/Makefile
|
||||
fi
|
||||
|
||||
rlJournalStart
|
||||
rlPhaseStartSetup
|
||||
rlLogInfo "SUITERPM=$SUITERPM"
|
||||
rlLogInfo "SUITELOC=$SUITELOC"
|
||||
rlRun "pushd $SUITELOC"
|
||||
rlServiceStop firewalld
|
||||
rlServiceStop iptables
|
||||
rlServiceStop ip6tables
|
||||
rlServiceStart avahi-daemon
|
||||
rlRun "rpm -qa | grep ^kernel | grep -v `uname -r` | xargs rpm -e --nodeps" 0-255
|
||||
# if ! (uname -r | fgrep -q '.rt'); then
|
||||
# rlRun "$ORIGPWD/stap-prep" 0,127 || \
|
||||
# rlRun "stap-prep" 0,127
|
||||
# fi
|
||||
rlRun "sysctl -w kernel.panic=1"
|
||||
rlRun "sysctl -w kernel.panic_on_oops=1"
|
||||
rlRun "$PKGMGR -y install --setopt=multilib_policy=all libstdc++ dejagnu elfutils-devel gettext libgcc glibc-devel gcc-c++ libstdc++-devel dyninst dyninst-devel"
|
||||
rlPhaseEnd
|
||||
|
||||
|
||||
MYDMESGDIR=/root/mydmesg
|
||||
mkdir -p $MYDMESGDIR
|
||||
if strings $(which dmesg) | fgrep -q -- '-w'; then
|
||||
rlPhaseStart FAIL "Run dmesg recorder."
|
||||
MYTIMESTAMP=$(date +%s)
|
||||
dmesg -wH > $MYDMESGDIR/dmesg$MYTIMESTAMP &
|
||||
MYDMESGPID=$!
|
||||
rlLogInfo "Dmesg recorder file: $MYDMESGDIR/dmesg$MYTIMESTAMP"
|
||||
rlLogInfo "Dmesg PID: $MYDMESGPID"
|
||||
rlPhaseEnd
|
||||
fi
|
||||
|
||||
rlPhaseStart FAIL "sanity check"
|
||||
rlRun "stap -vve 'probe kernel.function(\"vfs_read\"){ log(\"hey!\"); exit() } probe timer.s(60){log(\"timeout\"); exit()}'"
|
||||
rlRun "stap -vvl 'process(\"/usr/sbin/fdisk\").function(\"main\")'" 0-255
|
||||
rlPhaseEnd
|
||||
|
||||
if ! test -f $SUITELOC/systemtap.log; then
|
||||
rlPhaseStart WARN "Apply blacklist"
|
||||
# === RHEL7 ===
|
||||
if rlIsRHEL 7; then
|
||||
if arch | grep -q s390; then
|
||||
true
|
||||
# PR17270
|
||||
#rlRun "rm -f systemtap.onthefly/hrtimer_onthefly.exp"
|
||||
#rlRun "rm -f systemtap.onthefly/uprobes_onthefly.exp"
|
||||
#rlRun "rm -f systemtap.onthefly/kprobes_onthefly.exp"
|
||||
# PR17140
|
||||
#rlRun "rm -f systemtap.examples/profiling/functioncallcount.stp"
|
||||
elif arch | grep -q ppc; then
|
||||
true
|
||||
# PR17270
|
||||
#rlRun "rm -f systemtap.onthefly/hrtimer_onthefly.exp"
|
||||
#rlRun "rm -f systemtap.onthefly/uprobes_onthefly.exp"
|
||||
#rlRun "rm -f systemtap.onthefly/kprobes_onthefly.exp"
|
||||
# PR17126
|
||||
#rlRun "rm -f systemtap.base/tracepoints.exp"
|
||||
# BZ1153082
|
||||
#rlRun "rm -f systemtap.clone/main_quiesce.exp"
|
||||
#elif rpm -q systemtap | grep -q '2.4-16.el7_0'; then
|
||||
# BZ1145958
|
||||
#rlRun "rm -f systemtap.base/process_resume.exp"
|
||||
fi
|
||||
# === FEDORA ===
|
||||
elif grep -qi fedora /etc/redhat-release; then
|
||||
# BZ1153082
|
||||
rlRun "rm -f systemtap.clone/main_quiesce.exp"
|
||||
fi
|
||||
|
||||
# Work around problem fixed in https://sourceware.org/git/gitweb.cgi?p=systemtap.git;a=commitdiff;h=a9b0aa4dbd1aa7a1c36eba8102e1445e8f2eb8b8
|
||||
rlRun "sed -i 's/exit\ 0/return/' $(fgrep -ril 'exit 0' $(find . -type f -name '*.exp')) ||:"
|
||||
rlPhaseEnd
|
||||
else
|
||||
rlPhaseStart FAIL "Post-process anticipated reboot"
|
||||
# Sometimes the testsuite crashes the kernel or causes stall.
|
||||
# In case --ignore-panic is set, the box gets rebooted (bz1155644).
|
||||
# This shouldn't happen. It'd be nice to report it as FAIL, but that
|
||||
# appears to be too pedantic. We'll need this bell to ring when
|
||||
# too many unexpected failures get reported by the upstream test driver.
|
||||
# rlRun "false"
|
||||
|
||||
# Remove testcases that have already been run
|
||||
for tc in $( awk '/^Running.*exp\ \.\.\.$/ {print $2}' *systemtap.log ); do
|
||||
echo $tc | grep -q 'systemtap/notest.exp' && continue
|
||||
test -f $tc && rm -f $tc && rlLog "Removed $tc"
|
||||
done
|
||||
|
||||
#generate random hash
|
||||
HASH=$(date | md5sum | cut -c 1-32 -)
|
||||
|
||||
# save existing logs before creating new ones
|
||||
rlRun "mv systemtap.log ${HASH}-systemtap.log"
|
||||
rlRun "mv systemtap.sum ${HASH}-systemtap.sum"
|
||||
|
||||
# clean up garbage incl. systemtap.log
|
||||
rlRun "make clean"
|
||||
rlPhaseEnd
|
||||
fi
|
||||
|
||||
rlPhaseStartTest
|
||||
# Start internal watchdog if running in beaker
|
||||
if test -n $JOBID; then
|
||||
rlLogInfo "Starting internal watchdog ..."
|
||||
$ORIGPWD/internal-watchdog.sh "$SUITELOC/systemtap.sum" &
|
||||
__WATCHDOG_PID=$!
|
||||
sleep 3
|
||||
if ps -p $__WATCHDOG_PID; then
|
||||
rlLogInfo "Internal watchdog running (pid $__WATCHDOG_PID)."
|
||||
else
|
||||
rlFail "Problem starting the internal watchdog."
|
||||
fi
|
||||
fi
|
||||
|
||||
# The _WHAT env var allows the test to only run selected subset of all
|
||||
# the tests and perform specific checks on the resulting logs.
|
||||
#
|
||||
# Accepted values: BPF
|
||||
|
||||
# run the testsuite (grab the list of testcases from the respective check* file)
|
||||
TESTCASES=$(bash ${ORIGPWD}/check_${_WHAT}.sh TCLIST)
|
||||
rlRun "make RUNTESTFLAGS='$TESTCASES' installcheck 2>&1"
|
||||
|
||||
# Kill internal watchdog if running in beaker
|
||||
if ! test -z $JOBID; then
|
||||
rlLogInfo "Killing internal watchdog ..."
|
||||
kill -s TERM $__WATCHDOG_PID
|
||||
fi
|
||||
rlPhaseEnd
|
||||
|
||||
rlPhaseStart FAIL "Put all the log fragments together"
|
||||
rlRun "$ORIGPWD/dg-extract-results.sh *systemtap.sum > big-systemtap.sum"
|
||||
rlRun "$ORIGPWD/dg-extract-results.sh -L *systemtap.log > big-systemtap.log"
|
||||
rlRun "mv --force big-systemtap.sum systemtap.sum"
|
||||
rlRun "mv --force big-systemtap.log systemtap.log"
|
||||
# remove the hash-prefixed fragments
|
||||
# these are needed for the resume mode, but since we got to this point,
|
||||
# we most likely processed all the testcases somehow, put all the pieces
|
||||
# together and can start cleaning up and reporting
|
||||
rlRun "rm -f *-systemtap.{log,sum}"
|
||||
rlPhaseEnd
|
||||
|
||||
rlPhaseStart FAIL "rlFileSubmit logs"
|
||||
rlRun "xz --keep --force systemtap.log"
|
||||
rlFileSubmit "systemtap.log.xz"
|
||||
rlRun "xz --keep --force systemtap.sum"
|
||||
rlFileSubmit "systemtap.sum.xz"
|
||||
rlRun "rm systemtap.log.xz systemtap.sum.xz"
|
||||
rlPhaseEnd
|
||||
|
||||
if [[ "$_WHAT" == "DEFAULT" ]]; then
|
||||
rlPhaseStart FAIL "save logs to /mnt/scratch"
|
||||
MP=$( mktemp -d )
|
||||
# Refer to /tools/systemtap/Install/upstream-head
|
||||
SD=rhpkg; rpm -q systemtap | grep -q mcermak && SD=upstream
|
||||
rlRun "echo ${BEAKER}jobs/${JOBID} > job.txt"
|
||||
rlRun "tar cf mydmesg.tar $MYDMESGDIR"
|
||||
rlRun "xz mydmesg.tar"
|
||||
rlRun "mount -o rw,nolock nfs.englab.brq.redhat.com:/scratch/mcermak $MP"
|
||||
if test $(rpm --eval '0%{rhel}') -eq 8 && (! echo ${STAPSRPM} | grep '\.el8'); then
|
||||
rlRun "LOGNAME=${MP}/testlogs/systemtap.${SD}/${STAPSRPM}.el8.$(uname -m)-${STARTDATE}"
|
||||
else
|
||||
rlRun "LOGNAME=${MP}/testlogs/systemtap.${SD}/${STAPSRPM}.$(uname -m)-${STARTDATE}"
|
||||
fi
|
||||
rlRun "mkdir -p $( dirname $LOGNAME )"
|
||||
rlRun "tar cJf ${LOGNAME}.tar.xz systemtap.log systemtap.sum job.txt mydmesg.tar.xz"
|
||||
|
||||
# Upload logs to bunsen instance on tofan if running in beaker
|
||||
if ! test -z $JOBID; then
|
||||
LOGFULLNAME="${LOGNAME}.tar.xz"
|
||||
LOGBASENAME="$(basename $LOGFULLNAME)"
|
||||
rlLogInfo "Uploading test log to bunsen..."
|
||||
rlRun "cat $LOGFULLNAME | \
|
||||
curl -X POST -F project=systemtap-qe \
|
||||
-F tarballname=$LOGBASENAME \
|
||||
-F 'tar=@-' \
|
||||
http://tofan.yyz.redhat.com:8013/bunsen-upload.py"
|
||||
fi
|
||||
rlRun "umount -l $MP && sleep 3 && rm -rf $MP"
|
||||
rlPhaseEnd
|
||||
fi
|
||||
|
||||
rlPhaseStart FAIL "Log checks ($_WHAT)"
|
||||
rlRun "bash ${ORIGPWD}/check_${_WHAT}.sh"
|
||||
rlPhaseEnd
|
||||
|
||||
rlPhaseStartCleanup
|
||||
rlServiceRestore firewalld
|
||||
rlServiceRestore iptables
|
||||
rlServiceRestore ip6tables
|
||||
rlServiceRestore avahi-daemon
|
||||
rlRun popd
|
||||
kill -9 $MYDMESGPID ||:
|
||||
rlPhaseEnd
|
||||
rlJournalPrintText
|
||||
rlJournalEnd
|
||||
|
||||
rm -f /tmp/disable-qe-abrt
|
@ -1,150 +0,0 @@
|
||||
#! /bin/bash
|
||||
LANG=C; export LANG
|
||||
PATH=/usr/sbin:/sbin:/usr/bin:/bin:$PATH; export PATH
|
||||
|
||||
check_error() { if test $1 != 0; then printf "\n$2\n"; exit $1; fi }
|
||||
|
||||
prep_rpm_based() {
|
||||
# uname -r can produce different kinds of output:
|
||||
# 2.6.32-30.el6.x86_64 (no variant, but including ".arch")
|
||||
# 2.6.18-194.3.1.el5debug ("variant", without dot, no arch)
|
||||
# 2.6.33.4-95.fc13.i686.PAE (".arch.variant", two dots)
|
||||
# 3.18.6-100.fc20.i686+PAE (".arch+variant", dot, plus)
|
||||
if [ "$#" -lt 1 ]; then
|
||||
UNAME=`uname -r` # determine the kernel running on the machine
|
||||
else
|
||||
UNAME=$1 #user passed in uname value
|
||||
fi
|
||||
UNAME=`echo $UNAME | sed "s/ //"` #strip out any whitespace
|
||||
KERNEL="kernel"
|
||||
for VARIANT in debug kdump PAE xen; do
|
||||
# strip out ".variant" or else "+variant" or else "variant" at end.
|
||||
TMP=`echo $UNAME | sed "s/[\.\+]\?$VARIANT\$//"`
|
||||
if [ "$TMP" != "$UNAME" ]; then
|
||||
UNAME=$TMP; KERNEL="kernel-$VARIANT"
|
||||
fi
|
||||
done
|
||||
KERN_ARCH=`uname -m`
|
||||
KERN_REV=`echo $UNAME | sed s/.$KERN_ARCH//` # strip arch from uname
|
||||
if [ -x /usr/bin/dnf ]; then
|
||||
DI="dnf debuginfo-install"
|
||||
DI_DEPS=""
|
||||
D="dnf"
|
||||
else
|
||||
DI="debuginfo-install"
|
||||
DI_DEPS="yum-utils"
|
||||
D="yum"
|
||||
fi
|
||||
CANDIDATES="$KERNEL-$KERN_REV.$KERN_ARCH \
|
||||
$KERNEL-devel-$KERN_REV.$KERN_ARCH \
|
||||
$DI_DEPS"
|
||||
|
||||
# Can't simply work with /boot/vmlinuz-* below because of
|
||||
# https://sourceware.org/bugzilla/show_bug.cgi?id=26599
|
||||
_debuginfod_file=$(rpm -ql kernel-core | fgrep $(uname -r) | grep '\.so$' | tail -1)
|
||||
# Now let's assume following to come from outside env...
|
||||
# export DEBUGINFOD_URLS=http://debuginfod.usersys.redhat.com:3632/
|
||||
# export DEBUGINFOD_PROGRESS=1
|
||||
debuginfod-find debuginfo $(rpm -ql kernel-core | fgrep $(uname -r) | grep '\.so$' | tail -1) || \
|
||||
CANDIDATES="$CANDIDATES $KERNEL-debuginfo-$KERN_REV.$KERN_ARCH"
|
||||
|
||||
NEEDED=`rpm --qf "%{name}-%{version}-%{release}.%{arch}\n" \
|
||||
-q $CANDIDATES | grep "is not installed" | awk '{print $2}'`
|
||||
if [ "$NEEDED" != "" ]; then
|
||||
echo -e "Need to install the following packages:\n$NEEDED"
|
||||
if [ `id -u` = "0" ]; then #attempt to install
|
||||
$D install -y --enablerepo=\* $NEEDED
|
||||
if expr "$NEEDED" : ".*debuginfo.*" >/dev/null;
|
||||
then
|
||||
$DI -y $KERNEL-$KERN_REV.$KERN_ARCH;
|
||||
fi
|
||||
rpm -q $NEEDED
|
||||
rc=$?
|
||||
check_error $rc "problem installing rpm(s) $NEEDED\nin case of file conflicts, try again after # $D erase $KERNEL-debuginfo"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
prep_deb_based() {
|
||||
if [ $# -ne 0 ]; then
|
||||
echo "Specifying kernel version is not yet support on deb based systems." 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 2.6.32-5-amd64
|
||||
# 2.6.32-37-generic
|
||||
ABINAME="$(cut -d " " -f 3 /proc/version)"
|
||||
|
||||
# 2.6.32
|
||||
BASEVERSION="$(echo "$ABINAME" | cut -d "-" -f 1)"
|
||||
DEBIAN_FRONTEND=noninteractive # don't confirm or chat
|
||||
export DEBIAN_FRONTEND
|
||||
|
||||
case "$DISTRO" in
|
||||
Debian) # 2.6.32-39
|
||||
if uname -v | grep -q Debian; then
|
||||
VERSION="$(uname -v | cut -d " " -f 4)"
|
||||
else
|
||||
VERSION="$(cut -d " " -f 3 /proc/version)"
|
||||
fi
|
||||
;;
|
||||
Ubuntu)
|
||||
# 2.6.32-37.81
|
||||
if [ -f /proc/version_signature ]; then
|
||||
VERSION="$(cut -d " " -f 2 /proc/version_signature | cut -d "-" -f 1-2)"
|
||||
else # 4.18
|
||||
VERSION="$(cut -d " " -f 3 /proc/version)"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
(
|
||||
echo "make >= 0"
|
||||
echo "linux-image-$ABINAME = $VERSION"
|
||||
echo "linux-headers-$ABINAME = $VERSION"
|
||||
echo "linux-image-$ABINAME-dbgsym = $VERSION"
|
||||
) | while read package relation requiredversion; do
|
||||
installedversion="$(dpkg-query -W "$package" 2> /dev/null | cut -f 2)"
|
||||
if [ "$installedversion" = "" ]; then
|
||||
availableversion="$(apt-cache show $package 2> /dev/null | grep ^Version: | cut -d " " -f 2)"
|
||||
if [ "$availableversion" = "" -a "$(echo $package | grep dbgsym$)" ]; then
|
||||
echo "You need package $package but it does not seem to be available"
|
||||
if [ "$DISTRO" = "Ubuntu" ]; then
|
||||
echo " Ubuntu -dbgsym packages are typically in a separate repository"
|
||||
echo " Follow https://wiki.ubuntu.com/DebuggingProgramCrash to add this repository"
|
||||
elif [ "$DISTRO" = "Debian" ]; then
|
||||
echo " Debian -dbgsym packages are typically in a separate repository"
|
||||
echo " Follow https://wiki.debian.org/AutomaticDebugPackages to add this repository"
|
||||
fi
|
||||
else
|
||||
echo "Need to install $package"
|
||||
if [ `id -u` = "0" ]; then #attempt to install
|
||||
apt-get -y install $package
|
||||
fi
|
||||
fi
|
||||
elif ! dpkg --compare-versions $installedversion $relation $requiredversion; then
|
||||
echo "Package $package version $installedversion does not match version of currently running kernel: $requiredversion"
|
||||
echo " Consider apt-get upgrade && reboot"
|
||||
fi
|
||||
done
|
||||
|
||||
user="$(id --user --name)"
|
||||
if [ "$user" != "root" ]; then
|
||||
groups="$(id --groups --name)"
|
||||
for i in stapusr stapdev; do
|
||||
if [ "$(echo $groups | grep $i)" = "" ]; then
|
||||
echo "Be root or adduser $user $i"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
DISTRO="$(lsb_release --id --short 2> /dev/null)"
|
||||
case "$DISTRO" in
|
||||
Debian|Ubuntu)
|
||||
prep_deb_based "$@"
|
||||
;;
|
||||
*)
|
||||
prep_rpm_based "$@"
|
||||
;;
|
||||
esac
|
Loading…
Reference in New Issue
Block a user