diff options
Diffstat (limited to 'testsuite')
-rw-r--r-- | testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | testsuite/systemtap.base/stmt_rel.exp | 1 | ||||
-rw-r--r-- | testsuite/systemtap.base/stmt_rel.stp | 29 |
3 files changed, 34 insertions, 1 deletions
diff --git a/testsuite/ChangeLog b/testsuite/ChangeLog index 9ab2a353..4fda9c5f 100644 --- a/testsuite/ChangeLog +++ b/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-06-23 Stan Cox <scox@redhat.com> + + * systemtap.base/stmt_rel.stp: Added test for + kernel.statement("Func@File:*") + 2008-06-18 Josh Stone <joshua.i.stone@intel.com> * systemtap.base/optim_voidstmt.stp: Add tests for various statement diff --git a/testsuite/systemtap.base/stmt_rel.exp b/testsuite/systemtap.base/stmt_rel.exp index e929b292..a13631e6 100644 --- a/testsuite/systemtap.base/stmt_rel.exp +++ b/testsuite/systemtap.base/stmt_rel.exp @@ -4,6 +4,7 @@ set test "stmt_rel" set ::result_string {PASS bio_init PASS line number PASS address +PASS wildcard } stap_run2 $srcdir/$subdir/$test.stp diff --git a/testsuite/systemtap.base/stmt_rel.stp b/testsuite/systemtap.base/stmt_rel.stp index a5f1cc2a..43c38594 100644 --- a/testsuite/systemtap.base/stmt_rel.stp +++ b/testsuite/systemtap.base/stmt_rel.stp @@ -1,4 +1,5 @@ -global stack2, stack2pp, stack2func +global stack2, stack2pp, stack2func, stack3, stack3pp, stack3func +global wildcardpp, wild_count probe kernel.statement("bio_init@fs/bio.c+2") { stack2 = tokenize(backtrace(), " ") @@ -9,6 +10,17 @@ probe kernel.statement("bio_init@fs/bio.c+3") { stack3 = tokenize(backtrace(), " " ) stack3func = probefunc() stack3pp = pp() +} + +probe kernel.statement("bio_put@fs/bio.c:*") { + line = tokenize(pp(),":") + line = tokenize("",":") + line = substr(line,0,strlen(line)-2) + wildcardpp[strtol(line,10)]++ + + if (wild_count++ <= 10) { + next + } stack2pp = tokenize(stack2pp,":") stack2pp = tokenize("",":") @@ -18,6 +30,7 @@ probe kernel.statement("bio_init@fs/bio.c+3") { stack2line = strtol (substr(stack2pp,0,strlen(stack2pp)-2), 10) stack3line = strtol (substr(stack3pp,0,strlen(stack3pp)-2), 10) + # Did functions for both bio_init probes match? if (stack2func == stack3func) { printf ("PASS %s\n", stack2func) } @@ -25,6 +38,7 @@ probe kernel.statement("bio_init@fs/bio.c+3") { printf ("FAIL %s %s\n", stack2func, stack3func) } + # Was line # for bio_init probe +2 < line # for bio_init probe +3? if ((stack2line + 1) == stack3line) { printf ("PASS line number\n") } @@ -32,6 +46,7 @@ probe kernel.statement("bio_init@fs/bio.c+3") { printf ("FAIL line number %d %d\n", stack2line, stack3line) } + # Was address for bio_init probe +2 < address for bio_init probe +3? if (stack2 < stack3) { printf ("PASS address\n") } @@ -39,5 +54,17 @@ probe kernel.statement("bio_init@fs/bio.c+3") { printf ("FAIL address %s %s\n", stack2, stack3) } + # Did wildcard probe hit at least 5 different statements? + foreach ([i] in wildcardpp) { + statement_count += 1 + } + if (statement_count >= 5) { + printf ("PASS wildcard\n") + } + else + { + printf ("FAIL wildcard %d\n", statement_count) + } + exit() } |