#9 CI tests: Add more tests
Closed 2 years ago by mcermak. Opened 2 years ago by mcermak.
Unknown source rawhide  into  rawhide

@@ -0,0 +1,5 @@

+ summary: Setup task

+ prepare:

+     script: ./plans/ci/prepare/prepare.sh

+ recommend:

+ - koji

@@ -0,0 +1,29 @@

+ #!/bin/bash

+ 

+ export DEBUGINFOD_URLS="https://debuginfod.fedoraproject.org/ $DEBUGINFOD_URLS"

+ export DEBUGINFOD_TIMEOUT=300

+ 

+ # On Rawhide, the running kernel packages won't probably be avail in

+ # configured repos.  Debuginfo isn't a problem, we access that using

+ # the debuginfod.

+ __install_deps ()

+ {

+     TMPD=$(mktemp -d)

+     pushd $TMPD

+     koji download-build --rpm kernel-`uname -r` --arch `uname -i`

+     koji download-build --rpm kernel-devel-`uname -r` --arch `uname -i`

+     koji download-build --rpm kernel-modules-`uname -r` --arch `uname -i`

+     dnf -y install kernel{,-devel,-modules}-`uname -r`.rpm

+     popd

+     rm -rf $TMPD

+ }

+ 

+ set -xe

+ 

+ rpm -qa | egrep '^(kernel|systemtap)' | sort

+ uname -r

+ 

+ stap-prep || __install_deps

+ stap-prep

+ 

+ set +xe

@@ -0,0 +1,14 @@

+ summary: suns small tests

+ description: ''

+ contact: Martin Cermak <mcermak@redhat.com>

+ component:

+ - systemtap

+ test: ./runtest.sh

+ framework: beakerlib

+ recommend:

+ - systemtap

+ - systemtap-testsuite

+ - perf

+ duration: 10m

+ extra-summary: /tools/systemtap/Regression/small-tests

+ extra-task: /tools/systemtap/Regression/small-tests

@@ -0,0 +1,174 @@

+ #!/bin/bash

+ # vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k

+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ #

+ #   runtest.sh of /tools/systemtap/Regression/small-tests

+ #   Description: suns small tests

+ #   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

+ 

+ PACKAGE="systemtap"

+ 

+ export DEBUGINFOD_URLS="https://debuginfod.fedoraproject.org/ $DEBUGINFOD_URLS"

+ export DEBUGINFOD_TIMEOUT=300

+ 

+ _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

+ 

+     # bz1162939 ---------------------------------------------------

+     (

+         perf_probe_failed "vfs_read" && exit

+         rlPhaseStart FAIL "test 1 bz1162939"

+             rlRun "stap -we 'probe vfs.read{println(\"hit\"); exit()}' -c 'head -1 /etc/hosts' | grep '^hit$'"

+         rlPhaseEnd

+     )

+     # bz1119335 ---------------------------------------------------

+     rlPhaseStart FAIL "test 2 bz1119335"

+         rlRun "man 8 staprun | grep 'STAP_FIPS_OVERRIDE'"

+     rlPhaseEnd

+ 

+     # bz1153673 ---------------------------------------------------

+     rlPhaseStart FAIL "test 3 bz1153673"

+         _tested=0

+         for _pkg in $( rpm -qa | grep systemtap-testsuite ); do

+             for _tc in $( rpm -ql $_pkg | grep 'alias_suffixes.stp$' ); do

+                 stap -p4 $_tc && p="" || p="-P"

+                 rlRun "stap $p -p4 $_tc"

+                 _tested=1

+             done

+         done

+         [[ $_tested -eq 0 ]] && rlFail "Not tested"

+     rlPhaseEnd

+ 

+     # bz1160837 ---------------------------------------------------

