1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
|
set test "abort"
set testpath "$srcdir/$subdir"
if {! [installtest_p]} { untested "$test"; return }
# --- TEST 1 ---
set subtest1 "TEST 1: abort() in the middle of a func body"
foreach runtime [get_runtime_list] {
if {$runtime eq ""} {
set runtime "kernel"
}
set test_name "$test: $subtest1 ($runtime)"
set exit_code [run_cmd_2way "stap --runtime=$runtime '$srcdir/$subdir/${test}_1.stp'" out stderr]
set exp_out "enter f
"
is "${test_name}: stdout" $out $exp_out
is "${test_name}: exit code" $exit_code 0
if {$stderr ne ""} {
send_log "stderr:\n$stderr"
}
}
# --- TEST 2 ---
set subtest2 "TEST 2: abort() in the middle of a func body in a deeper func call chain"
foreach runtime [get_runtime_list] {
if {$runtime eq ""} {
set runtime "kernel"
}
set test_name "$test: $subtest2 ($runtime)"
set exit_code [run_cmd_2way "stap --runtime=$runtime '$srcdir/$subdir/${test}_2.stp'" out stderr]
set exp_out "enter g
enter f
"
is "${test_name}: stdout" $out $exp_out
is "${test_name}: exit code" $exit_code 0
if {$stderr ne ""} {
send_log "stderr:\n$stderr"
}
}
# --- TEST 3 ---
set subtest3 "TEST 3: abort() in the middle of a probe handler body"
foreach runtime [get_runtime_list] {
if {$runtime eq ""} {
set runtime "kernel"
}
set test_name "$test: $subtest3 ($runtime)"
set exit_code [run_cmd_2way "stap --runtime=$runtime '$srcdir/$subdir/${test}_3.stp'" out stderr]
set exp_out "enter probe
"
is "${test_name}: stdout" $out $exp_out
is "${test_name}: exit code" $exit_code 0
if {$stderr ne ""} {
send_log "stderr:\n$stderr"
}
}
# --- TEST 4 ---
set subtest4 "TEST 4: abort() in the middle of a probe handler body (--compatible 4.0)"
foreach runtime [get_runtime_list] {
if {$runtime eq ""} {
set runtime "kernel"
}
set test_name "$test: $subtest4 ($runtime)"
set exit_code [run_cmd_2way "stap --compatible 4.0 --runtime=$runtime '$srcdir/$subdir/${test}_3.stp'" out stderr]
set exp_out "enter probe
"
is "${test_name}: stdout" $out $exp_out
is "${test_name}: exit code" $exit_code 0
if {$stderr ne ""} {
send_log "stderr:\n$stderr"
}
}
# --- TEST 5 ---
set subtest5 "TEST 5: abort() in the middle of a probe handler body (--compatible 3.3)"
set test_name "$test: $subtest5"
set exit_code [run_cmd_2way "stap --compatible 3.3 '$srcdir/$subdir/${test}_3.stp'" out stderr]
set exp_out ""
is "${test_name}: stdout" $out $exp_out
isnt "${test_name}: exit code" $exit_code 0
set stderr_pat "^semantic error: unresolved function.*\\(similar: \[^\\n\]*?\\): identifier 'abort' at \[^\\n\]*?\\.stp:3:5\\n"
like "${test_name}: stderr" $stderr $stderr_pat "-linestop -lineanchor"
# --- TEST 6 ---
set subtest6 "TEST 6: abort() in timer.profile (using globals)"
set test_name "$test: $subtest6"
set exit_code [run_cmd_2way "stap '$srcdir/$subdir/${test}_6.stp'" out stderr]
set exp_out "fire 3!
fire 2!
fire 1!
"
is "${test_name}: stdout" $out $exp_out
is "${test_name}: exit code" $exit_code 0
if {$stderr ne ""} {
send_log "stderr:\n$stderr"
}
# --- TEST 7 ---
set subtest7 "TEST 7: abort() in timer.profile (more concurrency and no globals)"
set test_name "$test: $subtest7"
set exit_code [run_cmd_2way "stap '$srcdir/$subdir/${test}_7.stp'" out stderr]
set exp_out ""
is "${test_name}: stdout" $out $exp_out
set exp_stderr ""
is "${test_name}: stderr" $stderr $exp_stderr
is "${test_name}: exit code" $exit_code 0
# --- TEST 8 ---
set subtest8 "TEST 8: abort() in the middle of a func body - abort() cannot be caught"
foreach runtime [get_runtime_list] {
if {$runtime eq ""} {
set runtime "kernel"
}
set test_name "$test: $subtest8 ($runtime)"
set exit_code [run_cmd_2way "stap --runtime=$runtime '$srcdir/$subdir/${test}_8.stp'" out stderr]
set exp_out "enter f
"
is "${test_name}: stdout" $out $exp_out
is "${test_name}: exit code" $exit_code 0
if {$stderr ne ""} {
send_log "stderr:\n$stderr"
}
}
|