summaryrefslogtreecommitdiffstats
path: root/testsuite/systemtap.base
diff options
context:
space:
mode:
authorFrank Ch. Eigler <fche@elastic.org>2008-08-11 17:34:47 -0400
committerFrank Ch. Eigler <fche@elastic.org>2008-08-11 17:34:47 -0400
commit42e740602dbb7960e11b0bbf9053e95e8a1cb1e5 (patch)
treeaa32f56c7c5b1838e9d80bec2c15325c71742660 /testsuite/systemtap.base
parent3213d0891c826f16ba727a3e863075e2922666a0 (diff)
parent79640c29c5bcf8de20f013dcc80e1a9c7a93811f (diff)
downloadsystemtap-steved-42e740602dbb7960e11b0bbf9053e95e8a1cb1e5.tar.gz
systemtap-steved-42e740602dbb7960e11b0bbf9053e95e8a1cb1e5.tar.xz
systemtap-steved-42e740602dbb7960e11b0bbf9053e95e8a1cb1e5.zip
Merge commit 'origin/master' into pr4225
* commit 'origin/master': (34 commits) PR5049: fix overbroad effects of naive "*" prefixing; instead use optional "*/" only. stap-serverd was incorectly determining that the server could stapprobes man page: clarify statement(NUM).absolute and process("path") searching PR5049: prefix with "*" any filenames given in "fn@filename:line" probes Indentation fix. Redirect stderr gets redircted so warnings don't let example script run fail. PR6835. io/io_submit.stp: Fix #! start. Convert to normal line-ending. PR2895. Add proper #! /usr/bin/env stap line. Make example scripts executable. Use INSTALL_PROGRAM, not INSTALL_DATA for executable .stp scripts. example index: only warn if old, do not regenerate Start/stop the systemtap server from systemtap.exp and not in the top level Makefile. Lower statement wildcard test matching threshold. Moved details of utrace detach to stap_utrace_detach(). Saves thread vma information. Always generate examples indexes and install examples from srcdir. Refer to srcdir spec file Makefile so make rpm works when builddir != srcdir. Add index of subsystem and keywords at top of HTML indexes. Don't output output, exits, status line in indexes (mentioned in descriptions). Disable chmodding of samples/kmalloc-top in spec file since it isn't installed. Make sure examples indexes are always generated in builddir. ...
Diffstat (limited to 'testsuite/systemtap.base')
-rw-r--r--testsuite/systemtap.base/cache.exp1
-rw-r--r--testsuite/systemtap.base/itrace.exp106
-rw-r--r--testsuite/systemtap.base/stmt_rel.stp4
-rw-r--r--testsuite/systemtap.base/utrace_p4.exp41
4 files changed, 109 insertions, 43 deletions
diff --git a/testsuite/systemtap.base/cache.exp b/testsuite/systemtap.base/cache.exp
index f7ed2786..390af054 100644
--- a/testsuite/systemtap.base/cache.exp
+++ b/testsuite/systemtap.base/cache.exp
@@ -30,6 +30,7 @@ proc stap_compile { TEST_NAME flags script args } {
-timeout 180
-re {^Pass\ [1234]:[^\r]*\ in\ [^\r]*\ ms\.\r\n} {exp_continue}
-re {^Pass\ [34]: using cached [^\r\n]+\r\n} {incr cached 1; exp_continue}
+ -re "^WARNING" {exp_continue}
# pass-4 output
-re {^/[^\r\n]+\.ko\r\n} {exp_continue}
-re "compilation failed" {incr compile_errors 1; exp_continue}
diff --git a/testsuite/systemtap.base/itrace.exp b/testsuite/systemtap.base/itrace.exp
new file mode 100644
index 00000000..f19af977
--- /dev/null
+++ b/testsuite/systemtap.base/itrace.exp
@@ -0,0 +1,106 @@
+# itrace test
+
+# temporarily disabled
+return
+
+
+# Initialize variables
+set utrace_support_found 0
+set exepath "[pwd]/ls_[pid]"
+
+set itrace1_script {
+ global instrs = 0
+ probe begin { printf("systemtap starting probe\n") }
+ probe process("%s").itrace
+ {
+ instrs += 1
+ if (instrs == 5)
+ exit()
+ }
+
+
+ probe end { printf("systemtap ending probe\n")
+ printf("itraced = %%d\n", instrs)
+ }
+}
+set itrace1_script_output "itraced = 5\r\n"
+
+set itrace2_script {
+ global instrs = 0, itrace_on = 0, start_timer = 0
+ probe begin { start_timer = 1; printf("systemtap starting probe\n") }
+ probe process("%s").itrace if (itrace_on)
+ {
+ instrs += 1
+ if (instrs == 5)
+ exit()
+ }
+
+
+ probe timer.ms(1) if (start_timer)
+ {
+ itrace_on = 1
+ }
+
+ probe timer.ms(10) if (start_timer)
+ {
+ itrace_on = 0
+ }
+ probe end { printf("systemtap ending probe\n")
+ printf("itraced = %%d\n", instrs)
+ }
+}
+set itrace2_script_output "itraced = 5\r\n"
+
+
+# Set up our own copy of /bin/ls, to make testing for a particular
+# executable easy. We can't use 'ln' here, since we might be creating
+# a cross-device link. We can't use 'ln -s' here, since the kernel
+# resolves the symbolic link and reports that /bin/ls is being
+# exec'ed (instead of our local copy).
+if {[catch {exec cp /bin/ls $exepath} res]} {
+ fail "unable to copy /bin/ls: $res"
+ return
+}
+
+# "load" generation function for stap_run. It spawns our own copy of
+# /bin/ls, waits 5 seconds, then kills it.
+proc run_ls_5_sec {} {
+ global exepath
+
+ spawn $exepath
+ set exe_id $spawn_id
+ after 5000;
+ exec kill -INT -[exp_pid -i $exe_id]
+ return 0;
+}
+
+
+# Try to find utrace_attach symbol in /proc/kallsyms
+set path "/proc/kallsyms"
+if {! [catch {exec grep -q utrace_attach $path} dummy]} {
+ set utrace_support_found 1
+}
+
+set TEST_NAME "itrace1"
+if {$utrace_support_found == 0} {
+ untested "$TEST_NAME : no kernel utrace support found"
+} elseif {![installtest_p]} {
+ untested $TEST_NAME
+} else {
+ set script [format $itrace1_script $exepath]
+ stap_run $TEST_NAME run_ls_5_sec $itrace1_script_output -e $script
+}
+
+
+set TEST_NAME "itrace2"
+if {$utrace_support_found == 0} {
+ untested "$TEST_NAME : no kernel utrace support found"
+} elseif {![installtest_p]} {
+ untested $TEST_NAME
+} else {
+ set script [format $itrace2_script $exepath]
+ stap_run $TEST_NAME run_ls_5_sec $itrace2_script_output -e $script
+}
+
+# Cleanup
+exec rm -f $exepath
diff --git a/testsuite/systemtap.base/stmt_rel.stp b/testsuite/systemtap.base/stmt_rel.stp
index 13066161..cfe77317 100644
--- a/testsuite/systemtap.base/stmt_rel.stp
+++ b/testsuite/systemtap.base/stmt_rel.stp
@@ -55,11 +55,11 @@ probe kernel.statement("bio_put@fs/bio.c:*") {
# printf ("FAIL address %s %s\n", stack2, stack3)
# }
- # Did wildcard probe hit at least 5 different statements?
+ # Did wildcard probe hit at least 4 different statements?
foreach ([i] in wildcardpp) {
statement_count += 1
}
- if (statement_count >= 5) {
+ if (statement_count >= 4) {
printf ("PASS wildcard\n")
}
else
diff --git a/testsuite/systemtap.base/utrace_p4.exp b/testsuite/systemtap.base/utrace_p4.exp
index 333cff21..3083b97f 100644
--- a/testsuite/systemtap.base/utrace_p4.exp
+++ b/testsuite/systemtap.base/utrace_p4.exp
@@ -6,47 +6,6 @@
# If utrace exists in the kernel, it tries some compile tests. If
# utrace doesn't exist in the kernel, marks the tests as 'untested'.
-# stap_compile TEST_NAME flags script args
-# - TEST_NAME is the name of the current test
-# - compile indicates whether the script is supposed to compile
-# - script is the script to compile
-# Additional arguments are passed to stap as-is.
-proc stap_compile { TEST_NAME compile script args } {
- set cmd [concat {stap -v -p4 -e} $script $args]
-
- verbose -log "running $cmd"
- eval spawn $cmd
- set compile_errors 0
- expect {
- -re {^Pass\ [1234]:[^\r]*\ in\ .*\ ms.\r\n} {exp_continue}
- -re {^Pass\ [34]: using cached [^\r\n]+\r\n} {exp_continue}
- # pass-4 output
- -re {^/[^\r\n]+.ko\r\n} {exp_continue}
- -re "parse error" { incr compile_errors 1; exp_continue}
- -re "compilation failed" {incr compile_errors 1; exp_continue}
- -re "semantic error:" {incr compile_errors 1; exp_continue}
- -re "terminate called" {incr compile_errors 1; exp_continue}
- }
- catch close
- wait
-
- # If we've got compile errors and the script was supposed to
- # compile, fail.
- if {$compile_errors > 0} {
- if {$compile == 1} {
- fail "$TEST_NAME compilation failed"
- } else {
- pass "$TEST_NAME compilation failed correctly"
- }
- } else {
- if {$compile == 1} {
- pass "$TEST_NAME compilation succeeded"
- } else {
- fail "$TEST_NAME compilation succeeded unexpectedly"
- }
- }
-}
-
# Initialize variables
set utrace_support_found 0