+     (

+         perf_probe_failed "sd_init_command" && exit

+         rlPhaseStart FAIL "test 4 bz1160837"

+             _tested=0

+             _prologue_search=''

+             for _pkg in $( rpm -qa | grep systemtap-testsuite ); do

+                 for _tc in $( rpm -ql $_pkg | grep 'iostat-scsi.stp$' ); do

+                     test $_arch = ppc64le && _prologue_search='-P'

+                     rlRun "stap -g $_prologue_search $_tc 1 -c 'sleep 1'"

+                     _tested=1

+                 done

+             done

+             [[ $_tested -eq 0 ]] && rlFail "Not tested"

+         rlPhaseEnd

+     )

+ 

+     # bz1203808 ---------------------------------------------------

+     rlPhaseStart FAIL "test 5 bz1203808"

+             _tested=0

+             for _pkg in $( rpm -qa | grep systemtap-testsuite ); do

+                 for _tc in $( rpm -ql $_pkg | grep 'vfs-all-probes.stp$' ); do

+                     stap -wp4 $_tc && p="" || p="-P"

+                     rlRun "stap $p -w -p4  $_tc"

+                     _tested=1

+                 done

+             done

+             [[ $_tested -eq 0 ]] && rlFail "Not tested"

+     rlPhaseEnd

+ 

+     # bz1269062 ---------------------------------------------------

+     rlPhaseStart FAIL "test 6 bz1269062"

+         rlRun "stap -c sync --suppress-handler-errors -e 'probe ioscheduler.elv_add_request{println(elevator_name) exit()}'"

+     rlPhaseEnd

+ 

+     # bz528792 ---------------------------------------------------

+     (

+         # Not relevant on rhel-9 because of kernel commit cad6967ac10843a70842cd39c7b53412901dd21f that removes

+         # _do_fork() and replaces it with new kernel_clone()

+         perf_found_none_of "_do_fork" "do_fork" "sys_clone" && exit

+ 

+         rlPhaseStart FAIL "test 7 bz528792"

+             if test $_arch = ppc64le; then

+                 # https://bugzilla.redhat.com/show_bug.cgi?id=1652740#c4  - We can not reach any function parameters, namely $clone_flags

+                 rlRun "stap -ve 'probe kernel.function(\"_do_fork\")!, kernel.function(\"do_fork\")!, kernel.function(\"sys_clone\") { println(pp()) exit() }' -c \"bash -c 'while sleep 1; do /bin/true; done'\""

+             else

+                 rlRun "stap -ve 'probe kernel.function(\"_do_fork\")!, kernel.function(\"do_fork\")!, kernel.function(\"sys_clone\") { printf(\"%x\n\",\$clone_flags) exit() }' -c \"bash -c 'while sleep 1; do /bin/true; done'\""

+             fi

+         rlPhaseEnd

+     )

+ 

+     # bz1890702 ---------------------------------------------------

+     (

+         perf_probe_failed "vfs_open" && exit

+         rlPhaseStart FAIL "test 8 bz1890702"

+             rlRun "stap -g --suppress-time-limits -e 'probe kernel.function(\"vfs_open\") { printf(\"%s(path: %s)\", ppfunc(), \$path\$) ; exit() }' -c 'cat /etc/hosts'"

+         rlPhaseEnd

+     )

+ 

+     # bz1904216 ---------------------------------------------------

+     rlPhaseStart FAIL "test 9 bz1904216"

+         rlRun "stap -p4 -DSTP_NO_OVERLOAD -t -c 'sleep 0.25' -e 'probe kernel.trace(\"bcache:bcache_btree_set_root\") { if (pid() == 0) printf(\"probe hit\n\"); }'"

+     rlPhaseEnd

+ 

+     # bz1940804 ---------------------------------------------------

+     rlPhaseStart FAIL "test 10 bz1940804"

+         rlRun "stap -e 'probe process(\"/bin/bash\").function(\"main\") {println(pn()) }' -c '/bin/bash --help'"

+     rlPhaseEnd

+ 

+     # bz1940945 ---------------------------------------------------

+     rlPhaseStart FAIL "test 11 bz1940945"

+         rlRun "stap -c sync --suppress-handler-errors -e 'probe ioscheduler.elv_add_request{println(elevator_name) exit()}'"

