8d5d041590
Find new home for downstream RHEL tests. Upstream them. The set of tests used for fedora gating stays intact: The gating tests are only those having the tier1 tag set in their main.fmf file. The testplan plans/ci.fmf filters the others out from gating. The set of Fedora gating tests stays the same as it was before this change.
162 lines
4.9 KiB
Bash
Executable File
162 lines
4.9 KiB
Bash
Executable File
#!/bin/bash
|
|
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
#
|
|
# runtest.sh of /tools/systemtap/Regression/semantic-errors-bz953776
|
|
# Description: semantic-errors-bz953776
|
|
# Author: Martin Cermak <mcermak@redhat.com>
|
|
#
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
#
|
|
# Copyright (c) 2014 Red Hat, Inc.
|
|
#
|
|
# This copyrighted material is made available to anyone wishing
|
|
# to use, modify, copy, or redistribute it subject to the terms
|
|
# and conditions of the GNU General Public License version 2.
|
|
#
|
|
# 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, write to the Free
|
|
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
# Boston, MA 02110-1301, USA.
|
|
#
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
# Include Beaker environment
|
|
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
|
|
|
_rhelmajor=$(rpm --eval '%{rhel}')
|
|
_arch=$(arch)
|
|
|
|
function perf_probe_failed ()
|
|
{
|
|
probe=$1
|
|
perf probe -d $probe ||:
|
|
perf probe --add $probe
|
|
retval=$?
|
|
test $retval -eq 0 && \
|
|
rlLogInfo "Running perf probe --add $probe PASSED" || \
|
|
rlLogInfo "Running perf probe --add $probe FAILED"
|
|
perf probe -d $probe ||:
|
|
if test $retval -eq 0; then
|
|
return 1
|
|
else
|
|
return 0
|
|
fi
|
|
}
|
|
|
|
function perf_found_none_of ()
|
|
{
|
|
ret=0
|
|
for f in "$@"; do
|
|
perf_probe_failed $f || ret=1
|
|
done
|
|
return $ret
|
|
}
|
|
|
|
rlJournalStart
|
|
# CHECK FOR PERF ----------------------------------------------
|
|
rlPhaseStart FAIL "CHECK FOR PERF"
|
|
rlRun "perf --version"
|
|
rlPhaseEnd
|
|
|
|
rlPhaseStartSetup
|
|
rlRun "TMPDIR=$(mktemp -d)"
|
|
rlRun "pushd $TMPDIR"
|
|
|
|
# prepare sigaltstack for case-5
|
|
cat > sigaltstack.c <<EOF
|
|
#define _XOPEN_SOURCE 700
|
|
#include <signal.h>
|
|
#include <unistd.h>
|
|
void handler(int sig)
|
|
{
|
|
write(2, "stack overflow\n", 15);
|
|
_exit(1);
|
|
}
|
|
unsigned infinite_recursion(unsigned x) {
|
|
return infinite_recursion(x)+1;
|
|
}
|
|
int main()
|
|
{
|
|
static char stack[SIGSTKSZ];
|
|
stack_t ss = {
|
|
.ss_size = SIGSTKSZ,
|
|
.ss_sp = stack,
|
|
};
|
|
struct sigaction sa = {
|
|
.sa_handler = handler,
|
|
.sa_flags = SA_ONSTACK
|
|
};
|
|
sigaltstack(&ss, 0);
|
|
sigfillset(&sa.sa_mask);
|
|
sigaction(SIGSEGV, &sa, 0);
|
|
infinite_recursion(0);
|
|
}
|
|
EOF
|
|
rlRun "gcc -o sigaltstack sigaltstack.c"
|
|
rlPhaseEnd
|
|
|
|
p=""
|
|
uname -m | grep -q ^ppc && p="-P"
|
|
p="$p -E 'probe timer.s(900){error(\"probe timeout after 15 minutes\")}'"
|
|
|
|
export p
|
|
|
|
rlPhaseStart FAIL 'case-1'
|
|
rlRun "stap $p -v -e 'probe syscall.close { println(fd); exit(); }'"
|
|
rlPhaseEnd
|
|
|
|
# After fixing bz1657681, this constraint can be removed
|
|
if [[ $(rpm --eval %rhel) -le 7 ]]; then
|
|
if arch | grep -vq ppc; then
|
|
rlPhaseStart FAIL 'case-2'
|
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1657681
|
|
rlRun "stap $p -v -e 'probe socket.close { print(protocol); print(family); print(state); print(flags); print(type); exit() }'"
|
|
rlPhaseEnd
|
|
fi
|
|
fi
|
|
|
|
(
|
|
test $_rhelmajor -le 8 && exit
|
|
perf_found_none_of "sys_read" "__arm64_sys_read" "do_syscall_64" && exit
|
|
test $_rhelmajor -ge 9 && test $_arch = ppc64le -o $_arch = aarch64 && p="$p -p4" # no hits
|
|
rlPhaseStart FAIL 'case-3'
|
|
rlRun "stap $p -v -e 'probe kernel.function(\"sys_read\").return!, kernel.function(\"__arm64_sys_read\").return!, kernel.function(\"do_syscall_64\").return { println(probefunc()) exit()}'"
|
|
rlPhaseEnd
|
|
)
|
|
|
|
rlPhaseStart FAIL 'case-4'
|
|
rlRun "stap $p -v -e 'probe syscall.open, syscall.openat { if (\"open\" == execname()) println(argstr); exit() }'"
|
|
rlPhaseEnd
|
|
|
|
rlPhaseStart FAIL 'case-5'
|
|
rlRun "stap $p -ve 'probe syscall.sigaltstack { println(name); exit() }' -c './sigaltstack || true'"
|
|
rlPhaseEnd
|
|
|
|
# gcc 8.2.1->8.3.1 change related to systemtap debuginfo regression in rhel-8.1.0, kernel -84 -> -85
|
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1709831#c17
|
|
# ( fgrep RESULT: /tmp/typescript | sort -u )
|
|
rlPhaseStart FAIL 'case-6'
|
|
rlRun "stap $p -vp4 -e 'probe sunrpc.clnt.shutdown_client { println(servername) }'"
|
|
rlPhaseEnd
|
|
|
|
rlPhaseStart FAIL 'case-7'
|
|
rlRun "stap $p -vp4 -e 'probe sunrpc.clnt.bind_new_program { println(servername) }'"
|
|
rlPhaseEnd
|
|
|
|
rlPhaseStart FAIL 'case-8'
|
|
rlRun "stap $p -vp4 -e 'probe sunrpc.clnt.bind_new_program { println(servername, vers) }'"
|
|
rlPhaseEnd
|
|
|
|
rlPhaseStartCleanup
|
|
rlRun "popd"
|
|
rlRun "rm -r $TMPDIR"
|
|
rlPhaseEnd
|
|
rlJournalPrintText
|
|
rlJournalEnd
|