# maxactive.exp # # Check to see if using the 'maxactive(N)' limit on return probes # works, by seeing if skipped probes increases when using it. if {![installtest_p]} { untested "MAXACTIVE"; return } proc sleep_five_sec {} { after 5000; return 0; } # Script1. For 5 seconds, probe the return of "sys_select" and # "sys_read". See if we skip any probes. set script1 { global foo probe kernel.function("sys_select").return, kernel.function("sys_read").return { foo++ } probe timer.ms(5000) { exit(); } probe begin { log("systemtap starting probe"); log("systemtap ending probe");} } # Run script1 and save the number of skipped probes (which will most # likely be 0). stap_run "MAXACTIVE01" sleep_five_sec "" -e $script1 set skipped1 $skipped_probes # Script2. For 5 seconds, probe the return of "sys_select" and # "sys_read", with a limit of 1 probe active at a time. See if we # skip any probes. set script2 { global foo probe kernel.function("sys_select").return.maxactive(1), kernel.function("sys_read").return.maxactive(1) { foo++ } probe timer.ms(5000) { exit(); } probe begin { log("systemtap starting probe"); log("systemtap ending probe");} } # Run script2 and save the number of skipped probes. set output_string "(WARNING: Number of errors: 0, skipped probes: \\d+\r\n)?" stap_run "MAXACTIVE02" sleep_five_sec $output_string -e $script2 set skipped2 $skipped_probes # If the number of skipped probes for script 1 is less than the number # of skipped probes for script 2, we can assume that "maxactive(N)" is # working. # # Note that this isn't 100% accurate based on the system load at the # time of the scripts. set test "MAXACTIVE03" if {$skipped1 <= $skipped2} { pass $test } else { fail "$test ($skipped1 skipped probes > $skipped2 skipped probes)" }