+     rlPhaseEnd

+ 

+     # bz1940761 ---------------------------------------------------

+     rlPhaseStart FAIL "test 12 bz1940761"

+         rlRun "stap -v /usr/share/systemtap/examples/process/strace.stp -w -c \"echo hello world\""

+     rlPhaseEnd

+ rlJournalPrintText

+ rlJournalEnd

@@ -0,0 +1,60 @@

+ package foo.bar;

+ 

+ import java.lang.*;

+ import java.util.*;

+ 

+ class ThreadedExample

+ {

+ 

+     public static void printMessage(int message) {

+         System.out.println("message: " + message);

+     }

+ 

+     public static void printMessage(long message) {

+         System.out.println("message: " + message);

+     }

+ 

+     public static void main(String[] args) {

+ 

+     // sleep so that stap can start and byteman agent gets installed

+     try {

+         Thread.sleep(30000);

+     } catch(InterruptedException ex) {

+         Thread.currentThread().interrupt();

+     }

+ 

+ 

+     try {

+         String[] inputs = new String[] {"int", "foo", "long"};

+         for (String next : inputs) {

+ 

+             final String arg = next;

+             final int i = 42;

+             final long j = 987234864;

+             Thread thread = new Thread(arg) {

+                 public void run() {

+                     if(arg.equals("int"))

+                         printMessage(i);

+                     else if(arg.equals("long"))

+                          printMessage(j);

+                     else

+                     System.out.println("Neither of the types");

+                 }

+             };

+             thread.start();

+             try {

+                 thread.join();

+                 } catch (Exception e){}

+             }

+         } catch (Exception e){}

+ 

+ 

+         // sleep so that stap can finish still while probed java program still runs

+         try {

+             Thread.sleep(80000);

+         } catch(InterruptedException ex) {

+             Thread.currentThread().interrupt();

+         }

+     }

+ }

+ 

@@ -0,0 +1,18 @@

+ probe java("foo.bar.ThreadedExample").class("ThreadedExample").method("printMessage(int)")

+ {

+     printf("Hit printMessage(int): %s\n", arg1)

+ }

+ 

+ probe java("foo.bar.ThreadedExample").class("ThreadedExample").method("printMessage(long)")

+ {

+     printf("Hit printMessage(long): %s\n", arg1)

+     exit()

+ }

+ 

+ probe timer.ms(100000)

+ {

+     error("Exit on timeout")

+     exit()

+ }

+ 

+ 

@@ -0,0 +1,12 @@

+ summary: byteman-java-methods-probing

+ description: ''

+ contact: Martin Cermak <mcermak@redhat.com>

+ test: ./runtest.sh

+ framework: beakerlib

+ recommend:

+ - java-devel

+ - systemtap

+ - systemtap-runtime-java

+ duration: 15m

+ extra-summary: /tools/systemtap/Sanity/byteman-java-methods-probing

+ extra-task: /tools/systemtap/Sanity/byteman-java-methods-probing

@@ -0,0 +1,83 @@

+ #!/bin/bash

+ # vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k

+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ #

+ #   runtest.sh of /tools/systemtap/Sanity/byteman-java-methods-probing

+ #   Description: byteman-java-methods-probing

+ #   Author: Martin Cermak <mcermak@redhat.com>

+ #

+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ #

+ #   Copyright (c) 2013 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.

+ #

+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ 

+ # Include Beaker environment

+ . /usr/share/beakerlib/beakerlib.sh || exit 1

+ 

+ export DEBUGINFOD_URLS="https://debuginfod.fedoraproject.org/ $DEBUGINFOD_URLS"

+ export DEBUGINFOD_TIMEOUT=300

+ 

+ rlJournalStart

+     rlPhaseStartSetup

+         # At this point we simply rely on that the %triggerin scriptlet from

+         # systemtap-runtime-java did it's job well.  There was a hack to force

+         # trigger it here, but commit respective to this comment removes it.

+         # https://bugzilla.redhat.com/show_bug.cgi?id=1732514#c11

