Tests: accept built-in kernel modules
[lttng-tools.git] / tests / utils / utils.sh
CommitLineData
9d16b343 1# Copyright (C) 2012 David Goulet <dgoulet@efficios.com>
d3e8f6bb 2#
9d16b343 3# SPDX-License-Identifier: LGPL-2.1-only
d3e8f6bb 4#
d3e8f6bb
DG
5
6SESSIOND_BIN="lttng-sessiond"
725f658e 7SESSIOND_MATCH=".*lttng-sess.*"
19356f3a 8RUNAS_BIN="lttng-runas"
725f658e 9RUNAS_MATCH=".*lttng-runas.*"
f7613992 10CONSUMERD_BIN="lttng-consumerd"
725f658e 11CONSUMERD_MATCH=".*lttng-consumerd.*"
f4e40ab6 12RELAYD_BIN="lttng-relayd"
725f658e 13RELAYD_MATCH=".*lttng-relayd.*"
d3e8f6bb
DG
14LTTNG_BIN="lttng"
15BABELTRACE_BIN="babeltrace"
2cf48300
JR
16OUTPUT_DEST=/dev/null
17ERROR_OUTPUT_DEST=/dev/null
d3e8f6bb 18
fd4dfcec
DG
19# Minimal kernel version supported for session daemon tests
20KERNEL_MAJOR_VERSION=2
21KERNEL_MINOR_VERSION=6
22KERNEL_PATCHLEVEL_VERSION=27
23
651b8bb3
JG
24# We set the default UST register timeout and network and app socket timeout to
25# "wait forever", so that basic tests don't have to worry about hitting
26# timeouts on busy systems. Specialized tests should test those corner-cases.
629b9335 27export LTTNG_UST_REGISTER_TIMEOUT=-1
651b8bb3
JG
28export LTTNG_NETWORK_SOCKET_TIMEOUT=-1
29export LTTNG_APP_SOCKET_TIMEOUT=-1
629b9335 30
fd7fe1a8
JR
31# We set the default lttng-sessiond path to /bin/true to prevent the spawning
32# of a daemonized sessiond. This is necessary since 'lttng create' will spawn
33# its own sessiond if none is running. It also ensures that 'lttng create'
34# fails when no sessiond is running.
35export LTTNG_SESSIOND_PATH="/bin/true"
36
29655db7
CB
37source $TESTDIR/utils/tap/tap.sh
38
65e663fa 39if [ -z ${LTTNG_TEST_TEARDOWN_TIMEOUT+x} ]; then
529bb942
MD
40 LTTNG_TEST_TEARDOWN_TIMEOUT=60
41fi
42
1c362dc7
JR
43function full_cleanup ()
44{
529bb942
MD
45 # Try to kill daemons gracefully
46 stop_lttng_relayd_notap SIGTERM $LTTNG_TEST_TEARDOWN_TIMEOUT
47 stop_lttng_sessiond_notap SIGTERM $LTTNG_TEST_TEARDOWN_TIMEOUT
48
49 # If daemons are still present, forcibly kill them
50 stop_lttng_relayd_notap SIGKILL $LTTNG_TEST_TEARDOWN_TIMEOUT
51 stop_lttng_sessiond_notap SIGKILL $LTTNG_TEST_TEARDOWN_TIMEOUT
52 stop_lttng_consumerd_notap SIGKILL $LTTNG_TEST_TEARDOWN_TIMEOUT
1c362dc7
JR
53
54 # Disable trap for SIGTERM since the following kill to the
55 # pidgroup will be SIGTERM. Otherwise it loops.
56 # The '-' before the pid number ($$) indicates 'kill' to signal the
57 # whole process group.
58 trap - SIGTERM && kill -- -$$
4e8ea4fa 59 exit 1
1c362dc7
JR
60}
61
27b667f7
MD
62function null_pipes ()
63{
64 exec 0>/dev/null
65 exec 1>/dev/null
66 exec 2>/dev/null
67}
1c362dc7
JR
68
69trap full_cleanup SIGINT SIGTERM
70
27b667f7
MD
71# perl prove closes its child pipes before giving it a chance to run its
72# signal trap handlers. Redirect pipes to /dev/null if SIGPIPE is caught
73# to allow those trap handlers to proceed.
74
75trap null_pipes SIGPIPE
76
fec81a7e
CB
77function print_ok ()
78{
79 # Check if we are a terminal
80 if [ -t 1 ]; then
81 echo -e "\e[1;32mOK\e[0m"
82 else
83 echo -e "OK"
84 fi
85}
86
87function print_fail ()
88{
89 # Check if we are a terminal
90 if [ -t 1 ]; then
91 echo -e "\e[1;31mFAIL\e[0m"
92 else
93 echo -e "FAIL"
94 fi
95}
96
97function print_test_banner ()
98{
7d0ad314 99 local desc="$1"
29655db7 100 diag "$desc"
fec81a7e
CB
101}
102
fd4dfcec
DG
103function validate_kernel_version ()
104{
7d0ad314 105 local kern_version=($(uname -r | awk -F. '{ printf("%d.%d.%d\n",$1,$2,$3); }' | tr '.' '\n'))
fd4dfcec
DG
106 if [ ${kern_version[0]} -gt $KERNEL_MAJOR_VERSION ]; then
107 return 0
108 fi
109 if [ ${kern_version[1]} -gt $KERNEL_MINOR_VERSION ]; then
110 return 0
111 fi
112 if [ ${kern_version[2]} -ge $KERNEL_PATCHLEVEL_VERSION ]; then
113 return 0
114 fi
115 return 1
116}
117
9ac429ef 118# Generate a random string
f4e40ab6
DG
119# $1 = number of characters; defaults to 16
120# $2 = include special characters; 1 = yes, 0 = no; defaults to yes
9ac429ef 121function randstring()
f4e40ab6
DG
122{
123 [ "$2" == "0" ] && CHAR="[:alnum:]" || CHAR="[:graph:]"
b89c3a68 124 cat /dev/urandom 2>/dev/null | tr -cd "$CHAR" 2>/dev/null | head -c ${1:-16} 2>/dev/null
f4e40ab6
DG
125 echo
126}
127
9e136324
JG
128# Return the number of _configured_ CPUs.
129function conf_proc_count()
130{
131 getconf _NPROCESSORS_CONF
132 if [ $? -ne 0 ]; then
133 diag "Failed to get the number of configured CPUs"
134 fi
135 echo
136}
137
9c8a3964
JR
138# Check if base lttng-modules are present.
139# Bail out on failure
140function validate_lttng_modules_present ()
141{
03f11686 142 # Check for loadable modules.
9c8a3964 143 modprobe -n lttng-tracer 2>/dev/null
03f11686
FD
144 if [ $? -eq 0 ]; then
145 return 0
9c8a3964 146 fi
03f11686
FD
147
148 # Check for builtin modules.
149 ls /proc/lttng > /dev/null 2>&1
150 if [ $? -eq 0 ]; then
151 return 0
152 fi
153
154 BAIL_OUT "LTTng modules not detected."
9c8a3964
JR
155}
156
4a180d9f 157function enable_kernel_lttng_event
f4e40ab6 158{
854382b8
JR
159 local withtap="$1"
160 local expected_to_fail="$2"
161 local sess_name="$3"
162 local event_name="$4"
163 local channel_name="$5"
f4e40ab6 164
4a180d9f 165 if [ -z "$event_name" ]; then
f4e40ab6 166 # Enable all event if no event name specified
29655db7 167 event_name="-a"
f4e40ab6
DG
168 fi
169
4a180d9f 170 if [ -z "$channel_name" ]; then
07b86b52
JD
171 # default channel if none specified
172 chan=""
173 else
174 chan="-c $channel_name"
175 fi
176
2cf48300 177 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" $chan -s $sess_name -k 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
4a180d9f
MD
178 ret=$?
179 if [[ $expected_to_fail -eq "1" ]]; then
180 test $ret -ne "0"
854382b8
JR
181 ret=$?
182 if [ $withtap -eq "1" ]; then
183 ok $ret "Enable kernel event $event_name for session $session_name on channel $channel_name failed as expected"
184 fi
4a180d9f 185 else
854382b8
JR
186 if [ $withtap -eq "1" ]; then
187 ok $ret "Enable kernel event $event_name for session $sess_name"
188 fi
4a180d9f
MD
189 fi
190}
191
192function enable_kernel_lttng_event_ok ()
193{
854382b8 194 enable_kernel_lttng_event 1 0 "$@"
4a180d9f
MD
195}
196
197function enable_kernel_lttng_event_fail ()
198{
854382b8
JR
199 enable_kernel_lttng_event 1 1 "$@"
200}
201
202function enable_kernel_lttng_event_notap ()
203{
204 enable_kernel_lttng_event 0 0 "$@"
4a180d9f
MD
205}
206
207# Old interface
208function lttng_enable_kernel_event
209{
210 enable_kernel_lttng_event_ok "$@"
f4e40ab6
DG
211}
212
8cfcd41c
MD
213function lttng_enable_kernel_syscall()
214{
215 local expected_to_fail=$1
216 local sess_name=$2
217 local syscall_name=$3
218 local channel_name=$4
219
220 if [ -z $syscall_name ]; then
221 # Enable all event if no syscall name specified
222 syscall_name="-a"
223 fi
224
225 if [ -z $channel_name ]; then
226 # default channel if none specified
227 chan=""
228 else
229 chan="-c $channel_name"
230 fi
231
2cf48300 232 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event --syscall "$syscall_name" $chan -s $sess_name -k 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
8cfcd41c
MD
233 ret=$?
234 if [[ $expected_to_fail -eq "1" ]]; then
235 test $ret -ne "0"
236 ok $? "Enable kernel syscall $syscall_name for session $sess_name on channel $channel_name fail as expected"
237 else
238 ok $ret "Enable kernel syscall $syscall_name for session $sess_name on channel $channel_name"
239 fi
240}
241
242function lttng_enable_kernel_syscall_ok()
243{
421b83dc 244 lttng_enable_kernel_syscall 0 "$@"
8cfcd41c
MD
245}
246
247function lttng_enable_kernel_syscall_fail()
248{
421b83dc 249 lttng_enable_kernel_syscall 1 "$@"
8cfcd41c
MD
250}
251
252function lttng_disable_kernel_syscall()
253{
254 local expected_to_fail=$1
255 local sess_name=$2
256 local syscall_name=$3
257 local channel_name=$4
258
259 if [ -z $syscall_name ]; then
260 # Enable all event if no syscall name specified
261 syscall_name="-a"
262 fi
263
264 if [ -z $channel_name ]; then
265 # default channel if none specified
266 chan=""
267 else
268 chan="-c $channel_name"
269 fi
270
2cf48300 271 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-event --syscall "$syscall_name" $chan -s $sess_name -k 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
8cfcd41c
MD
272
273 ret=$?
274 if [[ $expected_to_fail -eq "1" ]]; then
275 test $ret -ne "0"
34ab15c5 276 ok $? "Disable kernel syscall $syscall_name for session $sess_name on channel $channel_name failed as expected"
8cfcd41c
MD
277 else
278 ok $ret "Disable kernel syscall $syscall_name for session $sess_name on channel $channel_name"
279 fi
280}
281
282function lttng_disable_kernel_syscall_ok()
283{
421b83dc 284 lttng_disable_kernel_syscall 0 "$@"
8cfcd41c
MD
285}
286
287function lttng_disable_kernel_syscall_fail()
288{
421b83dc 289 lttng_disable_kernel_syscall 1 "$@"
8cfcd41c
MD
290}
291
a9c2df2b
FD
292function lttng_enable_kernel_userspace_probe_event ()
293{
294 local expected_to_fail="$1"
295 local sess_name="$2"
296 local target="$3"
297 local event_name="$4"
298
299 "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" enable-event --kernel --userspace-probe="$target" "$event_name" -s "$sess_name" > "$OUTPUT_DEST" 2> "$ERROR_OUTPUT_DEST"
300 ret=$?
301 if [[ $expected_to_fail -eq "1" ]]; then
302 test $ret -ne "0"
303 ok $? "Enable kernel userspace probe event for session $sess_name failed as expected"
304 else
305 ok $ret "Enable kernel userspace probe event for session $sess_name"
306 fi
307}
308
309function lttng_enable_kernel_userspace_probe_event_fail ()
310{
311 lttng_enable_kernel_userspace_probe_event 1 "$@"
312}
313
314function lttng_enable_kernel_userspace_probe_event_ok ()
315{
316 lttng_enable_kernel_userspace_probe_event 0 "$@"
317}
318
319function disable_kernel_lttng_userspace_probe_event_ok ()
320{
321 local sess_name="$1"
322 local event_name="$2"
323
324 "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" disable-event --kernel "$event_name" -s "$sess_name" > "$OUTPUT_DEST" 2> "$ERROR_OUTPUT_DEST"
325 ok $? "Disable kernel event $target for session $sess_name"
326}
d96f6315
MD
327function lttng_enable_kernel_channel()
328{
854382b8
JR
329 local withtap=$1
330 local expected_to_fail=$2
331 local sess_name=$3
332 local channel_name=$4
c28fcefd 333 local opts="${@:5}"
d96f6315 334
c28fcefd 335 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel -k $channel_name -s $sess_name $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
d96f6315
MD
336 ret=$?
337 if [[ $expected_to_fail -eq "1" ]]; then
338 test "$ret" -ne "0"
854382b8
JR
339 ret=$?
340 if [ $withtap -eq "1" ]; then
341 ok $ret "Enable channel $channel_name for session $sess_name failed as expected"
342 fi
d96f6315 343 else
854382b8
JR
344 if [ $withtap -eq "1" ]; then
345 ok $ret "Enable channel $channel_name for session $sess_name"
346 fi
d96f6315
MD
347 fi
348}
349
350function lttng_enable_kernel_channel_ok()
351{
854382b8 352 lttng_enable_kernel_channel 1 0 "$@"
d96f6315
MD
353}
354
355function lttng_enable_kernel_channel_fail()
356{
854382b8
JR
357 lttng_enable_kernel_channel 1 1 "$@"
358}
359
360function lttng_enable_kernel_channel_notap()
361{
362 lttng_enable_kernel_channel 0 0 "$@"
363}
364
365function enable_kernel_lttng_channel_ok()
366{
367 lttng_enable_kernel_channel 1 0 "$@"
d96f6315
MD
368}
369
370function lttng_disable_kernel_channel()
371{
372 local expected_to_fail=$1
373 local sess_name=$2
374 local channel_name=$3
375
2cf48300 376 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-channel -k $channel_name -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
d96f6315
MD
377 ret=$?
378 if [[ $expected_to_fail -eq "1" ]]; then
379 test "$ret" -ne "0"
34ab15c5 380 ok $? "Disable channel $channel_name for session $sess_name failed as expected"
d96f6315 381 else
34ab15c5 382 ok $ret "Disable channel $channel_name for session $sess_name"
d96f6315
MD
383 fi
384}
385
386function lttng_disable_kernel_channel_ok()
387{
421b83dc 388 lttng_disable_kernel_channel 0 "$@"
d96f6315
MD
389}
390
391function lttng_disable_kernel_channel_fail()
392{
421b83dc 393 lttng_disable_kernel_channel 1 "$@"
d96f6315
MD
394}
395
05aa48da 396function start_lttng_relayd_opt()
f4e40ab6 397{
05aa48da 398 local withtap=$1
f3630ec4
JR
399 local process_mode=$2
400 local opt=$3
173af62f 401
529bb942 402 DIR=$(readlink -f "$TESTDIR")
f4e40ab6 403
f3630ec4 404 if [ -z $(pgrep $RELAYD_MATCH) ]; then
529bb942 405 # shellcheck disable=SC2086
f3630ec4
JR
406 $DIR/../src/bin/lttng-relayd/$RELAYD_BIN $process_mode $opt 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
407 #$DIR/../src/bin/lttng-relayd/$RELAYD_BIN $opt -vvv >>/tmp/relayd.log 2>&1 &
f4e40ab6 408 if [ $? -eq 1 ]; then
f3630ec4
JR
409 if [ $withtap -eq "1" ]; then
410 fail "Start lttng-relayd (process mode: $process_mode opt: $opt)"
05aa48da 411 fi
f4e40ab6
DG
412 return 1
413 else
f3630ec4
JR
414 if [ $withtap -eq "1" ]; then
415 pass "Start lttng-relayd (process mode: $process_mode opt: $opt)"
05aa48da 416 fi
f4e40ab6
DG
417 fi
418 else
29655db7 419 pass "Start lttng-relayd (opt: $opt)"
f4e40ab6
DG
420 fi
421}
422
05aa48da 423function start_lttng_relayd()
f4e40ab6 424{
f3630ec4 425 start_lttng_relayd_opt 1 "-b" "$@"
05aa48da
MD
426}
427
428function start_lttng_relayd_notap()
429{
f3630ec4 430 start_lttng_relayd_opt 0 "-b" "$@"
05aa48da
MD
431}
432
433function stop_lttng_relayd_opt()
434{
435 local withtap=$1
529bb942 436 local signal=$2
05aa48da 437
529bb942
MD
438 if [ -z "$signal" ]; then
439 signal="SIGTERM"
05aa48da 440 fi
29655db7 441
529bb942
MD
442 local timeout_s=$3
443 local dtimeleft_s=
444
445 # Multiply time by 2 to simplify integer arithmetic
446 if [ -n "$timeout_s" ]; then
447 dtimeleft_s=$((timeout_s * 2))
448 fi
449
450 local retval=0
451 local pids=
452
453 pids=$(pgrep "$RELAYD_MATCH")
454 if [ -z "$pids" ]; then
455 if [ "$withtap" -eq "1" ]; then
456 pass "No relay daemon to kill"
457 fi
458 return 0
459 fi
460
461 diag "Killing (signal $signal) lttng-relayd (pid: $pids)"
462
463 # shellcheck disable=SC2086
464 if ! kill -s $signal $pids 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST; then
465 retval=1
466 if [ "$withtap" -eq "1" ]; then
05aa48da
MD
467 fail "Kill relay daemon"
468 fi
05aa48da 469 else
f4e40ab6
DG
470 out=1
471 while [ -n "$out" ]; do
529bb942
MD
472 out=$(pgrep "$RELAYD_MATCH")
473 if [ -n "$dtimeleft_s" ]; then
474 if [ $dtimeleft_s -lt 0 ]; then
475 out=
476 retval=1
477 fi
478 dtimeleft_s=$((dtimeleft_s - 1))
479 fi
f4e40ab6
DG
480 sleep 0.5
481 done
529bb942
MD
482 if [ "$withtap" -eq "1" ]; then
483 if [ "$retval" -eq "0" ]; then
484 pass "Wait after kill relay daemon"
485 else
486 fail "Wait after kill relay daemon"
487 fi
05aa48da 488 fi
1fb23888
MD
489 fi
490 return $retval
491}
492
05aa48da 493function stop_lttng_relayd()
1fb23888 494{
05aa48da
MD
495 stop_lttng_relayd_opt 1 "$@"
496}
1fb23888 497
05aa48da
MD
498function stop_lttng_relayd_notap()
499{
500 stop_lttng_relayd_opt 0 "$@"
f4e40ab6
DG
501}
502
05aa48da
MD
503#First arg: show tap output
504#Second argument: load path for automatic loading
505function start_lttng_sessiond_opt()
355f483d 506{
05aa48da
MD
507 local withtap=$1
508 local load_path=$2
8d51ddbc 509
4b01971f 510 local env_vars=""
b916da6b 511 local consumerd=""
b916da6b 512
529bb942
MD
513 local long_bit_value=
514 long_bit_value=$(getconf LONG_BIT)
515
516 if [ -n "$TEST_NO_SESSIOND" ] && [ "$TEST_NO_SESSIOND" == "1" ]; then
355f483d
DG
517 # Env variable requested no session daemon
518 return
519 fi
520
529bb942 521 DIR=$(readlink -f "$TESTDIR")
b916da6b
JR
522
523 # Get long_bit value for 32/64 consumerd
524 case "$long_bit_value" in
525 32)
526 consumerd="--consumerd32-path=$DIR/../src/bin/lttng-consumerd/lttng-consumerd"
527 ;;
528 64)
529 consumerd="--consumerd64-path=$DIR/../src/bin/lttng-consumerd/lttng-consumerd"
530 ;;
531 *)
532 return
533 ;;
534 esac
535
4b01971f
JR
536 # Check for env. variable. Allow the use of LD_PRELOAD etc.
537 if [[ "x${LTTNG_SESSIOND_ENV_VARS}" != "x" ]]; then
529bb942 538 env_vars="${LTTNG_SESSIOND_ENV_VARS} "
4b01971f 539 fi
529bb942 540 env_vars="${env_vars}$DIR/../src/bin/lttng-sessiond/$SESSIOND_BIN"
4b01971f 541
529bb942 542 if ! validate_kernel_version; then
29655db7
CB
543 fail "Start session daemon"
544 BAIL_OUT "*** Kernel too old for session daemon tests ***"
355f483d
DG
545 fi
546
529bb942 547 : "${LTTNG_SESSION_CONFIG_XSD_PATH="${DIR}/../src/common/config/"}"
d3d97763 548 export LTTNG_SESSION_CONFIG_XSD_PATH
29655db7 549
529bb942 550 if [ -z "$(pgrep "${SESSIOND_MATCH}")" ]; then
8d51ddbc 551 # Have a load path ?
05aa48da 552 if [ -n "$load_path" ]; then
529bb942
MD
553 # shellcheck disable=SC2086
554 env $env_vars --load "$load_path" --background "$consumerd"
8d51ddbc 555 else
529bb942
MD
556 # shellcheck disable=SC2086
557 env $env_vars --background "$consumerd"
8d51ddbc 558 fi
0fc2834c 559 #$DIR/../src/bin/lttng-sessiond/$SESSIOND_BIN --background --consumerd32-path="$DIR/../src/bin/lttng-consumerd/lttng-consumerd" --consumerd64-path="$DIR/../src/bin/lttng-consumerd/lttng-consumerd" --verbose-consumer >>/tmp/sessiond.log 2>&1
29655db7 560 status=$?
529bb942 561 if [ "$withtap" -eq "1" ]; then
05aa48da
MD
562 ok $status "Start session daemon"
563 fi
29655db7 564 fi
355f483d
DG
565}
566
05aa48da
MD
567function start_lttng_sessiond()
568{
569 start_lttng_sessiond_opt 1 "$@"
570}
571
572function start_lttng_sessiond_notap()
d3e8f6bb 573{
05aa48da
MD
574 start_lttng_sessiond_opt 0 "$@"
575}
576
577function stop_lttng_sessiond_opt()
578{
579 local withtap=$1
4c80129b 580 local signal=$2
05aa48da 581
529bb942
MD
582 if [ -z "$signal" ]; then
583 signal=SIGTERM
584 fi
585
586 local timeout_s=$3
587 local dtimeleft_s=
588
589 # Multiply time by 2 to simplify integer arithmetic
590 if [ -n "$timeout_s" ]; then
591 dtimeleft_s=$((timeout_s * 2))
592 fi
593
594 if [ -n "$TEST_NO_SESSIOND" ] && [ "$TEST_NO_SESSIOND" == "1" ]; then
355f483d 595 # Env variable requested no session daemon
529bb942 596 return 0
355f483d
DG
597 fi
598
529bb942 599 local retval=0
d3e8f6bb 600
529bb942
MD
601 local runas_pids=
602 runas_pids=$(pgrep "$RUNAS_MATCH")
603
604 local pids=
605 pids=$(pgrep "$SESSIOND_MATCH")
606
607 if [ -n "$runas_pids" ]; then
608 pids="$pids $runas_pids"
4c80129b 609 fi
529bb942
MD
610
611 if [ -z "$pids" ]; then
612 if [ "$withtap" -eq "1" ]; then
613 pass "No session daemon to kill"
614 fi
615 return 0
8490897a 616 fi
29655db7 617
529bb942
MD
618 diag "Killing (signal $signal) $SESSIOND_BIN and lt-$SESSIOND_BIN pids: $(echo "$pids" | tr '\n' ' ')"
619
620 # shellcheck disable=SC2086
621 if ! kill -s $signal $pids 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST; then
622 retval=1
623 if [ "$withtap" -eq "1" ]; then
05aa48da
MD
624 fail "Kill sessions daemon"
625 fi
d3e8f6bb 626 else
5fa32580
DG
627 out=1
628 while [ -n "$out" ]; do
529bb942
MD
629 out=$(pgrep "${SESSIOND_MATCH}")
630 if [ -n "$dtimeleft_s" ]; then
631 if [ $dtimeleft_s -lt 0 ]; then
632 out=
633 retval=1
634 fi
635 dtimeleft_s=$((dtimeleft_s - 1))
636 fi
5fa32580
DG
637 sleep 0.5
638 done
f7613992
MD
639 out=1
640 while [ -n "$out" ]; do
529bb942
MD
641 out=$(pgrep "$CONSUMERD_MATCH")
642 if [ -n "$dtimeleft_s" ]; then
643 if [ $dtimeleft_s -lt 0 ]; then
644 out=
645 retval=1
646 fi
647 dtimeleft_s=$((dtimeleft_s - 1))
648 fi
f7613992
MD
649 sleep 0.5
650 done
1c362dc7 651
529bb942
MD
652 if [ "$withtap" -eq "1" ]; then
653 if [ "$retval" -eq "0" ]; then
654 pass "Wait after kill session daemon"
655 else
656 fail "Wait after kill session daemon"
657 fi
05aa48da 658 fi
d3e8f6bb 659 fi
529bb942
MD
660 if [ "$signal" = "SIGKILL" ]; then
661 if [ "$(id -u)" -eq "0" ]; then
662 local modules=
663 modules="$(lsmod | grep ^lttng | awk '{print $1}')"
664
665 if [ -n "$modules" ]; then
666 diag "Unloading all LTTng modules"
667 modprobe -r "$modules"
668 fi
669 fi
670 fi
671
672 return $retval
d3e8f6bb
DG
673}
674
05aa48da
MD
675function stop_lttng_sessiond()
676{
677 stop_lttng_sessiond_opt 1 "$@"
678}
679
680function stop_lttng_sessiond_notap()
681{
682 stop_lttng_sessiond_opt 0 "$@"
683}
684
8490897a
MD
685function sigstop_lttng_sessiond_opt()
686{
687 local withtap=$1
688 local signal=SIGSTOP
8490897a 689
529bb942 690 if [ -n "$TEST_NO_SESSIOND" ] && [ "$TEST_NO_SESSIOND" == "1" ]; then
8490897a
MD
691 # Env variable requested no session daemon
692 return
693 fi
694
529bb942 695 PID_SESSIOND="$(pgrep "${SESSIOND_MATCH}") $(pgrep "$RUNAS_MATCH")"
8490897a 696
529bb942
MD
697 if [ "$withtap" -eq "1" ]; then
698 diag "Sending SIGSTOP to lt-$SESSIOND_BIN and $SESSIOND_BIN pids: $(echo "$PID_SESSIOND" | tr '\n' ' ')"
8490897a 699 fi
8490897a 700
529bb942
MD
701 # shellcheck disable=SC2086
702 if ! kill -s $signal $PID_SESSIOND 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST; then
703 if [ "$withtap" -eq "1" ]; then
8490897a
MD
704 fail "Sending SIGSTOP to session daemon"
705 fi
706 else
707 out=1
708 while [ $out -ne 0 ]; do
529bb942 709 pid="$(pgrep "$SESSIOND_MATCH")"
8490897a
MD
710
711 # Wait until state becomes stopped for session
712 # daemon(s).
713 out=0
714 for sessiond_pid in $pid; do
529bb942 715 state="$(ps -p "$sessiond_pid" -o state= )"
8490897a
MD
716 if [[ -n "$state" && "$state" != "T" ]]; then
717 out=1
718 fi
719 done
720 sleep 0.5
721 done
529bb942 722 if [ "$withtap" -eq "1" ]; then
8490897a
MD
723 pass "Sending SIGSTOP to session daemon"
724 fi
725 fi
726}
727
728function sigstop_lttng_sessiond()
729{
730 sigstop_lttng_sessiond_opt 1 "$@"
731}
732
733function sigstop_lttng_sessiond_notap()
734{
735 sigstop_lttng_sessiond_opt 0 "$@"
736}
737
4c80129b
JR
738function stop_lttng_consumerd_opt()
739{
740 local withtap=$1
741 local signal=$2
4c80129b 742
529bb942
MD
743 if [ -z "$signal" ]; then
744 signal=SIGTERM
745 fi
746
747 local timeout_s=$3
748 local dtimeleft_s=
4c80129b 749
529bb942
MD
750 # Multiply time by 2 to simplify integer arithmetic
751 if [ -n "$timeout_s" ]; then
752 dtimeleft_s=$((timeout_s * 2))
4c80129b
JR
753 fi
754
529bb942
MD
755 local retval=0
756
757 PID_CONSUMERD="$(pgrep "$CONSUMERD_MATCH")"
758
759 if [ -z "$PID_CONSUMERD" ]; then
760 if [ "$withtap" -eq "1" ]; then
761 pass "No consumer daemon to kill"
762 fi
763 return 0
4c80129b 764 fi
3355fd4d 765
529bb942 766 diag "Killing (signal $signal) $CONSUMERD_BIN pids: $(echo "$PID_CONSUMERD" | tr '\n' ' ')"
4c80129b 767
529bb942
MD
768 # shellcheck disable=SC2086
769 if ! kill -s $signal $PID_CONSUMERD 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST; then
770 retval=1
771 if [ "$withtap" -eq "1" ]; then
4c80129b
JR
772 fail "Kill consumer daemon"
773 fi
4c80129b
JR
774 else
775 out=1
776 while [ $out -ne 0 ]; do
529bb942 777 pid="$(pgrep "$CONSUMERD_MATCH")"
4c80129b
JR
778
779 # If consumerds are still present check their status.
780 # A zombie status qualifies the consumerd as *killed*
781 out=0
782 for consumer_pid in $pid; do
529bb942 783 state="$(ps -p "$consumer_pid" -o state= )"
4c80129b
JR
784 if [[ -n "$state" && "$state" != "Z" ]]; then
785 out=1
786 fi
787 done
529bb942
MD
788 if [ -n "$dtimeleft_s" ]; then
789 if [ $dtimeleft_s -lt 0 ]; then
790 out=0
791 retval=1
792 fi
793 dtimeleft_s=$((dtimeleft_s - 1))
794 fi
4c80129b
JR
795 sleep 0.5
796 done
529bb942
MD
797 if [ "$withtap" -eq "1" ]; then
798 if [ "$retval" -eq "0" ]; then
799 pass "Wait after kill consumer daemon"
800 else
801 fail "Wait after kill consumer daemon"
802 fi
4c80129b
JR
803 fi
804 fi
529bb942 805
4c80129b
JR
806 return $retval
807}
808
809function stop_lttng_consumerd()
810{
811 stop_lttng_consumerd_opt 1 "$@"
812}
813
814function stop_lttng_consumerd_notap()
815{
816 stop_lttng_consumerd_opt 0 "$@"
817}
818
8490897a
MD
819function sigstop_lttng_consumerd_opt()
820{
821 local withtap=$1
822 local signal=SIGSTOP
8490897a 823
529bb942 824 PID_CONSUMERD="$(pgrep "$CONSUMERD_MATCH")"
8490897a 825
529bb942 826 diag "Sending SIGSTOP to $CONSUMERD_BIN pids: $(echo "$PID_CONSUMERD" | tr '\n' ' ')"
8490897a 827
529bb942
MD
828 # shellcheck disable=SC2086
829 kill -s $signal $PID_CONSUMERD 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
8490897a 830 retval=$?
8490897a 831
529bb942
MD
832 if [ $retval -eq 1 ]; then
833 if [ "$withtap" -eq "1" ]; then
8490897a
MD
834 fail "Sending SIGSTOP to consumer daemon"
835 fi
836 return 1
837 else
838 out=1
839 while [ $out -ne 0 ]; do
529bb942 840 pid="$(pgrep "$CONSUMERD_MATCH")"
8490897a
MD
841
842 # Wait until state becomes stopped for all
843 # consumers.
844 out=0
845 for consumer_pid in $pid; do
529bb942 846 state="$(ps -p "$consumer_pid" -o state= )"
8490897a
MD
847 if [[ -n "$state" && "$state" != "T" ]]; then
848 out=1
849 fi
850 done
851 sleep 0.5
852 done
529bb942 853 if [ "$withtap" -eq "1" ]; then
8490897a
MD
854 pass "Sending SIGSTOP to consumer daemon"
855 fi
856 fi
857 return $retval
858}
859
860function sigstop_lttng_consumerd()
861{
862 sigstop_lttng_consumerd_opt 1 "$@"
863}
864
865function sigstop_lttng_consumerd_notap()
866{
867 sigstop_lttng_consumerd_opt 0 "$@"
868}
869
873c2aae
JRJ
870function list_lttng_with_opts ()
871{
7d0ad314 872 local opts=$1
2cf48300 873 $TESTDIR/../src/bin/lttng/$LTTNG_BIN list $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
873c2aae
JRJ
874 ok $? "Lttng-tool list command with option $opts"
875}
876
07b86b52
JD
877function create_lttng_session_no_output ()
878{
7d0ad314 879 local sess_name=$1
2a166864 880 local opts="${@:2}"
07b86b52 881
2a166864 882 $TESTDIR/../src/bin/lttng/$LTTNG_BIN create $sess_name --no-output $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
07b86b52
JD
883 ok $? "Create session $sess_name in no-output mode"
884}
885
f0d43d3d
JR
886function create_lttng_session_uri () {
887 local sess_name=$1
888 local uri=$2
889 local opts="${@:3}"
890
891 $TESTDIR/../src/bin/lttng/$LTTNG_BIN create $sess_name -U $uri $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
892 ok $? "Create session $sess_name with uri:$uri and opts: $opts"
893}
894
d3e8f6bb
DG
895function create_lttng_session ()
896{
434f8068
JR
897 local withtap=$1
898 local expected_to_fail=$2
899 local sess_name=$3
900 local trace_path=$4
901 local opt=$5
d3e8f6bb 902
01654d69
JR
903 if [ -z "$trace_path" ]; then
904 # Use lttng-sessiond default output.
905 trace_path=""
906 else
907 trace_path="-o $trace_path"
908 fi
909
910 $TESTDIR/../src/bin/lttng/$LTTNG_BIN create "$sess_name" $trace_path $opt 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
873c2aae 911 ret=$?
434f8068 912 if [ $expected_to_fail -eq "1" ]; then
01513c3e 913 test "$ret" -ne "0"
434f8068
JR
914 ret=$?
915 if [ $withtap -eq "1" ]; then
916 ok $ret "Create session $sess_name in $trace_path failed as expected"
917 fi
873c2aae 918 else
434f8068
JR
919 if [ $withtap -eq "1" ]; then
920 ok $ret "Create session $sess_name in $trace_path"
921 fi
873c2aae 922 fi
434f8068 923 return $ret
d4018451
DG
924}
925
bf6ae429
JR
926function create_lttng_session_ok ()
927{
434f8068 928 create_lttng_session 1 0 "$@"
bf6ae429
JR
929}
930
931function create_lttng_session_fail ()
932{
434f8068
JR
933 create_lttng_session 1 1 "$@"
934}
935
936function create_lttng_session_notap ()
937{
938 create_lttng_session 0 0 "$@"
bf6ae429
JR
939}
940
941
827caf52 942function enable_ust_lttng_channel ()
d4018451 943{
434f8068
JR
944 local withtap=$1
945 local expected_to_fail=$2
946 local sess_name=$3
947 local channel_name=$4
c28fcefd 948 local opts="${@:5}"
d4018451 949
c28fcefd 950 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel -u $channel_name -s $sess_name $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
312dabc3 951 ret=$?
34ab15c5 952 if [[ $expected_to_fail -eq "1" ]]; then
01513c3e 953 test "$ret" -ne "0"
434f8068
JR
954 ret=$?
955 if [ $withtap -eq "1" ]; then
956 ok $ret "Enable channel $channel_name for session $sess_name failed as expected"
957 fi
312dabc3 958 else
434f8068
JR
959 if [ $withtap -eq "1" ]; then
960 ok $ret "Enable channel $channel_name for session $sess_name"
961 fi
312dabc3 962 fi
434f8068 963 return $ret
d4018451
DG
964}
965
827caf52
JR
966function enable_ust_lttng_channel_ok ()
967{
434f8068 968 enable_ust_lttng_channel 1 0 "$@"
827caf52
JR
969}
970
971function enable_ust_lttng_channel_fail ()
972{
434f8068
JR
973 enable_ust_lttng_channel 1 1 "$@"
974}
975
976function enable_ust_lttng_channel_notap ()
977{
978 enable_ust_lttng_channel 0 0 "$@"
827caf52
JR
979}
980
29655db7 981function disable_ust_lttng_channel()
d4018451 982{
7d0ad314
JRJ
983 local sess_name=$1
984 local channel_name=$2
d4018451 985
2cf48300 986 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-channel -u $channel_name -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
29655db7 987 ok $? "Disable channel $channel_name for session $sess_name"
d3e8f6bb
DG
988}
989
07b86b52
JD
990function enable_lttng_mmap_overwrite_kernel_channel()
991{
7d0ad314
JRJ
992 local sess_name=$1
993 local channel_name=$2
07b86b52 994
2cf48300 995 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel -s $sess_name $channel_name -k --output mmap --overwrite 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
07b86b52
JD
996 ok $? "Enable channel $channel_name for session $sess_name"
997}
998
086e6add
MD
999function enable_lttng_mmap_discard_small_kernel_channel()
1000{
1001 local sess_name=$1
1002 local channel_name=$2
1003
1004 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel -s $sess_name $channel_name -k --output mmap --discard --subbuf-size=$(getconf PAGE_SIZE) --num-subbuf=2 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1005 ok $? "Enable small discard channel $channel_name for session $sess_name"
1006}
1007
1008function enable_lttng_mmap_overwrite_small_kernel_channel()
1009{
1010 local sess_name=$1
1011 local channel_name=$2
1012
1013 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel -s $sess_name $channel_name -k --output mmap --overwrite --subbuf-size=$(getconf PAGE_SIZE) --num-subbuf=2 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1014 ok $? "Enable small discard channel $channel_name for session $sess_name"
1015}
1016
ebaaaf5e
JD
1017function enable_lttng_mmap_overwrite_ust_channel()
1018{
7d0ad314
JRJ
1019 local sess_name=$1
1020 local channel_name=$2
ebaaaf5e 1021
2cf48300 1022 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel -s $sess_name $channel_name -u --output mmap --overwrite 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
ebaaaf5e
JD
1023 ok $? "Enable channel $channel_name for session $sess_name"
1024}
1025
d3e8f6bb
DG
1026function enable_ust_lttng_event ()
1027{
434f8068
JR
1028 local withtap=$1
1029 local expected_to_fail=$2
1030 local sess_name=$3
1031 local event_name="$4"
1032 local channel_name=$5
ebaaaf5e
JD
1033
1034 if [ -z $channel_name ]; then
1035 # default channel if none specified
1036 chan=""
1037 else
1038 chan="-c $channel_name"
1039 fi
d3e8f6bb 1040
2cf48300 1041 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" $chan -s $sess_name -u 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
01513c3e 1042 ret=$?
c4926bb5 1043 if [[ $expected_to_fail -eq "1" ]]; then
01513c3e 1044 test $ret -ne "0"
434f8068
JR
1045 ret=$?
1046 if [[ $withtap -eq "1" ]]; then
1047 ok $ret "Enable ust event $event_name for session $session_name failed as expected"
1048 fi
01513c3e 1049 else
434f8068
JR
1050 if [[ $withtap -eq "1" ]]; then
1051 ok $ret "Enable ust event $event_name for session $sess_name"
1052 fi
01513c3e 1053 fi
434f8068 1054 return $ret
26b53d3b
DG
1055}
1056
c4926bb5
JR
1057function enable_ust_lttng_event_ok ()
1058{
434f8068 1059 enable_ust_lttng_event 1 0 "$@"
c4926bb5
JR
1060}
1061
1062function enable_ust_lttng_event_fail ()
1063{
434f8068
JR
1064 enable_ust_lttng_event 1 1 "$@"
1065}
1066
1067function enable_ust_lttng_event_notap ()
1068{
1069 enable_ust_lttng_event 0 0 "$@"
c4926bb5
JR
1070}
1071
37175ce4
DG
1072function enable_jul_lttng_event()
1073{
1074 sess_name=$1
1075 event_name="$2"
1076 channel_name=$3
1077
1078 if [ -z $channel_name ]; then
1079 # default channel if none specified
1080 chan=""
1081 else
1082 chan="-c $channel_name"
1083 fi
1084
2cf48300 1085 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" $chan -s $sess_name -j 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
37175ce4
DG
1086 ok $? "Enable JUL event $event_name for session $sess_name"
1087}
1088
b2064f54
DG
1089function enable_jul_lttng_event_loglevel()
1090{
7d0ad314
JRJ
1091 local sess_name=$1
1092 local event_name="$2"
1093 local loglevel=$3
1094 local channel_name=$4
b2064f54
DG
1095
1096 if [ -z $channel_name ]; then
1097 # default channel if none specified
1098 chan=""
1099 else
1100 chan="-c $channel_name"
1101 fi
1102
2cf48300 1103 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event --loglevel $loglevel "$event_name" $chan -s $sess_name -j 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
b2064f54
DG
1104 ok $? "Enable JUL event $event_name for session $sess_name with loglevel $loglevel"
1105}
1106
504d4ace
DG
1107function enable_log4j_lttng_event()
1108{
1109 sess_name=$1
1110 event_name="$2"
1111 channel_name=$3
1112
1113 if [ -z $channel_name ]; then
1114 # default channel if none specified
1115 chan=""
1116 else
1117 chan="-c $channel_name"
1118 fi
1119
2cf48300 1120 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" $chan -s $sess_name -l 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
504d4ace
DG
1121 ok $? "Enable LOG4J event $event_name for session $sess_name"
1122}
1123
1124function enable_log4j_lttng_event_loglevel()
1125{
1126 local sess_name=$1
1127 local event_name="$2"
1128 local loglevel=$3
1129 local channel_name=$4
1130
1131 if [ -z $channel_name ]; then
1132 # default channel if none specified
1133 chan=""
1134 else
1135 chan="-c $channel_name"
1136 fi
1137
2cf48300 1138 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event --loglevel $loglevel "$event_name" $chan -s $sess_name -l 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
504d4ace
DG
1139 ok $? "Enable LOG4J event $event_name for session $sess_name with loglevel $loglevel"
1140}
1141
0e115563
DG
1142function enable_python_lttng_event()
1143{
1144 sess_name=$1
1145 event_name="$2"
1146 channel_name=$3
1147
1148 if [ -z $channel_name ]; then
1149 # default channel if none specified
1150 chan=""
1151 else
1152 chan="-c $channel_name"
1153 fi
1154
2cf48300 1155 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" $chan -s $sess_name -p 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
0e115563
DG
1156 ok $? "Enable Python event $event_name for session $sess_name"
1157}
1158
1159function enable_python_lttng_event_loglevel()
1160{
1161 local sess_name=$1
1162 local event_name="$2"
1163 local loglevel=$3
1164 local channel_name=$4
1165
1166 if [ -z $channel_name ]; then
1167 # default channel if none specified
1168 chan=""
1169 else
1170 chan="-c $channel_name"
1171 fi
1172
2cf48300 1173 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event --loglevel $loglevel "$event_name" $chan -s $sess_name -p 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
0e115563
DG
1174 ok $? "Enable Python event $event_name for session $sess_name with loglevel $loglevel"
1175}
1176
26b53d3b
DG
1177function enable_ust_lttng_event_filter()
1178{
7d0ad314
JRJ
1179 local sess_name="$1"
1180 local event_name="$2"
1181 local filter="$3"
26b53d3b 1182
2cf48300 1183 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" -s $sess_name -u --filter "$filter" 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
29655db7 1184 ok $? "Enable event $event_name with filtering for session $sess_name"
26b53d3b
DG
1185}
1186
1187function enable_ust_lttng_event_loglevel()
1188{
7d0ad314
JRJ
1189 local sess_name="$1"
1190 local event_name="$2"
1191 local loglevel="$3"
26b53d3b 1192
2cf48300 1193 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" -s $sess_name -u --loglevel $loglevel 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
29655db7 1194 ok $? "Enable event $event_name with loglevel $loglevel"
26b53d3b
DG
1195}
1196
1197function enable_ust_lttng_event_loglevel_only()
1198{
7d0ad314
JRJ
1199 local sess_name="$1"
1200 local event_name="$2"
1201 local loglevel="$3"
26b53d3b 1202
2cf48300 1203 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" -s $sess_name -u --loglevel-only $loglevel 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
29655db7 1204 ok $? "Enable event $event_name with loglevel-only $loglevel"
26b53d3b
DG
1205}
1206
1207function disable_ust_lttng_event ()
1208{
7d0ad314
JRJ
1209 local sess_name="$1"
1210 local event_name="$2"
01513c3e 1211 local channel_name="$3"
26b53d3b 1212
01513c3e
JRJ
1213 if [ -z $channel_name ]; then
1214 # default channel if none specified
1215 chan=""
1216 else
1217 chan="-c $channel_name"
1218 fi
1219
2cf48300 1220 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-event "$event_name" -s $sess_name $chan -u 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
29655db7 1221 ok $? "Disable event $event_name for session $sess_name"
d3e8f6bb
DG
1222}
1223
1d842d5a
DG
1224function disable_jul_lttng_event ()
1225{
1226 local sess_name="$1"
1227 local event_name="$2"
1228
1229 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-event "$event_name" -s $sess_name -j >/dev/null 2>&1
1230 ok $? "Disable JUL event $event_name for session $sess_name"
1231}
1232
504d4ace
DG
1233function disable_log4j_lttng_event ()
1234{
1235 local sess_name="$1"
1236 local event_name="$2"
1237
1238 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-event "$event_name" -s $sess_name -l >/dev/null 2>&1
1239 ok $? "Disable LOG4J event $event_name for session $sess_name"
1240}
1241
0e115563
DG
1242function disable_python_lttng_event ()
1243{
1244 local sess_name="$1"
1245 local event_name="$2"
1246
2cf48300 1247 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-event "$event_name" -s $sess_name -p 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
0e115563
DG
1248 ok $? "Disable Python event $event_name for session $sess_name"
1249}
1250
7fe98a98 1251function start_lttng_tracing_opt ()
d3e8f6bb 1252{
7fe98a98
JG
1253 local withtap=$1
1254 local expected_to_fail=$2
1255 local sess_name=$3
d3e8f6bb 1256
2cf48300 1257 $TESTDIR/../src/bin/lttng/$LTTNG_BIN start $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
01513c3e 1258 ret=$?
e563bbdb 1259 if [[ $expected_to_fail -eq "1" ]]; then
01513c3e 1260 test "$ret" -ne "0"
7fe98a98
JG
1261 ret=$?
1262 if [ $withtap -eq "1" ]; then
1263 ok $? "Start tracing for session $sess_name failed as expected"
1264 fi
01513c3e 1265 else
7fe98a98
JG
1266 if [ $withtap -eq "1" ]; then
1267 ok $ret "Start tracing for session $sess_name"
1268 fi
01513c3e 1269 fi
d3e8f6bb
DG
1270}
1271
e563bbdb
JR
1272function start_lttng_tracing_ok ()
1273{
7fe98a98 1274 start_lttng_tracing_opt 1 0 "$@"
e563bbdb
JR
1275}
1276
1277function start_lttng_tracing_fail ()
1278{
7fe98a98 1279 start_lttng_tracing_opt 1 1 "$@"
e563bbdb
JR
1280}
1281
7fe98a98 1282function start_lttng_tracing_notap ()
d3e8f6bb 1283{
7fe98a98
JG
1284 start_lttng_tracing_opt 0 1 "$@"
1285}
1286
1287function stop_lttng_tracing_opt ()
1288{
1289 local withtap=$1
1290 local expected_to_fail=$2
1291 local sess_name=$3
d3e8f6bb 1292
2cf48300 1293 $TESTDIR/../src/bin/lttng/$LTTNG_BIN stop $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
01513c3e 1294 ret=$?
96340a01 1295 if [[ $expected_to_fail -eq "1" ]]; then
01513c3e 1296 test "$ret" -ne "0"
7fe98a98
JG
1297 ret=$?
1298 if [ $withtap -eq "1" ]; then
1299 ok $? "Stop lttng tracing for session $sess_name failed as expected"
1300 fi
01513c3e 1301 else
7fe98a98
JG
1302 if [ $withtap -eq "1" ]; then
1303 ok $ret "Stop lttng tracing for session $sess_name"
1304 fi
01513c3e 1305 fi
d3e8f6bb
DG
1306}
1307
96340a01
JR
1308function stop_lttng_tracing_ok ()
1309{
7fe98a98 1310 stop_lttng_tracing_opt 1 0 "$@"
96340a01
JR
1311}
1312
1313function stop_lttng_tracing_fail ()
1314{
7fe98a98
JG
1315 stop_lttng_tracing_opt 1 1 "$@"
1316}
1317
1318function stop_lttng_tracing_notap ()
1319{
1320 stop_lttng_tracing_opt 0 0 "$@"
96340a01
JR
1321}
1322
d3e8f6bb
DG
1323function destroy_lttng_session ()
1324{
854382b8
JR
1325 local withtap=$1
1326 local expected_to_fail=$2
1327 local sess_name=$3
d3e8f6bb 1328
2cf48300 1329 $TESTDIR/../src/bin/lttng/$LTTNG_BIN destroy $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
01513c3e 1330 ret=$?
96340a01 1331 if [[ $expected_to_fail -eq "1" ]]; then
01513c3e 1332 test "$ret" -ne "0"
854382b8
JR
1333 ret=$?
1334 if [ $withtap -eq "1" ]; then
1335 ok $ret "Destroy session $sess_name failed as expected"
1336 fi
01513c3e 1337 else
854382b8
JR
1338 if [ $withtap -eq "1" ]; then
1339 ok $ret "Destroy session $sess_name"
1340 fi
01513c3e 1341 fi
d3e8f6bb
DG
1342}
1343
67b4c664
JR
1344function destroy_lttng_session_ok ()
1345{
854382b8 1346 destroy_lttng_session 1 0 "$@"
67b4c664
JR
1347
1348}
1349
1350function destroy_lttng_session_fail ()
1351{
854382b8 1352 destroy_lttng_session 1 1 "$@"
67b4c664
JR
1353}
1354
854382b8
JR
1355function destroy_lttng_session_notap ()
1356{
1357 destroy_lttng_session 0 0 "$@"
1358}
67b4c664 1359
873c2aae
JRJ
1360function destroy_lttng_sessions ()
1361{
2cf48300 1362 $TESTDIR/../src/bin/lttng/$LTTNG_BIN destroy --all 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
873c2aae
JRJ
1363 ok $? "Destroy all lttng sessions"
1364}
1365
07b86b52
JD
1366function lttng_snapshot_add_output ()
1367{
b5633831
JR
1368 local expected_to_fail=$1
1369 local sess_name=$2
1370 local trace_path=$3
9f0e230a 1371 local opts=$4
07b86b52 1372
9f0e230a 1373 $TESTDIR/../src/bin/lttng/$LTTNG_BIN snapshot add-output -s $sess_name $trace_path $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
01513c3e 1374 ret=$?
b5633831 1375 if [[ $expected_to_fail -eq 1 ]]; then
01513c3e 1376 test "$ret" -ne "0"
9f0e230a 1377 ok $? "Added snapshot output $trace_path failed as expected"
01513c3e 1378 else
9f0e230a 1379 ok $ret "Added snapshot output $trace_path"
01513c3e 1380 fi
07b86b52
JD
1381}
1382
b5633831
JR
1383function lttng_snapshot_add_output_ok ()
1384{
1385 lttng_snapshot_add_output 0 "$@"
1386}
1387
1388function lttng_snapshot_add_output_fail ()
1389{
1390 lttng_snapshot_add_output 1 "$@"
1391}
1392
26402e0c
DG
1393function lttng_snapshot_del_output ()
1394{
31580dc7
JR
1395 local expected_to_fail=$1
1396 local sess_name=$2
1397 local id=$3
26402e0c 1398
2cf48300 1399 $TESTDIR/../src/bin/lttng/$LTTNG_BIN snapshot del-output -s $sess_name $id 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
01513c3e 1400 ret=$?
31580dc7 1401 if [[ $expected_to_fail -eq "1" ]]; then
01513c3e 1402 test "$ret" -ne "0"
34ab15c5 1403 ok $? "Deleted snapshot output id $id failed as expected"
01513c3e
JRJ
1404 else
1405 ok $ret "Deleted snapshot output id $id"
1406 fi
26402e0c
DG
1407}
1408
31580dc7
JR
1409function lttng_snapshot_del_output_ok ()
1410{
1411 lttng_snapshot_del_output 0 "$@"
1412}
1413
1414function lttng_snapshot_del_output_fail ()
1415{
1416 lttng_snapshot_del_output 1 "$@"
1417}
1418
07b86b52
JD
1419function lttng_snapshot_record ()
1420{
7d0ad314 1421 local sess_name=$1
07b86b52 1422
2a166864 1423 $TESTDIR/../src/bin/lttng/$LTTNG_BIN snapshot record -s $sess_name $trace_path 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
07b86b52
JD
1424 ok $? "Snapshot recorded"
1425}
1426
01513c3e
JRJ
1427function lttng_snapshot_list ()
1428{
1429 local sess_name=$1
2cf48300 1430 $TESTDIR/../src/bin/lttng/$LTTNG_BIN snapshot list-output -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
01513c3e
JRJ
1431 ok $? "Snapshot list"
1432}
1433
e02b109b
DG
1434function lttng_save()
1435{
1436 local sess_name=$1
1437 local opts=$2
1438
2cf48300 1439 $TESTDIR/../src/bin/lttng/$LTTNG_BIN save $sess_name $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
34ab15c5 1440 ok $? "Session saved"
e02b109b
DG
1441}
1442
1443function lttng_load()
1444{
192ac418
JR
1445 local expected_to_fail=$1
1446 local opts=$2
e02b109b 1447
2cf48300 1448 $TESTDIR/../src/bin/lttng/$LTTNG_BIN load $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
192ac418
JR
1449 ret=$?
1450 if [[ $expected_to_fail -eq "1" ]]; then
1451 test $ret -ne "0"
1452 ok $? "Load command failed as expected with opts: $opts"
1453 else
1454 ok $ret "Load command with opts: $opts"
1455 fi
1456}
1457
1458function lttng_load_ok()
1459{
1460 lttng_load 0 "$@"
1461}
1462
1463function lttng_load_fail()
1464{
1465 lttng_load 1 "$@"
e02b109b
DG
1466}
1467
e83a8bdb
JR
1468function lttng_track()
1469{
ba5e8d0a 1470 local expected_to_fail="$1"
c47a705b 1471 shift 1
ba5e8d0a 1472 local opts="$@"
e83a8bdb
JR
1473 $TESTDIR/../src/bin/lttng/$LTTNG_BIN track $opts >$OUTPUT_DEST
1474 ret=$?
1475 if [[ $expected_to_fail -eq "1" ]]; then
1476 test $ret -ne "0"
1477 ok $? "Track command failed as expected with opts: $opts"
1478 else
34ab15c5 1479 ok $ret "Track command with opts: $opts"
e83a8bdb
JR
1480 fi
1481}
1482
1483function lttng_track_ok()
1484{
1485 lttng_track 0 "$@"
1486}
1487
1488function lttng_track_fail()
1489{
1490 lttng_track 1 "$@"
1491}
1492
1493function lttng_untrack()
1494{
ba5e8d0a 1495 local expected_to_fail="$1"
c47a705b 1496 shift 1
ba5e8d0a 1497 local opts="$@"
e83a8bdb
JR
1498 $TESTDIR/../src/bin/lttng/$LTTNG_BIN untrack $opts >$OUTPUT_DEST
1499 ret=$?
1500 if [[ $expected_to_fail -eq "1" ]]; then
1501 test $ret -ne "0"
1502 ok $? "Untrack command failed as expected with opts: $opts"
1503 else
34ab15c5 1504 ok $ret "Untrack command with opts: $opts"
e83a8bdb
JR
1505 fi
1506}
1507
1508function lttng_untrack_ok()
1509{
1510 lttng_untrack 0 "$@"
1511}
1512
1513function lttng_untrack_fail()
1514{
1515 lttng_untrack 1 "$@"
1516}
1517
c8e51d15
FD
1518function lttng_track_pid_ok()
1519{
1520 PID=$1
1521 "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" track --kernel --pid=$PID 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1522 ok $? "Lttng track pid on the kernel domain"
1523}
1524
1525function lttng_untrack_kernel_all_ok()
1526{
1527 "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" untrack --kernel --pid --all 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1528 ok $? "Lttng untrack all pid on the kernel domain"
1529}
1530
ba5e8d0a
MD
1531function lttng_track_ust_ok()
1532{
1533 lttng_track_ok -u "$@"
1534}
1535
1536function lttng_track_ust_fail()
1537{
1538 lttng_track_fail -u "$@"
1539}
1540
1541function lttng_track_kernel_ok()
1542{
1543 lttng_track_ok -k "$@"
1544}
1545
1546function lttng_track_kernel_fail()
1547{
1548 lttng_track_fail -k "$@"
1549}
1550
1551function lttng_untrack_ust_ok()
1552{
1553 lttng_untrack_ok -u "$@"
1554}
1555
1556function lttng_untrack_ust_fail()
1557{
1558 lttng_untrack_fail -u "$@"
1559}
1560
1561function lttng_untrack_kernel_ok()
1562{
1563 lttng_untrack_ok -k "$@"
1564}
1565
1566function lttng_untrack_kernel_fail()
1567{
1568 lttng_untrack_fail -k "$@"
1569}
1570
59deec0c
JR
1571function lttng_add_context_list()
1572{
1573 $TESTDIR/../src/bin/lttng/$LTTNG_BIN add-context --list 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1574 ret=$?
1575 ok $ret "Context listing"
1576}
1577
8dcef147
JR
1578function add_context_lttng()
1579{
1580 local expected_to_fail="$1"
1581 local domain="$2"
1582 local session_name="$3"
1583 local channel_name="$4"
1584 local type="$5"
1585
1586 $TESTDIR/../src/bin/lttng/$LTTNG_BIN add-context -s $session_name -c $channel_name -t $type $domain 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1587 ret=$?
1588 if [[ $expected_to_fail -eq "1" ]]; then
1589 test $ret -ne "0"
1590 ok $? "Add context command failed as expected for type: $type"
1591 else
1592 ok $ret "Add context command for type: $type"
1593 fi
1594}
1595
1596function add_context_ust_ok()
1597{
1598 add_context_lttng 0 -u "$@"
1599}
1600
1601function add_context_ust_fail()
1602{
1603 add_context_lttng 1 -u "$@"
1604}
1605
1606function add_context_kernel_ok()
1607{
1608 add_context_lttng 0 -k "$@"
1609}
1610
1611function add_context_kernel_fail()
1612{
1613 add_context_lttng 1 -k "$@"
1614}
1615
c28fcefd
JR
1616function wait_live_trace_ready ()
1617{
1618 local url=$1
1619 local zero_client_match=0
1620
1621 diag "Waiting for live trace at url: $url"
1622 while [ $zero_client_match -eq 0 ]; do
1623 zero_client_match=$($BABELTRACE_BIN -i lttng-live $url | grep "0 client(s) connected" | wc -l)
1624 sleep 0.5
1625 done
1626 pass "Waiting for live trace at url: $url"
1627}
1628
1629function wait_live_viewer_connect ()
1630{
1631 local url=$1
1632 local one_client_match=0
1633
1634 diag "Waiting for live viewers on url: $url"
1635 while [ $one_client_match -eq 0 ]; do
1636 one_client_match=$($BABELTRACE_BIN -i lttng-live $url | grep "1 client(s) connected" | wc -l)
1637 sleep 0.5
1638 done
1639 pass "Waiting for live viewers on url: $url"
1640}
1641
c54b437e
FD
1642function validate_metadata_event ()
1643{
1644 local event_name=$1
1645 local nr_event_id=$2
1646 local trace_path=$3
1647
1648 local metadata_file=$(find $trace_path | grep metadata)
1649 local metadata_path=$(dirname $metadata_file)
1650
1651 which $BABELTRACE_BIN >/dev/null
1652 skip $? -ne 0 "Babeltrace binary not found. Skipping trace matches"
1653
1654 local count=$($BABELTRACE_BIN --output-format=ctf-metadata $metadata_path | grep $event_name | wc -l)
1655
1656 if [ "$count" -ne "$nr_event_id" ]; then
1657 fail "Metadata match with the metadata of $count event(s) named $event_name"
1658 diag "$count matching event id found in metadata"
1659 else
1660 pass "Metadata match with the metadata of $count event(s) named $event_name"
1661 fi
1662
1663}
1664
d3e8f6bb
DG
1665function trace_matches ()
1666{
7d0ad314
JRJ
1667 local event_name=$1
1668 local nr_iter=$2
1669 local trace_path=$3
d3e8f6bb 1670
317eef93 1671 which $BABELTRACE_BIN >/dev/null
29655db7 1672 skip $? -ne 0 "Babeltrace binary not found. Skipping trace matches"
d3e8f6bb 1673
7d0ad314 1674 local count=$($BABELTRACE_BIN $trace_path | grep $event_name | wc -l)
29655db7 1675
d3e8f6bb 1676 if [ "$count" -ne "$nr_iter" ]; then
29655db7 1677 fail "Trace match"
af91abc9 1678 diag "$count matching events found in trace"
d3e8f6bb 1679 else
29655db7 1680 pass "Trace match"
d3e8f6bb
DG
1681 fi
1682}
f4e40ab6 1683
d53addeb
DG
1684function trace_match_only()
1685{
1686 local event_name=$1
1687 local nr_iter=$2
1688 local trace_path=$3
1689
1690 which $BABELTRACE_BIN >/dev/null
1691 skip $? -ne 0 "Babeltrace binary not found. Skipping trace matches"
1692
1693 local count=$($BABELTRACE_BIN $trace_path | grep $event_name | wc -l)
1694 local total=$($BABELTRACE_BIN $trace_path | wc -l)
1695
08f96a38
JG
1696 if [ "$nr_iter" -eq "$count" ] && [ "$total" -eq "$nr_iter" ]; then
1697 pass "Trace match with $total event $event_name"
1698 else
1699 fail "Trace match"
1700 diag "$total event(s) found, expecting $nr_iter of event $event_name and only found $count"
1701 fi
d53addeb
DG
1702}
1703
f4e40ab6
DG
1704function validate_trace
1705{
7d0ad314
JRJ
1706 local event_name=$1
1707 local trace_path=$2
f4e40ab6
DG
1708
1709 which $BABELTRACE_BIN >/dev/null
29655db7
CB
1710 if [ $? -ne 0 ]; then
1711 skip 0 "Babeltrace binary not found. Skipping trace validation"
f4e40ab6
DG
1712 fi
1713
07b86b52
JD
1714 OLDIFS=$IFS
1715 IFS=","
1716 for i in $event_name; do
1717 traced=$($BABELTRACE_BIN $trace_path 2>/dev/null | grep $i | wc -l)
1718 if [ "$traced" -ne 0 ]; then
ebaaaf5e 1719 pass "Validate trace for event $i, $traced events"
07b86b52
JD
1720 else
1721 fail "Validate trace for event $i"
1722 diag "Found $traced occurences of $i"
1723 fi
1724 done
1725 ret=$?
1726 IFS=$OLDIFS
1727 return $ret
f4e40ab6 1728}
8cfcd41c 1729
54cd6107
JD
1730function validate_trace_count
1731{
1732 local event_name=$1
1733 local trace_path=$2
1734 local expected_count=$3
1735
1736 which $BABELTRACE_BIN >/dev/null
1737 if [ $? -ne 0 ]; then
1738 skip 0 "Babeltrace binary not found. Skipping trace validation"
1739 fi
1740
1741 cnt=0
1742 OLDIFS=$IFS
1743 IFS=","
1744 for i in $event_name; do
1745 traced=$($BABELTRACE_BIN $trace_path 2>/dev/null | grep $i | wc -l)
1746 if [ "$traced" -ne 0 ]; then
1747 pass "Validate trace for event $i, $traced events"
1748 else
1749 fail "Validate trace for event $i"
1750 diag "Found $traced occurences of $i"
1751 fi
1752 cnt=$(($cnt + $traced))
1753 done
1754 IFS=$OLDIFS
1755 test $cnt -eq $expected_count
1756 ok $? "Read a total of $cnt events, expected $expected_count"
1757}
1758
c28fcefd
JR
1759function validate_trace_count_range_incl_min_excl_max
1760{
1761 local event_name=$1
1762 local trace_path=$2
1763 local expected_min=$3
1764 local expected_max=$4
1765
1766 which $BABELTRACE_BIN >/dev/null
1767 if [ $? -ne 0 ]; then
1768 skip 0 "Babeltrace binary not found. Skipping trace validation"
1769 fi
1770
1771 cnt=0
1772 OLDIFS=$IFS
1773 IFS=","
1774 for i in $event_name; do
1775 traced=$($BABELTRACE_BIN $trace_path 2>/dev/null | grep $i | wc -l)
1776 if [ "$traced" -ge $expected_min ]; then
1777 pass "Validate trace for event $i, $traced events"
1778 else
1779 fail "Validate trace for event $i"
1780 diag "Found $traced occurences of $i"
1781 fi
1782 cnt=$(($cnt + $traced))
1783 done
1784 IFS=$OLDIFS
1785 test $cnt -lt $expected_max
1786 ok $? "Read a total of $cnt events, expected between [$expected_min, $expected_max["
1787}
1788
086e6add
MD
1789function trace_first_line
1790{
1791 local trace_path=$1
1792
1793 which $BABELTRACE_BIN >/dev/null
1794 if [ $? -ne 0 ]; then
1795 skip 0 "Babeltrace binary not found. Skipping trace validation"
1796 fi
1797
1798 $BABELTRACE_BIN $trace_path 2>/dev/null | head -n 1
1799}
1800
8cfcd41c
MD
1801function validate_trace_exp()
1802{
1803 local event_exp=$1
1804 local trace_path=$2
1805
1806 which $BABELTRACE_BIN >/dev/null
1807 skip $? -ne 0 "Babeltrace binary not found. Skipping trace validation"
1808
49538c32 1809 traced=$($BABELTRACE_BIN $trace_path 2>/dev/null | grep --extended-regexp ${event_exp} | wc -l)
8cfcd41c
MD
1810 if [ "$traced" -ne 0 ]; then
1811 pass "Validate trace for expression '${event_exp}', $traced events"
1812 else
1813 fail "Validate trace for expression '${event_exp}'"
1814 diag "Found $traced occurences of '${event_exp}'"
1815 fi
1816 ret=$?
1817 return $ret
1818}
1819
1820function validate_trace_only_exp()
1821{
1822 local event_exp=$1
1823 local trace_path=$2
1824
1825 which $BABELTRACE_BIN >/dev/null
1826 skip $? -ne 0 "Babeltrace binary not found. Skipping trace matches"
1827
49538c32 1828 local count=$($BABELTRACE_BIN $trace_path | grep --extended-regexp ${event_exp} | wc -l)
8cfcd41c
MD
1829 local total=$($BABELTRACE_BIN $trace_path | wc -l)
1830
1831 if [ "$count" -ne 0 ] && [ "$total" -eq "$count" ]; then
ab95d85d 1832 pass "Trace match with $total for expression '${event_exp}'"
8cfcd41c
MD
1833 else
1834 fail "Trace match"
1835 diag "$total syscall event(s) found, only syscalls matching expression '${event_exp}' ($count occurrences) are expected"
1836 fi
1837 ret=$?
1838 return $ret
1839}
1840
1841function validate_trace_empty()
1842{
1843 local trace_path=$1
1844
1845 which $BABELTRACE_BIN >/dev/null
1846 if [ $? -ne 0 ]; then
1847 skip 0 "Babeltrace binary not found. Skipping trace validation"
1848 fi
1849
2462eee7
JD
1850 events=$($BABELTRACE_BIN $trace_path 2>/dev/null)
1851 ret=$?
1852 if [ $ret -ne 0 ]; then
1853 fail "Failed to parse trace"
1854 return $ret
1855 fi
1856
1857 traced=$(echo -n "$events" | wc -l)
8cfcd41c
MD
1858 if [ "$traced" -eq 0 ]; then
1859 pass "Validate empty trace"
1860 else
1861 fail "Validate empty trace"
1862 diag "Found $traced events in trace"
1863 fi
1864 ret=$?
1865 return $ret
1866}
801236b0 1867
94360c17 1868function validate_directory_empty ()
ba5e8d0a 1869{
94360c17
FD
1870 local trace_path="$1"
1871
c8e000ef
FD
1872 # Do not double quote `$trace_path` below as we want wildcards to be
1873 # expanded.
1874 files="$(ls -A $trace_path)"
94360c17
FD
1875 ret=$?
1876 if [ $ret -ne 0 ]; then
1877 fail "Failed to list content of directory \"$trace_path\""
1878 return $ret
1879 fi
ba5e8d0a 1880
94360c17
FD
1881 nb_files="$(echo -n "$files" | wc -l)"
1882 ok $nb_files "Directory \"$trace_path\" is empty"
ba5e8d0a
MD
1883}
1884
1885function validate_trace_session_ust_empty()
1886{
94360c17 1887 validate_directory_empty "$1"/ust
ba5e8d0a
MD
1888}
1889
1890function validate_trace_session_kernel_empty()
1891{
1892 validate_trace_empty "$1"/kernel
1893}
1894
eded6438 1895function regenerate_metadata ()
801236b0
JD
1896{
1897 local expected_to_fail=$1
1898 local sess_name=$2
1899
eded6438 1900 $TESTDIR/../src/bin/lttng/$LTTNG_BIN regenerate metadata -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
801236b0
JD
1901 ret=$?
1902 if [[ $expected_to_fail -eq "1" ]]; then
1903 test "$ret" -ne "0"
eded6438 1904 ok $? "Expected fail on regenerate metadata $sess_name"
801236b0
JD
1905 else
1906 ok $ret "Metadata regenerate $sess_name"
1907 fi
1908}
1909
eded6438 1910function regenerate_metadata_ok ()
801236b0 1911{
eded6438 1912 regenerate_metadata 0 "$@"
801236b0
JD
1913}
1914
eded6438 1915function regenerate_metadata_fail ()
801236b0 1916{
eded6438 1917 regenerate_metadata 1 "$@"
801236b0 1918}
512eb148 1919
54cd6107
JD
1920function regenerate_statedump ()
1921{
1922 local expected_to_fail=$1
1923 local sess_name=$2
1924
1925 $TESTDIR/../src/bin/lttng/$LTTNG_BIN regenerate statedump -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1926 ret=$?
1927 if [[ $expected_to_fail -eq "1" ]]; then
1928 test "$ret" -ne "0"
1929 ok $? "Expected fail on regenerate statedump $sess_name"
1930 else
5ebb1a9f 1931 ok $ret "Statedump regenerate $sess_name"
54cd6107
JD
1932 fi
1933}
1934
1935function regenerate_statedump_ok ()
1936{
1937 regenerate_statedump 0 "$@"
1938}
1939
1940function regenerate_statedump_fail ()
1941{
1942 regenerate_statedump 1 "$@"
1943}
1944
e7716c6a
JD
1945function rotate_session ()
1946{
1947 local expected_to_fail=$1
1948 local sess_name=$2
1949
1950 $TESTDIR/../src/bin/lttng/$LTTNG_BIN rotate $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1951 ret=$?
1952 if [[ $expected_to_fail -eq "1" ]]; then
1953 test "$ret" -ne "0"
1954 ok $? "Expected fail on rotate session $sess_name"
1955 else
1956 ok $ret "Rotate session $sess_name"
1957 fi
1958}
1959
1960function rotate_session_ok ()
1961{
1962 rotate_session 0 "$@"
1963}
1964
1965function rotate_session_fail ()
1966{
1967 rotate_session 1 "$@"
1968}
1969
512eb148
JD
1970function destructive_tests_enabled ()
1971{
1972 if [ ${LTTNG_ENABLE_DESTRUCTIVE_TESTS} = "will-break-my-system" ]; then
1973 return 0
1974 else
1975 return 1
1976 fi
1977}
e7716c6a
JD
1978
1979function lttng_enable_rotation_timer ()
1980{
1981 local expected_to_fail=$1
1982 local sess_name=$2
1983 local period=$3
1984
1985 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-rotation -s $sess_name --timer $period 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1986 ret=$?
1987 if [[ $expected_to_fail -eq "1" ]]; then
1988 test "$ret" -ne "0"
9498e289 1989 ok $? "Expected fail when setting periodic rotation ($period) of session $sess_name"
e7716c6a 1990 else
795f9063 1991 ok $ret "Set periodic rotation ($period) of session $sess_name"
e7716c6a
JD
1992 fi
1993}
1994
1995function lttng_enable_rotation_timer_ok ()
1996{
1997 lttng_enable_rotation_timer 0 $@
1998}
1999
2000function lttng_enable_rotation_timer_fail ()
2001{
2002 lttng_enable_rotation_timer 1 $@
2003}
2004
2005function lttng_enable_rotation_size ()
2006{
2007 local expected_to_fail=$1
2008 local sess_name=$2
2009 local size=$3
2010
2011 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-rotation -s $sess_name --size $size 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
2012 ret=$?
2013 if [[ $expected_to_fail -eq "1" ]]; then
2014 test "$ret" -ne "0"
2015 ok $? "Expected fail on rotate session $sess_name"
2016 else
2017 ok $ret "Rotate session $sess_name"
2018 fi
2019}
2020
2021function lttng_enable_rotation_size_ok ()
2022{
2023 lttng_enable_rotation_size 0 $@
2024}
2025
2026function lttng_enable_rotation_size_fail ()
2027{
2028 lttng_enable_rotation_size 1 $@
2029}
c28fcefd
JR
2030
2031function lttng_clear_session ()
2032{
2033 local expected_to_fail=$1
2034 local sess_name=$2
2035
2036 $TESTDIR/../src/bin/lttng/$LTTNG_BIN clear $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
2037 ret=$?
2038 if [[ $expected_to_fail -eq "1" ]]; then
2039 test "$ret" -ne "0"
2040 ok $? "Expected fail on clear session $sess_name"
2041 else
2042 ok $ret "Clear session $sess_name"
2043 fi
2044}
2045
2046function lttng_clear_session_ok ()
2047{
2048 lttng_clear_session 0 $@
2049}
2050
2051function lttng_clear_session_fail ()
2052{
2053 lttng_clear_session 1 $@
2054}
5ee26199
JR
2055
2056function lttng_clear_all ()
2057{
2058 $TESTDIR/../src/bin/lttng/$LTTNG_BIN clear --all 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
2059 ok $? "Clear all lttng sessions"
2060}
This page took 0.143816 seconds and 4 git commands to generate.