diff options
-rw-r--r-- | testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | testsuite/systemtap.base/marker.exp | 41 |
2 files changed, 43 insertions, 3 deletions
diff --git a/testsuite/ChangeLog b/testsuite/ChangeLog index 6811d912..5183f2b2 100644 --- a/testsuite/ChangeLog +++ b/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-02-20 David Smith <dsmith@redhat.com> + + * systemtap.base/marker.exp: Added tests for marker probe + ".format" component. + 2008-02-19 Frank Ch. Eigler <fche@elastic.org> PR5766. diff --git a/testsuite/systemtap.base/marker.exp b/testsuite/systemtap.base/marker.exp index 59d6fd33..513ddcd6 100644 --- a/testsuite/systemtap.base/marker.exp +++ b/testsuite/systemtap.base/marker.exp @@ -46,6 +46,7 @@ proc stap_compile { TEST_NAME compile script args } { # Initialize variables set kernel_markers_found 0 set kernel_marker_names {} +set kernel_marker_formats {} set num_marker_found 0 set num_marker_name "" @@ -54,6 +55,7 @@ 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) }"} +set kernel_format_script {"probe kernel.mark(\"%s\").format(\"%s\") { }"} # Try to read in the marker list from the Module.markers file. set uname [exec /bin/uname -r] @@ -63,14 +65,15 @@ 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 fmt] { + if [regexp {^([^ \t]+)\t[^ \t]+\t(.*%.+)$} $s match name fmt] { set kernel_markers_found 1 lappend kernel_marker_names $name + lappend kernel_marker_formats $fmt # 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]} { + # we can run K_MARKER09, K_MARKER10, etc. + if {$num_marker_found == 0 && [regexp {^[^%]*%[dup]} $fmt]} { set num_marker_found 1 set num_marker_name $name } @@ -236,3 +239,35 @@ if {$kernel_markers_found == 0} { [lindex $kernel_marker_names 0] {\$format\[0\]}] stap_compile $TEST_NAME 0 $script } + +set TEST_NAME "K_MARKER15" +if {$kernel_markers_found == 0} { + untested "$TEST_NAME : no kernel markers present" +} else { + # Try compiling a script that specifies the marker format as a + # wildcard. + set script [format $kernel_format_script \ + [lindex $kernel_marker_names 0] "*"] + stap_compile $TEST_NAME 1 $script +} + +set TEST_NAME "K_MARKER16" +if {$kernel_markers_found == 0} { + untested "$TEST_NAME : no kernel markers present" +} else { + # Try compiling a script that specifies the marker format. + set script [format $kernel_format_script \ + [lindex $kernel_marker_names 0] \ + [lindex $kernel_marker_formats 0]] + stap_compile $TEST_NAME 1 $script +} + +set TEST_NAME "K_MARKER17" +if {$kernel_markers_found == 0} { + untested "$TEST_NAME : no kernel markers present" +} else { + # Try compiling a script that specifies the wrong marker format. + set script [format $kernel_format_script \ + [lindex $kernel_marker_names 0] "foo"] + stap_compile $TEST_NAME 0 $script +} |