+ 

+         rlRun "rpm -qa | fgrep -e systemtap-runtime-java -e byteman -e openjdk | sort"

+ 

+         rlRun "stap-prep"

+ 

+         for BINARY in java javac; do

+             rlRun "alternatives --display $BINARY | grep -v slave"

+             rlRun "$BINARY -version"

+         done

+ 

+         rlRun "TMPDIR=$( mktemp -d )"

+         rlRun "mkdir -p $TMPDIR/foo/bar"

+         rlRun "cp ThreadedExample.java $TMPDIR/foo/bar/"

+         rlRun "cp ThreadedExample.stp $TMPDIR/"

+         rlRun "pushd $TMPDIR"

+     rlPhaseEnd

+ 

+     rlPhaseStart FAIL 'Prepare bytecode class'

+         rlRun "javac foo/bar/ThreadedExample.java"

+     rlPhaseEnd

+ 

+     rlPhaseStart FAIL 'Prepare the LKML'

+         rlRun "stap -p4 -m ThreadedExample ThreadedExample.stp"

+     rlPhaseEnd

+ 

+     rlPhaseStart FAIL 'Check the Feature'

+         java foo.bar.ThreadedExample &

+         rlRun "jps -l | grep 'foo.bar.ThreadedExample'"

+         export STAPBM_VERBOSE=yes

+         # rlRun "stap --poison-cache -vv ThreadedExample.stp 2>&1 | tee testout.log"

+         # Speed the stap startup up by pre-compiling the module within separate

+         # phase 'Prepare the LKML' above.

+         rlRun "staprun -v -R ThreadedExample.ko 2>&1 | tee testout.log"

+         rlRun "grep -q 'Hit printMessage(int): 42' testout.log"

+         rlRun "grep -q 'Hit printMessage(long): 987234864' testout.log"

+     rlPhaseEnd

+ 

+     rlPhaseStartCleanup

+         rlRun "popd"

+         rlRun "rm -r $TMPDIR"

+     rlPhaseEnd

+ rlJournalPrintText

+ rlJournalEnd

@@ -0,0 +1,3 @@

+ obj-m := MODULENAME.o

+ module:

+ 	  make -C /lib/modules/$(shell uname -r)/build KBUILD_EXTMOD=DIRECTORY SUBDIRS=DIRECTORY modules

@@ -0,0 +1,17 @@

+ summary: Tests systemtap working with kernel modules

+ description: ''

+ contact: Petr Muller <pmuller@redhat.com>

+ component:

+ - systemtap

+ test: ./runtest.sh

+ framework: beakerlib

+ recommend:

+ - systemtap

+ - kernel-devel

+ - bison

+ - flex

+ - openssl-devel

+ - elfutils-libelf-devel

+ duration: 10m

+ extra-summary: /tools/systemtap/Sanity/kernel-modules

+ extra-task: /tools/systemtap/Sanity/kernel-modules

@@ -0,0 +1,20 @@

+ #include <linux/module.h> /* Needed by all modules */

+ #include <linux/kernel.h> /* Needed for KERN_INFO */

+ 

+ int init_module(void)

+ {

+     printk(KERN_INFO "Hello world 1.\n");

+     return 0;

+ }

+ 

+ int some_method(void){

+   printk(KERN_INFO "Some method called\n");

+   return 0;

+ }

+ 

+ void cleanup_module(void)

+ {

+     printk(KERN_INFO "Goodbye world 1.\n");

+ }

+ 

+ MODULE_LICENSE("GPL");

@@ -0,0 +1,123 @@

+ #!/bin/bash

+ # vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k

+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ #

+ #   runtest.sh of /tools/systemtap/Sanity/kernel-modules

+ #   Description: Tests systemtap working with kernel modules

+ #   Author: Petr Muller <pmuller@redhat.com>

+ #

+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ #

+ #   Copyright (c) 2012 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.

+ #

+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ 

+ # Include Beaker environment

+ . /usr/share/beakerlib/beakerlib.sh

