diff options
author | Frank Ch. Eigler <fche@elastic.org> | 2008-01-17 21:52:42 -0500 |
---|---|---|
committer | Frank Ch. Eigler <fche@elastic.org> | 2008-01-17 21:52:42 -0500 |
commit | 7ee3e80ec0b7880c33d0ca3018025855d9dd5123 (patch) | |
tree | c39e234447fed3ca04c6467784fae5ddc85ce7d6 /testsuite | |
parent | 2b7f11a05877405a3dd232ac297e11f9d8253c2d (diff) | |
parent | af3047833424103c4e17728e849670da865d37c3 (diff) | |
download | systemtap-steved-7ee3e80ec0b7880c33d0ca3018025855d9dd5123.tar.gz systemtap-steved-7ee3e80ec0b7880c33d0ca3018025855d9dd5123.tar.xz systemtap-steved-7ee3e80ec0b7880c33d0ca3018025855d9dd5123.zip |
Merge branch 'master' of git://sources.redhat.com/git/systemtap
Diffstat (limited to 'testsuite')
-rw-r--r-- | testsuite/ChangeLog | 22 | ||||
-rwxr-xr-x | testsuite/buildok/signal-embedded.stp | 5 | ||||
-rwxr-xr-x | testsuite/semko/procfs11.stp | 4 | ||||
-rwxr-xr-x | testsuite/semko/procfs12.stp | 4 | ||||
-rw-r--r-- | testsuite/systemtap.base/marker.exp | 40 | ||||
-rw-r--r-- | testsuite/systemtap.base/onoffprobe.exp | 67 | ||||
-rw-r--r-- | testsuite/systemtap.base/onoffprobe.stp | 23 |
7 files changed, 115 insertions, 50 deletions
diff --git a/testsuite/ChangeLog b/testsuite/ChangeLog index d8439450..6dd0d8de 100644 --- a/testsuite/ChangeLog +++ b/testsuite/ChangeLog @@ -1,3 +1,25 @@ +2008-01-17 David Smith <dsmith@redhat.com> + + * semko/procfs11.stp: Added test for invalid use of procfs probe + '$value' target variable. + * semko/procfs12.stp: Ditto. + +2008-01-16 David Smith <dsmith@redhat.com> + + PR 5608. + * systemtap.base/marker.exp: Added 2 tests for treating marker + arguments incorrectly. + +2008-01-16 Eugene Teo <eteo@redhat.com> + + * buildok/signal-embedded.stp: Add all new embedded C functions + in signal. + +2008-01-14 Frank Ch. Eigler <fche@elastic.org> + + PR 4935. + * systemtap.base/onoffprobe.*: Toughen test. + 2008-01-12 Frank Ch. Eigler <fche@elastic.org> * lib/systemtap.exp (get_system_info): Look for $builddir/SNAPSHOT too. diff --git a/testsuite/buildok/signal-embedded.stp b/testsuite/buildok/signal-embedded.stp index 5a0d9d8b..24e218e9 100755 --- a/testsuite/buildok/signal-embedded.stp +++ b/testsuite/buildok/signal-embedded.stp @@ -2,5 +2,10 @@ probe begin { print (get_sigset(0)) + print (get_sa_flags(0)) + print (get_sa_handler(0)) + print (sigset_mask_str(0)) + print (is_sig_blocked(0, 0)) + print (sa_flags_str(0)) } diff --git a/testsuite/semko/procfs11.stp b/testsuite/semko/procfs11.stp new file mode 100755 index 00000000..719346fb --- /dev/null +++ b/testsuite/semko/procfs11.stp @@ -0,0 +1,4 @@ +#! stap -p2 + +# use $value as a structure pointer in a procfs probe +probe procfs.write { print($value->foo) } diff --git a/testsuite/semko/procfs12.stp b/testsuite/semko/procfs12.stp new file mode 100755 index 00000000..c8af619b --- /dev/null +++ b/testsuite/semko/procfs12.stp @@ -0,0 +1,4 @@ +#! stap -p2 + +# use $value as an array in a procfs probe +probe procfs.write { print($value[0]) } diff --git a/testsuite/systemtap.base/marker.exp b/testsuite/systemtap.base/marker.exp index 01d1ed54..bfa3b02d 100644 --- a/testsuite/systemtap.base/marker.exp +++ b/testsuite/systemtap.base/marker.exp @@ -11,7 +11,7 @@ proc stap_compile { TEST_NAME compile script args } { set cmd [concat {stap -v -p4 -e} $script $args] - #puts "running $cmd" + puts "running $cmd" eval spawn $cmd set compile_errors 0 expect { @@ -47,9 +47,13 @@ proc stap_compile { TEST_NAME compile script args } { set kernel_markers_found 0 set kernel_marker_names {} +set num_marker_found 0 +set num_marker_name "" + set kernel_script {"probe kernel.mark(\"%s\") { }"} set kernel_script_arg {"probe kernel.mark(\"%s\") { print(%s) }"} set kernel_script_arg2 {"probe kernel.mark(\"%s\") { %s = 0 }"} +set kernel_script_arg3 {"probe kernel.mark(\"%s\") { print(\$arg1%s) }"} # Try to read in the marker list from the Module.markers file. set uname [exec /bin/uname -r] @@ -59,9 +63,17 @@ if {! [catch {open $path RDONLY} fl]} { while {[gets $fl s] >= 0} { # This regexp only picks up markers that contain arguments. # This helps ensure that K_MARKER04 passes correctly. - if [regexp {^([^ \t]+)\t[^ \t]+.*%.+$} $s match name] { + if [regexp {^([^ \t]+)\t[^ \t]+.*(%.+)$} $s match name fmt] { set kernel_markers_found 1 lappend kernel_marker_names $name + + # Look for a marker whose first argument is numeric + # (either '%d', '%u', or '%p'). If we find such a marker, + # we can run K_MARKER09 and K_MARKER10. + if {$num_marker_found == 0 && [regexp {^%[dup]} $fmt]} { + set num_marker_found 1 + set num_marker_name $name + } } } catch {close $fl} @@ -156,3 +168,27 @@ if {$kernel_markers_found == 0} { [lindex $kernel_marker_names 0] {\$arg1}] stap_compile $TEST_NAME 0 $script } + +set TEST_NAME "K_MARKER09" +if {$kernel_markers_found == 0} { + untested "$TEST_NAME : no kernel markers present" +} elseif {$num_marker_found == 0} { + untested "$TEST_NAME : no kernel marker found with a numeric first argument" +} else { + # Try compiling a script that treats its first marker argument + # as a structure (which isn't allowed). + set script [format $kernel_script_arg3 $num_marker_name "->foo"] + stap_compile $TEST_NAME 0 $script +} + +set TEST_NAME "K_MARKER10" +if {$kernel_markers_found == 0} { + untested "$TEST_NAME : no kernel markers present" +} elseif {$num_marker_found == 0} { + untested "$TEST_NAME : no kernel marker found with a numeric first argument" +} else { + # Try compiling a script that treats its first marker argument + # like an array (which isn't allowed). + set script [format $kernel_script_arg3 $num_marker_name {\[0\]}] + stap_compile $TEST_NAME 0 $script +} diff --git a/testsuite/systemtap.base/onoffprobe.exp b/testsuite/systemtap.base/onoffprobe.exp index 41e107d7..b86de4ea 100644 --- a/testsuite/systemtap.base/onoffprobe.exp +++ b/testsuite/systemtap.base/onoffprobe.exp @@ -4,54 +4,37 @@ if {![installtest_p]} { untested $test; return } spawn stap $srcdir/$subdir/$test.stp -m $test set pid $spawn_id set ok 0 + +proc advance {} { + global test + global expect_out + global ok + pass "$test $expect_out(1,string)" + incr ok + exec echo $ok > /proc/systemtap/$test/switch + exec echo dummy > /dev/null + exp_continue +} + expect { -timeout 240 - "begin probed\r\n" { - if {$ok == 0} { - incr ok - pass "conditional begin probe" - exec echo 1 > /proc/systemtap/$test/switch - exec echo "dummy" > /dev/null - exp_continue; - } - } - "function return probed\r\n" { - if {$ok == 1} { - incr ok - pass "conditional dwarf probe (return)" - exec echo 2 > /proc/systemtap/$test/switch - exec echo "dummy" > /dev/null - exp_continue; - } - } - "function entry probed\r\n" { - if {$ok == 2} { - incr ok - pass "conditional dwarf probe (entry)" - exec echo 3 > /proc/systemtap/$test/switch - exp_continue; - } - } - "timer probed\r\n" { - if {$ok == 3} { - incr ok - pass "conditional timer probe" - exec echo 4 > /proc/systemtap/$test/switch - exp_continue; - } - } - "profile probed\r\n" { - if {$ok == 4} { - incr ok - pass "conditional profile probe" - } + -re "(begin1 probed)\r\n" { advance } + -re "^(function return probed)\r\n" { advance } + -re "^(function entry probed)\r\n" { advance } + -re "^(timer probed)\r\n" { advance } + -re "^(profile probed)\r\n" { advance } + -re "^(alias\.one\.a and alias\.one and alias\.\* probed)\r\n" { advance } + -re "^(alias\.one\.b and alias\.one and alias\.\* probed)\r\n" { advance } + -re "^(alias\.two and alias\.\* probed)\r\n" { + pass "$test $expect_out(1,string)" + incr ok } - timeout { fail "$test (timeout)" } - eof { } + timeout { fail "$test (timeout)" } + eof { } } send "\003" #FIXME does not handle case of hanging pfaults.stp correctly wait exec rm -f $test.ko -if {$ok != 5} {fail "conditional probes ($ok)"} +if {$ok != 8} {fail "conditional probes ($ok)"} diff --git a/testsuite/systemtap.base/onoffprobe.stp b/testsuite/systemtap.base/onoffprobe.stp index 11968540..f7169039 100644 --- a/testsuite/systemtap.base/onoffprobe.stp +++ b/testsuite/systemtap.base/onoffprobe.stp @@ -1,34 +1,45 @@ -global switch=0 +global switch=-1 #begin probe +probe begin if (switch==-1) { + log("begin1 probed"); +} + probe begin if (switch==0) { - log("begin probed\n"); + log("begin2 probed"); } #dwarf probe (return) probe kernel.function("sys_write").return if (switch == 1) { - log("function return probed\n") + log("function return probed") switch = 0 } #dwarf probe (entry) probe kernel.function("sys_write") if (switch == 2) { - log("function entry probed\n") + log("function entry probed") switch = 0 } #timer probe probe timer.s(1) if (switch == 3) { - log("timer probed\n") + log("timer probed") switch = 0 } #profile probe probe timer.profile if (switch == 4) { - log("profile probed\n") + log("profile probed") switch = 0 } +# aliasess +probe alias.one.a = timer.s(2) if (switch == 5) { print("alias.one.a and") } +probe alias.one.b = timer.s(3) if (switch == 6) { print("alias.one.b and") } +probe alias.one = alias.one.* if (switch >= 5 && switch < 7) { print(" alias.one and") } +probe alias.two = timer.s(4) if (switch == 7) { print("alias.two and") } +probe alias.* if (switch) { log(" alias.* probed") } + probe procfs("switch").write { switch = strtol($value, 10) } |