summaryrefslogtreecommitdiffstats
path: root/testsuite/systemtap.context/backtrace.tcl
diff options
context:
space:
mode:
authorhiramatu <hiramatu>2007-09-12 16:48:00 +0000
committerhiramatu <hiramatu>2007-09-12 16:48:00 +0000
commitcf9be511f05d0b310b2c4ce4c050d3707be9e65a (patch)
tree66ca48f389da6fd0ad2ce64341b8ca0d5a62fb09 /testsuite/systemtap.context/backtrace.tcl
parent737f98f027f838e976afae7b3586e1806e4ed26e (diff)
downloadsystemtap-steved-cf9be511f05d0b310b2c4ce4c050d3707be9e65a.tar.gz
systemtap-steved-cf9be511f05d0b310b2c4ce4c050d3707be9e65a.tar.xz
systemtap-steved-cf9be511f05d0b310b2c4ce4c050d3707be9e65a.zip
2007-09-12 Masami Hiramatsu <mhiramat@redhat.com>
PR 4633 * systemtap.context/backtrace.stp: Add testcases for the return probe and the profile probe. * systemtap.context/backtrace.tcl: Ditto. * /systemtap.context/systemtap_test_module2.c: Ditto.
Diffstat (limited to 'testsuite/systemtap.context/backtrace.tcl')
-rw-r--r--testsuite/systemtap.context/backtrace.tcl92
1 files changed, 88 insertions, 4 deletions
diff --git a/testsuite/systemtap.context/backtrace.tcl b/testsuite/systemtap.context/backtrace.tcl
index 98a765a2..8d63604d 100644
--- a/testsuite/systemtap.context/backtrace.tcl
+++ b/testsuite/systemtap.context/backtrace.tcl
@@ -1,5 +1,9 @@
set m1 0
set m2 0
+set m3 0
+set m4 0
+set m5 0
+set m6 0
spawn stap backtrace.stp
#exp_internal 1
@@ -28,11 +32,11 @@ expect {
}
exp_continue
}
- -re {.*---\r\nthe stack is 0x[a-f0-9]+ [^\r\n]+\r\n} {
+ -re {.*---\r\nthe call stack is 0x[a-f0-9]+ [^\r\n]+\r\n} {
incr m2
expect {
-timeout 5
- -re {.*0x[a-f0-9]+ : yyy_func3[^\[]+\[systemtap_test_module2\]\r\n} {
+ -re {.*---\r\n 0x[a-f0-9]+ : yyy_func3[^\[]+\[systemtap_test_module2\]\r\n} {
if {$m2 == 1} {incr m2}
exp_continue
}
@@ -44,20 +48,100 @@ expect {
if {$m2 == 3} {incr m2}
}
}
+ exp_continue
+ }
+ -re {.*backtrace from module\(\"systemtap_test_module2\"\)\.function\(\"yyy_func4@[^\r\n]+\r\n} {
+ incr m3
+ expect {
+ -timeout 5
+ -re {^Returning from: 0x[a-f0-9]+ : yyy_func4[^\[]+\[systemtap_test_module2\]\r\n} {
+ if {$m3 == 1} {incr m3}
+ exp_continue
+ }
+ -re {^Returning to : 0x[a-f0-9]+ : yyy_func3[^\[]+\[systemtap_test_module2\]\r\n} {
+ if {$m3 == 2} {incr m3}
+ exp_continue
+ }
+ -re {^ 0x[a-f0-9]+ : yyy_func2[^\[]+\[systemtap_test_module2\]\r\n} {
+ if {$m3 == 3} {incr m3}
+ exp_continue
+ }
+ -re {^ 0x[a-f0-9]+ : yyy_func1[^\[]+\[systemtap_test_module2\]\r\n} {
+ if {$m3 == 4} {incr m3}
+ }
+ }
+ exp_continue
+ }
+ -re {.*---\r\nthe return stack is 0x[a-f0-9]+ [^\r\n]+\r\n} {
+ incr m4
+ expect {
+ -timeout 5
+ -re {.*0x[a-f0-9]+ : kretprobe_trampoline_holder[^\[]+\[\]\r\n} {
+ if {$m4 == 1} {incr m4}
+ exp_continue
+ }
+ -re {^ 0x[a-f0-9]+ : yyy_func2[^\[]+\[systemtap_test_module2\]\r\n} {
+ if {$m4 == 2} {incr m4}
+ exp_continue
+ }
+ -re {^ 0x[a-f0-9]+ : yyy_func1[^\[]+\[systemtap_test_module2\]\r\n} {
+ if {$m4 == 3} {incr m4}
+ }
+ }
+ exp_continue
+ }
+ -re {.*backtrace from timer.profile:\r\n} {
+ incr m5
+ expect {
+ -timeout 5
+ -re {^ 0x[a-f0-9]+ : [^\r\n]+\r\n 0x[a-f0-9]+ : [^\r\n]+\r\n} {
+ if {$m5 == 1} {incr m5}
+ }
+ }
+ exp_continue
+ }
+ -re {.*---\r\nthe profile stack is 0x[a-f0-9]+ [^\r\n]+\r\n} {
+ incr m6
+ expect {
+ -timeout 5
+ -re {.*---\r\n 0x[a-f0-9]+ : [^\r\n]+\r\n 0x[a-f0-9]+ : [^\r\n]+\r\n} {
+ if {$m6 == 1} {incr m6}
+ }
+ }
}
- eof {fail "backtrace of yyy_func3. unexpected EOF" }
+ eof {fail "backtrace of yyy_func3, yyy_func4.return and timer.profile. unexpected EOF" }
}
send "\003"
if {$m1 == 4} {
pass "backtrace of yyy_func3"
} else {
- fail "backtrace of yyy_func3"
+ fail "backtrace of yyy_func3 ($m1)"
}
if {$m2 == 4} {
pass "print_stack of yyy_func3"
} else {
fail "print_stack of yyy_func3 ($m2)"
}
+if {$m3 == 5} {
+ pass "backtrace of yyy_func4.return"
+} else {
+ fail "backtrace of yyy_func4.return ($m3)"
+}
+if {$m4 == 4} {
+ pass "print_stack of yyy_func4.return"
+} else {
+ fail "print_stack of yyy_func4.return ($m4)"
+}
+if {$m5 == 2} {
+ pass "backtrace of timer.profile"
+} else {
+ fail "backtrace of timer.profile ($m5)"
+}
+if {$m6 == 2} {
+ pass "print_stack of timer.profile"
+} else {
+ fail "print_stack of timer.profile ($m6)"
+}
close
wait