+ 

+ PACKAGE="systemtap"

+ 

+ check_probes(){

+   FAIL=""

+   rlAssertGrep init_module $1 	 || FAIL='yes'

+   rlAssertGrep cleanup_module $1 || FAIL='yes'

+   rlAssertGrep some_method $1	 || FAIL='yes'

+ 

+   if [ -n "$FAIL" ]

+   then

+     rlFileSubmit $1 $2.out

+   fi

+ }

+ 

+ rlJournalStart

+ 

+ rlPhaseStartSetup "Preparing modules"

+   rlRun "mkdir -p 'stap-underscore' 'stap-dash' 'stap-none'"

+   rlRun "cp module.c stap-underscore/test_module.c"

+   rlRun "cp module.c stap-dash/test-module.c"

+   rlRun "cp module.c stap-none/testmodule.c"

+ 

+   cat Makefile.template | sed -e 's/MODULENAME/test_module/g' \

+                         | sed -e "s|DIRECTORY|$PWD/stap-underscore|g" > stap-underscore/Makefile

+   rlAssert0 "Creating Makefile for underscore variant" $?

+   cat Makefile.template | sed -e 's/MODULENAME/test-module/g' \

+                         | sed -e "s|DIRECTORY|$PWD/stap-dash|g" > stap-dash/Makefile

+   rlAssert0 "Creating Makefile for dash variant" $?

+ 

+   cat Makefile.template | sed -e 's/MODULENAME/testmodule/g' \

+                         | sed -e "s|DIRECTORY|$PWD/stap-none|g" > stap-none/Makefile

+   rlAssert0 "Creating Makefile for no character variant" $?

+ 

+   if [ -n "$ARCH" ]

+   then

+     rlLog "ARCH is set to: [$ARCH]"

+     rlLog "This interferes with 'make module', so it needs to be unset."

+     ARCHOLD="$ARCH"

+     unset ARCH

+     rlLog "ARCH is set to: [$ARCH]"

+   fi

+   rlRun "make -C stap-underscore module"

+   rlRun "make -C stap-dash module"

+   rlRun "make -C stap-none module"

+   if [ -n "$ARCHOLD" ]

+   then

+     rlLog "Restoring ARCH"

+     export ARCH="$ARCHOLD"

+     rlLog "ARCH is set to: [$ARCH]"

+   fi

+ 

+ rlPhaseEnd

+ 

+ rlPhaseStartTest "Testing underscore variant"

+   rlRun "cp stap-underscore/test_module.ko /lib/modules/$(uname -r)/"

+   rlRun "insmod stap-underscore/test_module.ko"

+   stap -L 'module("test_module").function("*")' -v > stap.out

+   check_probes stap.out "module-und-probe-und"

+   stap -L 'module("test-module").function("*")' -v > stap.out

+   check_probes stap.out "module-und-probe-dash"

+   sleep 1

+   rlRun "rmmod test_module"

+   rlRun "rm -f /lib/modules/$(uname -r)/test_module.ko"

+ rlPhaseEnd

+ 

+ rlPhaseStartTest "Testing dash variant"

+   rlRun "cp stap-dash/test-module.ko /lib/modules/$(uname -r)/"

+   rlRun "insmod stap-dash/test-module.ko"

+   stap -L 'module("test_module").function("*")' -v > stap.out

+   check_probes stap.out "module-dash-probe-und"

+   stap -L 'module("test-module").function("*")' -v > stap.out

+   check_probes stap.out "module-dash-probe-dash"

+   sleep 1

+   rlRun "rmmod test-module"

+   rlRun "rm -f /lib/modules/$(uname -r)/test-module.ko"

+ rlPhaseEnd

+ 

+ rlPhaseStartTest "Testing no separator variant"

+   rlRun "cp stap-none/testmodule.ko /lib/modules/$(uname -r)/"

+   rlRun "insmod stap-none/testmodule.ko"

+   stap -L 'module("testmodule").function("*")' -v > stap.out

