systemtap/tests/Regression/python-probing/runtest.sh
Martin Cermak 668b8dd42a CI test updates
- Add upstream testsuite tests/Regression/upstream-testsuite
  to the CI testplan.  However, this one isn't a good measure
  for gating, because it is too complex and flaky.  But it's
  good to have test results at hand.  This testcase reports a
  failure only in case of an infrastructure problem.  Individual
  .exp test failures are not a show stopper from the persp of
  the CI gating.
- Add upstream systemtap build and install pseudo testcase.
  tests/Install/upstream-systemtap to the testplan.
  This one is disabled by default (in its main.fmf file).  The
  point here is to be able to test with upstream version of
  systemtap in case a working fedora build isn't available.
  This is a helper for manual testing, although if enabled, it
  will do its job in the automated CI pipeline too.
- Use FMF tag instead of tier attributes to define the testplan.
- Testcase updates:
  * tests/Regression/second-command-not-captured
  * tests/Regression/python-probing
2024-04-17 08:29:50 +02:00

88 lines
3.5 KiB
Bash
Executable file

#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /CoreOS/python/Sanity/systemtap
# Description: Systemtap static probes test
# Author: Petr Splichal <psplicha@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2011 Red Hat, Inc. All rights reserved.
#
# 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.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
. /usr/share/beakerlib/beakerlib.sh || exit 1
. /etc/os-release || exit 1
# Packages to be tested
PACKAGES="${PACKAGES:-python2}"
# Other required packages
REQUIRES=${REQUIRES:-}
# Binary name parametrized
PYTHON="${PYTHON:-python2}"
rlJournalStart
rlPhaseStartSetup
# rlAssertRpm --all
rlAssertRpm "systemtap"
rlLogInfo "Running on kernel: $(uname -r)"
rlRun "rpm -qa 'systemtap*'" 0 "Checking systemtap packages"
rlRun "TmpDir=\`mktemp -d\`" 0 "Creating tmp directory"
rlRun "cp list.stp top.stp test.py $TmpDir" 0 "Copying scripts"
rlRun "pushd $TmpDir"
# Install needed debuginfo, best effort
rlLogInfo "DEBUGINFOD_URLS=$DEBUGINFOD_URLS"
rlLogInfo "DEBUGINFOD_TIMEOUT=$DEBUGINFOD_TIMEOUT"
rlRun "L=$(stap -p2 -e 'probe python.function.entry {exit()}' | awk -F\" '/process/ {print $2}')" 0-255
rlRun "debuginfo-install -y $L /usr/bin/python\*" 0-255
rlPhaseEnd
rlPhaseStartTest "Verifying ELF file for presence of .probes section"
for lib in /usr/lib*/libpython*.so.* ; do
rlRun "eu-readelf -x .probes $lib" \
0 "Checking for .probes section within $lib"
done
rlPhaseEnd
# Note that typically you need to be root to run "stap" (or be within
# an appropriate group)
for script in list top; do
# bz2152970 is a known probem
[ "$ID" == "fedora" ] && [ "$script" == "top" ] && continue
rlPhaseStartTest "Test $script"
rlRun "rm -rf ~/.systemtap/cache" 0 "Cleaning cache"
rlRun "stap $script.stp -v -c \"$PYTHON test.py\" > $script" \
0 "Testing with $script.stp"
rlRun "tail -100 $script | col -b" 0 "Inspecting output"
# Checking for random in the list output (python3)
# stap -L 'process("/usr/lib*/libpython*.so*").mark("*")'
# no markers with python3. PViktori mentions that python3
# is going to use JIT, and that will probably drop the
# markers entirely.
rlRun "grep '/usr/lib.*python.*random.py' '$script'" \
0 "Checking for random in the $script output"
rlPhaseEnd
done
rlPhaseStartCleanup
rlRun "popd"
rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd