Commit | Line | Data |
---|---|---|
0de2479d SM |
1 | #!/bin/bash |
2 | # | |
3 | # Copyright (C) - 2020 EfficiOS, inc | |
4 | # | |
5 | # This library is free software; you can redistribute it and/or modify it under | |
6 | # the terms of the GNU Lesser General Public License as published by the Free | |
7 | # Software Foundation; version 2.1 of the License. | |
8 | # | |
9 | # This library is distributed in the hope that it will be useful, but WITHOUT | |
10 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | |
11 | # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more | |
12 | # details. | |
13 | # | |
14 | # You should have received a copy of the GNU Lesser General Public License | |
15 | # along with this library; if not, write to the Free Software Foundation, Inc., | |
16 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
17 | ||
18 | # Test the `lttng list-trigger` command line interface. | |
19 | ||
20 | CURDIR="$(dirname "$0")" | |
21 | TESTDIR="$CURDIR/../../.." | |
22 | ||
23 | # shellcheck source=../../../utils/utils.sh | |
24 | source "$TESTDIR/utils/utils.sh" | |
25 | ||
57739a6b | 26 | NUM_TESTS=106 |
0de2479d SM |
27 | |
28 | FULL_LTTNG_BIN="${TESTDIR}/../src/bin/lttng/${LTTNG_BIN}" | |
29 | ||
33e55711 FD |
30 | tmp_stdout=$(mktemp --tmpdir -t test_list_triggers_cli_stdout.XXXXXX) |
31 | tmp_stderr=$(mktemp --tmpdir -t test_list_triggers_cli_stderr.XXXXXX) | |
32 | tmp_expected_stdout=$(mktemp --tmpdir -t test_list_triggers_cli_expected_stdout.XXXXXX) | |
0de2479d | 33 | uprobe_elf_binary=$(realpath "${TESTDIR}/utils/testapp/userspace-probe-elf-binary/.libs/userspace-probe-elf-binary") |
8a917ae8 | 34 | uprobe_sdt_binary=$(realpath "${TESTDIR}/utils/testapp/userspace-probe-sdt-binary/.libs/userspace-probe-sdt-binary") |
19904669 | 35 | register_some_triggers_bin=$(realpath "${CURDIR}/utils/register-some-triggers") |
0de2479d SM |
36 | |
37 | uid=$(id --user) | |
38 | gid=$(id --group) | |
39 | ||
40 | if [ "$uid" == "0" ]; then | |
41 | ist_root=1 | |
8a917ae8 FD |
42 | ls "$uprobe_sdt_binary" >/dev/null 2>&1 |
43 | if test $? == 0; then | |
44 | hast_sdt_binary=1 | |
45 | else | |
46 | hast_sdt_binary=0 | |
47 | fi | |
0de2479d SM |
48 | else |
49 | ist_root=0 | |
8a917ae8 | 50 | hast_sdt_binary=0 |
0de2479d SM |
51 | fi |
52 | ||
be7f9dfc | 53 | |
0de2479d SM |
54 | test_top_level_options () |
55 | { | |
be7f9dfc | 56 | diag "Listing top level options" |
0de2479d | 57 | |
64c34630 | 58 | lttng_add_trigger_ok "hello" --condition event-rule-matches --domain=user --name=test-name --action notify |
0de2479d SM |
59 | |
60 | cat > "${tmp_expected_stdout}" <<- EOF | |
1d4b59f2 | 61 | - name: hello |
481c5310 | 62 | owner uid: ${uid} |
8c1d25ff | 63 | condition: event rule matches |
50ad0862 | 64 | rule: test-name (type: tracepoint, domain: ust) |
0de2479d SM |
65 | actions: |
66 | notify | |
709fb83f JG |
67 | errors: none |
68 | errors: none | |
0de2479d SM |
69 | EOF |
70 | ||
be7f9dfc | 71 | list_triggers_matches_ok "top level options" "${tmp_expected_stdout}" |
0de2479d | 72 | |
be7f9dfc | 73 | lttng_remove_trigger_ok "hello" |
0de2479d SM |
74 | } |
75 | ||
8dbb86b8 | 76 | test_event_rule_matches_tracepoint () |
0de2479d | 77 | { |
040a195f | 78 | diag "Listing event-rule-matches tracepoint" |
0de2479d | 79 | |
64c34630 SM |
80 | lttng_add_trigger_ok "C" --condition event-rule-matches --domain=user --action notify |
81 | lttng_add_trigger_ok "A" --condition event-rule-matches --name=aaa --domain=user --filter 'p == 2' --action notify | |
b03a81fb | 82 | lttng_add_trigger_ok "D" --condition event-rule-matches --name='hello*' --domain=user -x hello2 --exclude-name hello3 -x hello4 --action notify |
949f049b SM |
83 | lttng_add_trigger_ok "B" --condition event-rule-matches --domain=user --name=gerboise --log-level INFO.. --action notify |
84 | lttng_add_trigger_ok "E" --condition event-rule-matches --domain=user --name=lemming --log-level WARNING --action notify | |
85 | lttng_add_trigger_ok "J" --condition event-rule-matches --domain=user --name=lemming --log-level .. --action notify | |
64c34630 SM |
86 | lttng_add_trigger_ok "F" --condition event-rule-matches --domain=user --name=capture-payload-field --capture a --action notify |
87 | lttng_add_trigger_ok "G" --condition event-rule-matches --domain=user --name=capture-array --capture 'a[2]' --capture '$ctx.tourlou[18]' --action notify | |
88 | lttng_add_trigger_ok "H" --condition event-rule-matches --domain=user --name=capture-chan-ctx --capture '$ctx.vpid' --action notify | |
89 | lttng_add_trigger_ok "I" --condition event-rule-matches --domain=user --name=capture-app-ctx --capture '$app.iga:active_clients' --action notify | |
0de2479d SM |
90 | |
91 | cat > "${tmp_expected_stdout}" <<- EOF | |
1d4b59f2 | 92 | - name: A |
481c5310 | 93 | owner uid: ${uid} |
8c1d25ff | 94 | condition: event rule matches |
0de2479d SM |
95 | rule: aaa (type: tracepoint, domain: ust, filter: p == 2) |
96 | actions: | |
97 | notify | |
709fb83f JG |
98 | errors: none |
99 | errors: none | |
1d4b59f2 | 100 | - name: B |
481c5310 | 101 | owner uid: ${uid} |
8c1d25ff | 102 | condition: event rule matches |
1b859ae2 | 103 | rule: gerboise (type: tracepoint, domain: ust, log level at least INFO) |
0de2479d SM |
104 | actions: |
105 | notify | |
709fb83f JG |
106 | errors: none |
107 | errors: none | |
1d4b59f2 | 108 | - name: C |
481c5310 | 109 | owner uid: ${uid} |
8c1d25ff | 110 | condition: event rule matches |
0de2479d SM |
111 | rule: * (type: tracepoint, domain: ust) |
112 | actions: | |
113 | notify | |
709fb83f JG |
114 | errors: none |
115 | errors: none | |
1d4b59f2 | 116 | - name: D |
481c5310 | 117 | owner uid: ${uid} |
8c1d25ff | 118 | condition: event rule matches |
0de2479d SM |
119 | rule: hello* (type: tracepoint, domain: ust, exclusions: hello2,hello3,hello4) |
120 | actions: | |
121 | notify | |
709fb83f JG |
122 | errors: none |
123 | errors: none | |
1d4b59f2 | 124 | - name: E |
481c5310 | 125 | owner uid: ${uid} |
8c1d25ff | 126 | condition: event rule matches |
1b859ae2 | 127 | rule: lemming (type: tracepoint, domain: ust, log level is WARNING) |
0de2479d SM |
128 | actions: |
129 | notify | |
709fb83f JG |
130 | errors: none |
131 | errors: none | |
1d4b59f2 | 132 | - name: F |
481c5310 | 133 | owner uid: ${uid} |
8c1d25ff | 134 | condition: event rule matches |
b203b4b0 SM |
135 | rule: capture-payload-field (type: tracepoint, domain: ust) |
136 | captures: | |
137 | - a | |
138 | actions: | |
139 | notify | |
709fb83f JG |
140 | errors: none |
141 | errors: none | |
1d4b59f2 | 142 | - name: G |
481c5310 | 143 | owner uid: ${uid} |
8c1d25ff | 144 | condition: event rule matches |
b203b4b0 SM |
145 | rule: capture-array (type: tracepoint, domain: ust) |
146 | captures: | |
147 | - a[2] | |
148 | - \$ctx.tourlou[18] | |
149 | actions: | |
150 | notify | |
709fb83f JG |
151 | errors: none |
152 | errors: none | |
1d4b59f2 | 153 | - name: H |
481c5310 | 154 | owner uid: ${uid} |
8c1d25ff | 155 | condition: event rule matches |
b203b4b0 SM |
156 | rule: capture-chan-ctx (type: tracepoint, domain: ust) |
157 | captures: | |
158 | - \$ctx.vpid | |
159 | actions: | |
160 | notify | |
709fb83f JG |
161 | errors: none |
162 | errors: none | |
1d4b59f2 | 163 | - name: I |
481c5310 | 164 | owner uid: ${uid} |
8c1d25ff | 165 | condition: event rule matches |
b203b4b0 SM |
166 | rule: capture-app-ctx (type: tracepoint, domain: ust) |
167 | captures: | |
168 | - \$app.iga:active_clients | |
169 | actions: | |
170 | notify | |
709fb83f JG |
171 | errors: none |
172 | errors: none | |
949f049b | 173 | - name: J |
481c5310 | 174 | owner uid: ${uid} |
8c1d25ff | 175 | condition: event rule matches |
949f049b SM |
176 | rule: lemming (type: tracepoint, domain: ust) |
177 | actions: | |
178 | notify | |
179 | errors: none | |
180 | errors: none | |
0de2479d SM |
181 | EOF |
182 | ||
665db063 | 183 | list_triggers_matches_ok "event-rule-matches, tracepoint event rule" "${tmp_expected_stdout}" |
be7f9dfc FD |
184 | |
185 | lttng_remove_trigger_ok "A" | |
186 | lttng_remove_trigger_ok "B" | |
187 | lttng_remove_trigger_ok "C" | |
188 | lttng_remove_trigger_ok "D" | |
189 | lttng_remove_trigger_ok "E" | |
190 | lttng_remove_trigger_ok "F" | |
191 | lttng_remove_trigger_ok "G" | |
192 | lttng_remove_trigger_ok "H" | |
193 | lttng_remove_trigger_ok "I" | |
949f049b | 194 | lttng_remove_trigger_ok "J" |
0de2479d SM |
195 | } |
196 | ||
8dbb86b8 | 197 | test_event_rule_matches_probe () |
0de2479d SM |
198 | { |
199 | local channel_enable_addr | |
200 | local channel_disable_addr | |
201 | ||
040a195f | 202 | diag "Listing event-rule-matches kernel probe" |
0de2479d SM |
203 | |
204 | channel_enable_addr=$(grep ' t lttng_channel_enable\s\[lttng_tracer\]$' /proc/kallsyms | cut -f 1 -d ' ') | |
205 | channel_disable_addr=$(grep ' t lttng_channel_disable\s\[lttng_tracer\]$' /proc/kallsyms | cut -f 1 -d ' ') | |
206 | ||
207 | # We need to find a valid offset. | |
208 | base_symbol="" | |
209 | offset=0 | |
210 | if [[ 0x$channel_enable_addr -lt 0x$channel_disable_addr ]]; then | |
211 | base_symbol="lttng_channel_enable" | |
212 | offset=$(( 0x$channel_disable_addr - 0x$channel_enable_addr )) | |
213 | else | |
214 | base_symbol="lttng_channel_disable" | |
215 | offset=$(( 0x$channel_enable_addr - 0x$channel_disable_addr )) | |
216 | fi | |
217 | ||
218 | offset_hex="0x$(printf '%x' $offset)" | |
219 | ||
24de704e SM |
220 | lttng_add_trigger_ok "T0" --condition event-rule-matches --domain=kernel --type=kprobe --location=lttng_channel_enable --event-name=my_channel_enable --action notify |
221 | lttng_add_trigger_ok "T1" --condition event-rule-matches --domain=kernel --type=kprobe --location="${base_symbol}+${offset_hex}" --event-name=my_channel_enable --action notify | |
222 | lttng_add_trigger_ok "T2" --condition event-rule-matches --domain=kernel --type=kprobe --location="0x${channel_enable_addr}" --event-name=my_channel_enable --action notify | |
0de2479d SM |
223 | |
224 | cat > "${tmp_expected_stdout}" <<- EOF | |
1d4b59f2 | 225 | - name: T0 |
481c5310 | 226 | owner uid: ${uid} |
8c1d25ff | 227 | condition: event rule matches |
85522de5 | 228 | rule: my_channel_enable (type: kernel:kprobe, location: lttng_channel_enable) |
0de2479d SM |
229 | actions: |
230 | notify | |
709fb83f JG |
231 | errors: none |
232 | errors: none | |
1d4b59f2 | 233 | - name: T1 |
481c5310 | 234 | owner uid: ${uid} |
8c1d25ff | 235 | condition: event rule matches |
85522de5 | 236 | rule: my_channel_enable (type: kernel:kprobe, location: ${base_symbol}+${offset_hex}) |
0de2479d SM |
237 | actions: |
238 | notify | |
709fb83f JG |
239 | errors: none |
240 | errors: none | |
1d4b59f2 | 241 | - name: T2 |
481c5310 | 242 | owner uid: ${uid} |
8c1d25ff | 243 | condition: event rule matches |
85522de5 | 244 | rule: my_channel_enable (type: kernel:kprobe, location: 0x${channel_enable_addr}) |
0de2479d SM |
245 | actions: |
246 | notify | |
709fb83f JG |
247 | errors: none |
248 | errors: none | |
0de2479d SM |
249 | EOF |
250 | ||
665db063 | 251 | list_triggers_matches_ok "event-rule-matches, probe event rule" "${tmp_expected_stdout}" |
0de2479d | 252 | |
be7f9dfc FD |
253 | lttng_remove_trigger_ok "T0" |
254 | lttng_remove_trigger_ok "T1" | |
255 | lttng_remove_trigger_ok "T2" | |
0de2479d SM |
256 | } |
257 | ||
8dbb86b8 | 258 | test_event_rule_matches_userspace_probe_elf () |
0de2479d | 259 | { |
be7f9dfc FD |
260 | local elf_function_name="test_function" |
261 | ||
040a195f | 262 | diag "Listing event-rule-matches userspace-probe elf" |
0de2479d | 263 | |
46fd07ac | 264 | lttng_add_trigger_ok "T0" --condition event-rule-matches --domain=kernel --type=kernel:uprobe --location=${uprobe_elf_binary}:test_function --event-name=ma-probe-elf --action notify |
0de2479d SM |
265 | |
266 | cat > "${tmp_expected_stdout}" <<- EOF | |
1d4b59f2 | 267 | - name: T0 |
481c5310 | 268 | owner uid: ${uid} |
8c1d25ff | 269 | condition: event rule matches |
46fd07ac | 270 | rule: ma-probe-elf (type: kernel:uprobe, location type: ELF, location: ${uprobe_elf_binary}:${elf_function_name}) |
0de2479d SM |
271 | actions: |
272 | notify | |
709fb83f JG |
273 | errors: none |
274 | errors: none | |
0de2479d SM |
275 | EOF |
276 | ||
665db063 | 277 | list_triggers_matches_ok "event-rule-matches, userspace-probe event rule" "${tmp_expected_stdout}" |
0de2479d | 278 | |
be7f9dfc | 279 | lttng_remove_trigger_ok "T0" |
0de2479d SM |
280 | } |
281 | ||
8dbb86b8 | 282 | test_event_rule_matches_userspace_probe_sdt () |
8a917ae8 | 283 | { |
8a917ae8 FD |
284 | local sdt_provider_name="foobar" |
285 | local sdt_probe_name="tp1" | |
286 | ||
040a195f | 287 | diag "Listing event-rule-matches userspace-probe sdt" |
8a917ae8 | 288 | |
46fd07ac | 289 | lttng_add_trigger_ok "T0" --condition event-rule-matches --domain=kernel --type=kernel:uprobe --location=sdt:${uprobe_sdt_binary}:${sdt_provider_name}:${sdt_probe_name} --event-name=ma-probe-sdt --action notify |
8a917ae8 FD |
290 | |
291 | cat > "${tmp_expected_stdout}" <<- EOF | |
040a195f FD |
292 | - name: T0 |
293 | owner uid: 0 | |
8c1d25ff | 294 | condition: event rule matches |
46fd07ac | 295 | rule: ma-probe-sdt (type: kernel:uprobe, location type: SDT, location: ${uprobe_sdt_binary}:${sdt_provider_name}:${sdt_probe_name}) |
8a917ae8 FD |
296 | actions: |
297 | notify | |
298 | errors: none | |
299 | errors: none | |
300 | EOF | |
301 | ||
040a195f | 302 | list_triggers_matches_ok "event-rule-matches, userspace-probe event rule SDT" "${tmp_expected_stdout}" |
8a917ae8 FD |
303 | |
304 | lttng_remove_trigger_ok "T0" | |
305 | } | |
306 | ||
8dbb86b8 | 307 | test_event_rule_matches_syscall () |
0de2479d | 308 | { |
040a195f | 309 | diag "Listing event-rule-matches syscall" |
0de2479d | 310 | |
24de704e | 311 | lttng_add_trigger_ok "T0" --condition event-rule-matches --domain=kernel --type=syscall --name=open --action notify |
040a195f | 312 | lttng_add_trigger_ok "T1" --condition event-rule-matches --domain=kernel --type=syscall:entry --name=open --action notify |
57739a6b JR |
313 | lttng_add_trigger_ok "T2" --condition event-rule-matches --domain=kernel --type=syscall:exit --name=open --action notify |
314 | lttng_add_trigger_ok "T3" --condition event-rule-matches --domain=kernel --type=syscall:entry+exit --name=open --action notify | |
315 | lttng_add_trigger_ok "T4" --condition event-rule-matches --domain=kernel --type=syscall --name=ptrace --filter 'a > 2' --action notify | |
0de2479d SM |
316 | |
317 | cat > "${tmp_expected_stdout}" <<- EOF | |
1d4b59f2 | 318 | - name: T0 |
481c5310 | 319 | owner uid: ${uid} |
8c1d25ff | 320 | condition: event rule matches |
4f7da553 | 321 | rule: open (type: kernel:syscall:entry+exit) |
0de2479d SM |
322 | actions: |
323 | notify | |
709fb83f JG |
324 | errors: none |
325 | errors: none | |
1d4b59f2 | 326 | - name: T1 |
481c5310 | 327 | owner uid: ${uid} |
8c1d25ff | 328 | condition: event rule matches |
4f7da553 | 329 | rule: open (type: kernel:syscall:entry) |
57739a6b JR |
330 | actions: |
331 | notify | |
332 | errors: none | |
333 | errors: none | |
334 | - name: T2 | |
335 | owner uid: ${uid} | |
8c1d25ff | 336 | condition: event rule matches |
4f7da553 | 337 | rule: open (type: kernel:syscall:exit) |
57739a6b JR |
338 | actions: |
339 | notify | |
340 | errors: none | |
341 | errors: none | |
342 | - name: T3 | |
343 | owner uid: ${uid} | |
8c1d25ff | 344 | condition: event rule matches |
4f7da553 | 345 | rule: open (type: kernel:syscall:entry+exit) |
57739a6b JR |
346 | actions: |
347 | notify | |
348 | errors: none | |
349 | errors: none | |
350 | - name: T4 | |
351 | owner uid: ${uid} | |
8c1d25ff | 352 | condition: event rule matches |
4f7da553 | 353 | rule: ptrace (type: kernel:syscall:entry+exit, filter: a > 2) |
0de2479d SM |
354 | actions: |
355 | notify | |
709fb83f JG |
356 | errors: none |
357 | errors: none | |
0de2479d SM |
358 | EOF |
359 | ||
665db063 | 360 | list_triggers_matches_ok "event-rule-matches, syscall event rule" "${tmp_expected_stdout}" |
0de2479d | 361 | |
be7f9dfc FD |
362 | lttng_remove_trigger_ok "T0" |
363 | lttng_remove_trigger_ok "T1" | |
57739a6b JR |
364 | lttng_remove_trigger_ok "T2" |
365 | lttng_remove_trigger_ok "T3" | |
366 | lttng_remove_trigger_ok "T4" | |
0de2479d SM |
367 | } |
368 | ||
19904669 SM |
369 | test_session_consumed_size_condition () |
370 | { | |
371 | ${register_some_triggers_bin} test_session_consumed_size_condition | |
372 | ||
373 | cat > "${tmp_expected_stdout}" <<- EOF | |
374 | - name: trigger-with-session-consumed-size-condition | |
375 | owner uid: ${uid} | |
376 | condition: session consumed size | |
377 | session name: the-session-name | |
378 | threshold: 1234 bytes | |
379 | actions: | |
380 | notify | |
381 | errors: none | |
382 | errors: none | |
383 | EOF | |
384 | ||
385 | list_triggers_matches_ok "session consumed size condition" "${tmp_expected_stdout}" | |
386 | ||
387 | lttng_remove_trigger_ok "trigger-with-session-consumed-size-condition" | |
388 | } | |
389 | ||
390 | test_buffer_usage_conditions () | |
391 | { | |
392 | ${register_some_triggers_bin} test_buffer_usage_conditions | |
393 | ||
394 | cat > "${tmp_expected_stdout}" <<- EOF | |
395 | - name: trigger-with-buffer-usage-high-bytes-condition | |
396 | owner uid: ${uid} | |
397 | condition: buffer usage high | |
398 | session name: the-session-name | |
399 | channel name: the-channel-name | |
400 | domain: ust | |
401 | threshold (bytes): 1234 | |
402 | actions: | |
403 | notify | |
404 | errors: none | |
405 | errors: none | |
406 | - name: trigger-with-buffer-usage-high-ratio-condition | |
407 | owner uid: ${uid} | |
408 | condition: buffer usage high | |
409 | session name: the-session-name | |
410 | channel name: the-channel-name | |
411 | domain: ust | |
412 | threshold (ratio): 0.25 | |
413 | actions: | |
414 | notify | |
415 | errors: none | |
416 | errors: none | |
417 | - name: trigger-with-buffer-usage-low-bytes-condition | |
418 | owner uid: ${uid} | |
419 | condition: buffer usage low | |
420 | session name: the-session-name | |
421 | channel name: the-channel-name | |
422 | domain: ust | |
423 | threshold (bytes): 2345 | |
424 | actions: | |
425 | notify | |
426 | errors: none | |
427 | errors: none | |
428 | - name: trigger-with-buffer-usage-low-ratio-condition | |
429 | owner uid: ${uid} | |
430 | condition: buffer usage low | |
431 | session name: the-session-name | |
432 | channel name: the-channel-name | |
433 | domain: ust | |
434 | threshold (ratio): 0.40 | |
435 | actions: | |
436 | notify | |
437 | errors: none | |
438 | errors: none | |
439 | EOF | |
440 | ||
441 | list_triggers_matches_ok "buffer usage condition" "${tmp_expected_stdout}" | |
442 | ||
443 | lttng_remove_trigger_ok "trigger-with-buffer-usage-high-bytes-condition" | |
444 | lttng_remove_trigger_ok "trigger-with-buffer-usage-high-ratio-condition" | |
445 | lttng_remove_trigger_ok "trigger-with-buffer-usage-low-bytes-condition" | |
446 | lttng_remove_trigger_ok "trigger-with-buffer-usage-low-ratio-condition" | |
447 | } | |
448 | ||
449 | test_session_rotation_conditions () | |
450 | { | |
451 | ${register_some_triggers_bin} test_session_rotation_conditions | |
452 | ||
453 | cat > "${tmp_expected_stdout}" <<- EOF | |
454 | - name: trigger-with-session-rotation-completed-condition | |
455 | owner uid: ${uid} | |
456 | condition: session rotation completed | |
457 | session name: the-session-name | |
458 | actions: | |
459 | notify | |
460 | errors: none | |
461 | errors: none | |
462 | - name: trigger-with-session-rotation-ongoing-condition | |
463 | owner uid: ${uid} | |
464 | condition: session rotation ongoing | |
465 | session name: the-session-name | |
466 | actions: | |
467 | notify | |
468 | errors: none | |
469 | errors: none | |
470 | EOF | |
471 | ||
472 | list_triggers_matches_ok "session rotation conditions" "${tmp_expected_stdout}" | |
473 | ||
474 | lttng_remove_trigger_ok "trigger-with-session-rotation-completed-condition" | |
475 | lttng_remove_trigger_ok "trigger-with-session-rotation-ongoing-condition" | |
476 | } | |
477 | ||
0de2479d SM |
478 | test_snapshot_action () |
479 | { | |
be7f9dfc | 480 | diag "Listing snapshot actions" |
0de2479d | 481 | |
64c34630 SM |
482 | lttng_add_trigger_ok "T0" --condition event-rule-matches --domain=user --name=some-event --action snapshot-session ze-session |
483 | lttng_add_trigger_ok "T1" --condition event-rule-matches --domain=user --name=some-event --action snapshot-session ze-session --path /some/path | |
484 | lttng_add_trigger_ok "T2" --condition event-rule-matches --domain=user --name=some-event --action snapshot-session ze-session --url file:///some/other/path | |
485 | lttng_add_trigger_ok "T3" --condition event-rule-matches --domain=user --name=some-event --action snapshot-session ze-session --url net://1.2.3.4 | |
486 | lttng_add_trigger_ok "T4" --condition event-rule-matches --domain=user --name=some-event --action snapshot-session ze-session --url net://1.2.3.4:1234:1235 | |
487 | lttng_add_trigger_ok "T5" --condition event-rule-matches --domain=user --name=some-event --action snapshot-session ze-session --ctrl-url=tcp://1.2.3.4:1111 --data-url=tcp://1.2.3.4:1112 | |
488 | lttng_add_trigger_ok "T6" --condition event-rule-matches --domain=user --name=some-event --action snapshot-session ze-session --path /some/path --max-size=1234 | |
489 | lttng_add_trigger_ok "T7" --condition event-rule-matches --domain=user --name=some-event --action snapshot-session ze-session --path /some/path --name=meh | |
490 | lttng_add_trigger_ok "T8" --condition event-rule-matches --domain=user --name=some-event --action snapshot-session ze-session --rate-policy=every:10 | |
491 | lttng_add_trigger_ok "T9" --condition event-rule-matches --domain=user --name=some-event --action snapshot-session ze-session --rate-policy=once-after:10 | |
0de2479d SM |
492 | |
493 | cat > "${tmp_expected_stdout}" <<- EOF | |
1d4b59f2 | 494 | - name: T0 |
481c5310 | 495 | owner uid: ${uid} |
8c1d25ff | 496 | condition: event rule matches |
0de2479d SM |
497 | rule: some-event (type: tracepoint, domain: ust) |
498 | actions: | |
499 | snapshot session \`ze-session\` | |
709fb83f JG |
500 | errors: none |
501 | errors: none | |
1d4b59f2 | 502 | - name: T1 |
481c5310 | 503 | owner uid: ${uid} |
8c1d25ff | 504 | condition: event rule matches |
0de2479d SM |
505 | rule: some-event (type: tracepoint, domain: ust) |
506 | actions: | |
507 | snapshot session \`ze-session\`, path: /some/path | |
709fb83f JG |
508 | errors: none |
509 | errors: none | |
1d4b59f2 | 510 | - name: T2 |
481c5310 | 511 | owner uid: ${uid} |
8c1d25ff | 512 | condition: event rule matches |
0de2479d SM |
513 | rule: some-event (type: tracepoint, domain: ust) |
514 | actions: | |
515 | snapshot session \`ze-session\`, path: /some/other/path | |
709fb83f JG |
516 | errors: none |
517 | errors: none | |
1d4b59f2 | 518 | - name: T3 |
481c5310 | 519 | owner uid: ${uid} |
8c1d25ff | 520 | condition: event rule matches |
0de2479d SM |
521 | rule: some-event (type: tracepoint, domain: ust) |
522 | actions: | |
523 | snapshot session \`ze-session\`, url: net://1.2.3.4 | |
709fb83f JG |
524 | errors: none |
525 | errors: none | |
1d4b59f2 | 526 | - name: T4 |
481c5310 | 527 | owner uid: ${uid} |
8c1d25ff | 528 | condition: event rule matches |
0de2479d SM |
529 | rule: some-event (type: tracepoint, domain: ust) |
530 | actions: | |
531 | snapshot session \`ze-session\`, url: net://1.2.3.4:1234:1235 | |
709fb83f JG |
532 | errors: none |
533 | errors: none | |
1d4b59f2 | 534 | - name: T5 |
481c5310 | 535 | owner uid: ${uid} |
8c1d25ff | 536 | condition: event rule matches |
0de2479d SM |
537 | rule: some-event (type: tracepoint, domain: ust) |
538 | actions: | |
539 | snapshot session \`ze-session\`, control url: tcp://1.2.3.4:1111, data url: tcp://1.2.3.4:1112 | |
709fb83f JG |
540 | errors: none |
541 | errors: none | |
1d4b59f2 | 542 | - name: T6 |
481c5310 | 543 | owner uid: ${uid} |
8c1d25ff | 544 | condition: event rule matches |
0de2479d SM |
545 | rule: some-event (type: tracepoint, domain: ust) |
546 | actions: | |
547 | snapshot session \`ze-session\`, path: /some/path, max size: 1234 | |
709fb83f JG |
548 | errors: none |
549 | errors: none | |
1d4b59f2 | 550 | - name: T7 |
481c5310 | 551 | owner uid: ${uid} |
8c1d25ff | 552 | condition: event rule matches |
0de2479d SM |
553 | rule: some-event (type: tracepoint, domain: ust) |
554 | actions: | |
555 | snapshot session \`ze-session\`, path: /some/path, name: meh | |
709fb83f JG |
556 | errors: none |
557 | errors: none | |
1d4b59f2 | 558 | - name: T8 |
481c5310 | 559 | owner uid: ${uid} |
8c1d25ff | 560 | condition: event rule matches |
e45dd625 | 561 | rule: some-event (type: tracepoint, domain: ust) |
e45dd625 | 562 | actions: |
2f280aa0 | 563 | snapshot session \`ze-session\`, rate policy: every 10 occurrences |
709fb83f JG |
564 | errors: none |
565 | errors: none | |
1d4b59f2 | 566 | - name: T9 |
481c5310 | 567 | owner uid: ${uid} |
8c1d25ff | 568 | condition: event rule matches |
e45dd625 | 569 | rule: some-event (type: tracepoint, domain: ust) |
e45dd625 | 570 | actions: |
7f4d5b07 | 571 | snapshot session \`ze-session\`, rate policy: once after 10 occurrences |
709fb83f JG |
572 | errors: none |
573 | errors: none | |
e45dd625 JR |
574 | EOF |
575 | ||
be7f9dfc | 576 | list_triggers_matches_ok "snapshot action" "${tmp_expected_stdout}" |
e45dd625 | 577 | |
665db063 SM |
578 | lttng_remove_trigger_ok "T0" |
579 | lttng_remove_trigger_ok "T1" | |
580 | lttng_remove_trigger_ok "T2" | |
581 | lttng_remove_trigger_ok "T3" | |
582 | lttng_remove_trigger_ok "T4" | |
583 | lttng_remove_trigger_ok "T5" | |
584 | lttng_remove_trigger_ok "T6" | |
585 | lttng_remove_trigger_ok "T7" | |
586 | lttng_remove_trigger_ok "T8" | |
587 | lttng_remove_trigger_ok "T9" | |
e45dd625 JR |
588 | } |
589 | ||
590 | test_notify_action () | |
591 | { | |
64c34630 SM |
592 | lttng_add_trigger_ok "T0" --condition event-rule-matches --domain=user --name=some-event --action notify --rate-policy=once-after:5 |
593 | lttng_add_trigger_ok "T1" --condition event-rule-matches --domain=user --name=some-event --action notify --rate-policy=every:10 | |
e45dd625 JR |
594 | |
595 | cat > "${tmp_expected_stdout}" <<- EOF | |
1d4b59f2 | 596 | - name: T0 |
481c5310 | 597 | owner uid: ${uid} |
8c1d25ff | 598 | condition: event rule matches |
e45dd625 | 599 | rule: some-event (type: tracepoint, domain: ust) |
e45dd625 | 600 | actions: |
7f4d5b07 | 601 | notify, rate policy: once after 5 occurrences |
709fb83f JG |
602 | errors: none |
603 | errors: none | |
1d4b59f2 | 604 | - name: T1 |
481c5310 | 605 | owner uid: ${uid} |
8c1d25ff | 606 | condition: event rule matches |
e45dd625 | 607 | rule: some-event (type: tracepoint, domain: ust) |
e45dd625 | 608 | actions: |
2f280aa0 | 609 | notify, rate policy: every 10 occurrences |
709fb83f JG |
610 | errors: none |
611 | errors: none | |
0de2479d SM |
612 | EOF |
613 | ||
19904669 | 614 | list_triggers_matches_ok "notify action" "${tmp_expected_stdout}" |
0de2479d | 615 | |
be7f9dfc FD |
616 | lttng_remove_trigger_ok "T0" |
617 | lttng_remove_trigger_ok "T1" | |
0de2479d SM |
618 | } |
619 | ||
be7f9dfc FD |
620 | plan_tests $NUM_TESTS |
621 | ||
622 | # shellcheck disable=SC2119 | |
623 | start_lttng_sessiond_notap | |
624 | ||
0de2479d | 625 | test_top_level_options |
8dbb86b8 JR |
626 | test_event_rule_matches_tracepoint |
627 | skip $ist_root "non-root user: skipping kprobe tests" 9 || test_event_rule_matches_probe | |
628 | skip $ist_root "non-root user: skipping uprobe tests" 5 || test_event_rule_matches_userspace_probe_elf | |
629 | skip $(($ist_root && $hast_sdt_binary)) "skipping userspace probe SDT tests" 5 || test_event_rule_matches_userspace_probe_sdt | |
630 | skip $ist_root "non-root user: skipping syscall tests" 13 || test_event_rule_matches_syscall | |
19904669 SM |
631 | test_session_consumed_size_condition |
632 | test_buffer_usage_conditions | |
633 | test_session_rotation_conditions | |
0de2479d | 634 | test_snapshot_action |
e45dd625 | 635 | test_notify_action |
0de2479d | 636 | |
be7f9dfc FD |
637 | stop_lttng_sessiond_notap |
638 | ||
0de2479d SM |
639 | # Cleanup |
640 | rm -f "${tmp_stdout}" | |
641 | rm -f "${tmp_stderr}" | |
642 | rm -f "${tmp_expected_stdout}" |