+   check_probes stap.out "module-none-probe-none"

+   sleep 1

+   rlRun "rmmod testmodule"

+   rlRun "rm -f /lib/modules/$(uname -r)/testmodule.ko"

+ rlPhaseEnd

+ 

+ rlPhaseStartCleanup

+   rlRun "rm -rf stap-underscore stap-dash stap-none stap.out"

+ rlPhaseEnd

+ rlJournalPrintText

+ rlJournalEnd

@@ -9,28 +9,10 @@

  # export DEBUGINFOD_PROGRESS=1

  

  

- # On Rawhide, the running kernel packages won't probably be avail in

- # configured repos.  Debuginfo isn't a problem, we access that using

- # the debuginfod.

- __install_deps ()

- {

-     set -xe

-     TMPD=$(mktemp -d)

-     pushd $TMPD

-     koji download-build --rpm kernel-`uname -r` --arch `uname -i`

-     koji download-build --rpm kernel-devel-`uname -r` --arch `uname -i`

-     koji download-build --rpm kernel-modules-`uname -r` --arch `uname -i`

-     dnf -y install kernel{,-devel,-modules}-`uname -r`.rpm

-     popd

-     rm -rf $TMPD

-     set +xe

- }

- 

  rlJournalStart

  rlPhaseStartTest

      rlRun "rpm -qa | egrep '^(kernel|systemtap)' | sort"

      rlRun "uname -r"

-     rlRun "stap-prep || __install_deps"

      rlRun "stap-prep"

      rlRun "stap -L 'process(\"stap\").mark(\"*\")' | grep pass"

      rlRun "stap -v --example helloworld.stp"

@@ -0,0 +1,17 @@

+ summary: stap-server-basic-sanity

+ description: ''

+ contact: Martin Cermak <mcermak@redhat.com>

+ component:

+ - systemtap

+ test: ./runtest.sh

+ framework: beakerlib

+ recommend:

+ - systemtap

+ - kernel-debuginfo

+ - avahi

+ - systemtap-server

+ - dbus

+ - net-tools

+ duration: 45m

+ extra-summary: /tools/systemtap/Sanity/stap-server-basic-sanity

+ extra-task: /tools/systemtap/Sanity/stap-server-basic-sanity

@@ -0,0 +1,98 @@

+ #!/bin/bash

+ # vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k

+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ #

+ #   runtest.sh of /tools/systemtap/Sanity/stap-server-basic-sanity

+ #   Description: stap-server-basic-sanity

+ #   Author: Martin Cermak <mcermak@redhat.com>

+ #

+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ #

+ #   Copyright (c) 2013 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.

+ #

+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ 

+ # Include Beaker environment

+ . /usr/share/beakerlib/beakerlib.sh || exit 1

+ 

+ CMD='stap'

+ BIN=$(which --skip-alias $CMD)

+ PACKAGE="${PACKAGE:-$(rpm -qf --qf='%{name}\n' $BIN | head -1)}"

+ 

+ export DEBUGINFOD_URLS="https://debuginfod.fedoraproject.org/ $DEBUGINFOD_URLS"

+ export DEBUGINFOD_TIMEOUT=300

+ 

+ function service_stap_server() {

+     action=$1

+     retval=${2:-0}

+     sleep 5

+     rlLogInfo "PACKAGE=$PACKAGE"

+     if echo $PACKAGE | grep -q devtoolset; then

+ 	__i=$(echo $PACKAGE | awk -F- '{print $2}')

+ 	rlRun "service devtoolset-$__i-stap-server $action" $retval

+     elif echo $PACKAGE | grep -q gcc-toolset; then

+ 	__i=$(echo $PACKAGE | awk -F- '{print $3}')

+ 	rlRun "service gcc-toolset-$__i-stap-server $action" $retval

+     else

+ 	rlRun "service stap-server $action" $retval

+     fi

+     sleep 5

+ }

+ 

+ _rhelmajor=$(rpm --eval '%{rhel}')

+ 

+ rlJournalStart

+     rlPhaseStartSetup

+         rlRun "TMPDIR=$(mktemp -d)"

+         rlRun "pushd $TMPDIR"

+         rlAssertRpm dbus

+         rlAssertRpm avahi

+         rlAssertRpm net-tools # because of netstat

+     rlPhaseEnd

+ 

+     rlPhaseStart FAIL "sanity check"

+         rlRun "stap -v -e 'probe begin { log(\"hello\"); exit() }'"

+     rlPhaseEnd

+ 

+     rlPhaseStartTest

+         rlRun "service iptables stop" 0-255

+         rlRun "service firewalld stop" 0-255

+         service_stap_server stop

+         test $_rhelmajor -le 8 && \

+             rlRun "service messagebus restart"

+         rlRun "service avahi-daemon restart"

+         service_stap_server start

+ 

+         rlRun "netstat -tlp | grep stap"

+         rlRun "SERVER_PORT=$( netstat -tlpn | awk '/stap/ {print $4}' | grep -o '[0-9]*$' )"

+ 

+         for SERVER_IP in '127.0.0.1' '[::1]'; do

+             rlLogInfo "Testing SERVER_IP=$SERVER_IP"

+             rlRun "stap --trust-servers=ssl,signer,all-users,no-prompt --use-server=$SERVER_IP:$SERVER_PORT"

+             rlRun "stap --use-server=$SERVER_IP:$SERVER_PORT -v -e 'probe begin { log(\"hello\"); exit() }' 2>&1 | tee output.log"

+             rlRun "grep 'Using a compile server' output.log"

+             rlRun "grep '^hello$' output.log"

+         done

+     rlPhaseEnd

+ 

+     rlPhaseStartCleanup

+         service_stap_server stop

+         rlRun "popd"

+         rlRun "rm -r $TMPDIR"

+     rlPhaseEnd

+ rlJournalPrintText

+ rlJournalEnd

@@ -0,0 +1,7 @@

+ #include <stdio.h>

+ 

+ int main(void) {

+     printf("Hello world!\n");

+     return 0;

+ }

+ 

@@ -0,0 +1,16 @@

+ summary: userspace-probes

+ description: ''

+ contact: Martin Cermak <mcermak@redhat.com>

+ component:

+ - systemtap

+ test: ./runtest.sh

+ framework: beakerlib

+ recommend:

+ - systemtap

+ - dyninst-devel

+ - gawk

+ duration: 5m

+ link:

+ -   relates: https://bugzilla.redhat.com/show_bug.cgi?id=855981

+ extra-summary: /CoreOS/systemtap/Sanity/userspace-probes

+ extra-task: /CoreOS/systemtap/Sanity/userspace-probes

@@ -0,0 +1,102 @@

+ #!/bin/bash

+ # vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k

+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ #

+ #   runtest.sh of /CoreOS/systemtap/Sanity/userspace-probes

+ #   Description: userspace-probes

+ #   Author: Martin Cermak <mcermak@redhat.com>

+ #

+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ #

+ #   Copyright (c) 2013 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.

+ #

+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ 

+ # Include Beaker environment

+ . /usr/share/beakerlib/beakerlib.sh || exit 1

+ 

+ export DEBUGINFOD_URLS="https://debuginfod.fedoraproject.org/ $DEBUGINFOD_URLS"

+ export DEBUGINFOD_TIMEOUT=300

+ 

+ PACKAGE="$(rpm -qf $( which stap ) | head -n 1 )"

+ WORKDIR=$( mktemp -d )

+ TESTUSER=mytestuser

+ 

+ 

+ 

+ rlJournalStart

+     rlPhaseStart WARN "Check the environment"

+         if ! stap -V 2>&1 | grep -q 'enabled features:.*DYNINST'; then

+             rlLogWarning "No dyninst available in $PACKAGE"

+             rlPhaseEnd

+             rlJournalPrintText

+             rlJournalEnd

+             exit 0

+         fi

+         rlRun "useradd $TESTUSER" 0,9

+         rlRun "su $TESTUSER -c 'which stap'"

+         rlRun "rpm -qa | fgrep -e dyninst -e systemtap | sort"

+     rlPhaseEnd

+ 

+     rlPhaseStart FAIL "Set up SELinux"

+         rlRun "SEBOOL_ALLOW_EXECMOD=`getsebool allow_execmod | awk '{print $NF}'`"

+         rlRun "SEBOOL_ALLOW_EXECSTACK=`getsebool allow_execstack | awk '{print $NF}'`"

+         rlRun "SEBOOL_DENY_PTRACE=`getsebool deny_ptrace | awk '{print $NF}'`"

+         rlRun "setsebool allow_execmod on"

+         rlRun "setsebool allow_execstack on"

+         rlRun "setsebool deny_ptrace off"

+     rlPhaseEnd

+ 

+     rlPhaseStartSetup

+         rlRun "cp hello.c testcase*.sh $WORKDIR"

+         rlRun "chown -R $TESTUSER:$TESTUSER $WORKDIR"

+     rlPhaseEnd

+ 

+     rlPhaseStart FAIL "Testcase 1"

+         rlRun "which gcc"

+         rlRun "su $TESTUSER -c 'gcc -g -o $WORKDIR/hello $WORKDIR/hello.c'"

+         rlRun "su $TESTUSER -c '$WORKDIR/hello'"

+         rlRun "chmod a+x $WORKDIR/testcase1.sh"

+         rlRun "su $TESTUSER -c '$WORKDIR/testcase1.sh $WORKDIR'"

+ 

+         LOG="$WORKDIR/stapout.log"

+ 

+         rlRun "cat $LOG"

+         rlRun "grep '^process(\"$WORKDIR/hello\").function(\"main@$WORKDIR/hello.c:3\")$' $LOG"

+         rlRun "grep -i error $LOG" 1

+     rlPhaseEnd

+ 

+     rlPhaseStart FAIL "Testcase 2"

+         rlRun "chmod a+x $WORKDIR/testcase2.sh"

+         rlRun "su $TESTUSER -c '$WORKDIR/testcase2.sh $WORKDIR'"

+ 

+         LOG="$WORKDIR/stapout.log"

+ 

+         rlRun "cat $LOG"

+         rlRun "grep '^\*\*\*\ exiting\ \*\*\*$' $LOG"

+         rlRun "egrep -i 'error|warning' $LOG" 1

+     rlPhaseEnd

+ 

+     rlPhaseStartCleanup

+         rlRun "userdel $TESTUSER" 0-255

+         rlRun "rm -rf /home/$TESTUSER $WORKDIR"

+         rlRun "setsebool allow_execmod $SEBOOL_ALLOW_EXECMOD"

+         rlRun "setsebool allow_execstack $SEBOOL_ALLOW_EXECSTACK"

+         rlRun "setsebool deny_ptrace $SEBOOL_DENY_PTRACE"

+     rlPhaseEnd

+ rlJournalPrintText

+ rlJournalEnd

@@ -0,0 +1,3 @@

+ #!/bin/bash

+ 

+ stap -e "probe process(\"$1/hello\").function(\"main\") { println(pn()) }" --runtime=dyninst -c "$1/hello" -o "$1/stapout.log"

@@ -0,0 +1,4 @@

+ #!/bin/bash

+ 

+ stap --runtime=dyninst -e 'probe end { printf("*** exiting ***\n"); exit() }' -c "$1/hello" -o "$1/stapout.log"

+ 

  • Separate the "stap-prep" phase out to a separate phase
  • Add tests/Sanity/byteman-java-methods-probing
  • Add tests/Sanity/kernel-modules
  • Add tests/Sanity/userspace-probes
  • Add tests/Regression/small-tests
  • Add tests/Sanity/stap-server-basic-sanity

1 new commit added

  • CI tests: Suppress benign read faults.
2 years ago

1 new commit added

  • CI Tests: Add explicit event for probing.
2 years ago

Pull-Request has been closed by mcermak

2 years ago