Fix: tests: quote variable in case it's not set
[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
746aa688 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{
c8604602 142 # Check for loadable modules.
9c8a3964 143 modprobe -n lttng-tracer 2>/dev/null
c8604602
FD
144 if [ $? -eq 0 ]; then
145 return 0
9c8a3964 146 fi
c8604602
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"
d267104b 667 modprobe --remove "$modules"
529bb942
MD
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"
60ef7bf7
JG
1182 local channel_name=$4
1183
1184 if [ -z $channel_name ]; then
1185 # default channel if none specified
1186 chan=""
1187 else
1188 chan="-c $channel_name"
1189 fi
26b53d3b 1190
60ef7bf7 1191 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event $chan "$event_name" -s $sess_name -u --filter "$filter" 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
29655db7 1192 ok $? "Enable event $event_name with filtering for session $sess_name"
26b53d3b
DG
1193}
1194
1195function enable_ust_lttng_event_loglevel()
1196{
7d0ad314
JRJ
1197 local sess_name="$1"
1198 local event_name="$2"
1199 local loglevel="$3"
26b53d3b 1200
2cf48300 1201 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" -s $sess_name -u --loglevel $loglevel 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
29655db7 1202 ok $? "Enable event $event_name with loglevel $loglevel"
26b53d3b
DG
1203}
1204
1205function enable_ust_lttng_event_loglevel_only()
1206{
7d0ad314
JRJ
1207 local sess_name="$1"
1208 local event_name="$2"
1209 local loglevel="$3"
26b53d3b 1210
2cf48300 1211 $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 1212 ok $? "Enable event $event_name with loglevel-only $loglevel"
26b53d3b
DG
1213}
1214
1215function disable_ust_lttng_event ()
1216{
7d0ad314
JRJ
1217 local sess_name="$1"
1218 local event_name="$2"
01513c3e 1219 local channel_name="$3"
26b53d3b 1220
01513c3e
JRJ
1221 if [ -z $channel_name ]; then
1222 # default channel if none specified
1223 chan=""
1224 else
1225 chan="-c $channel_name"
1226 fi
1227
2cf48300 1228 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-event "$event_name" -s $sess_name $chan -u 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
29655db7 1229 ok $? "Disable event $event_name for session $sess_name"
d3e8f6bb
DG
1230}
1231
1d842d5a
DG
1232function disable_jul_lttng_event ()
1233{
1234 local sess_name="$1"
1235 local event_name="$2"
1236
1237 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-event "$event_name" -s $sess_name -j >/dev/null 2>&1
1238 ok $? "Disable JUL event $event_name for session $sess_name"
1239}
1240
504d4ace
DG
1241function disable_log4j_lttng_event ()
1242{
1243 local sess_name="$1"
1244 local event_name="$2"
1245
1246 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-event "$event_name" -s $sess_name -l >/dev/null 2>&1
1247 ok $? "Disable LOG4J event $event_name for session $sess_name"
1248}
1249
0e115563
DG
1250function disable_python_lttng_event ()
1251{
1252 local sess_name="$1"
1253 local event_name="$2"
1254
2cf48300 1255 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-event "$event_name" -s $sess_name -p 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
0e115563
DG
1256 ok $? "Disable Python event $event_name for session $sess_name"
1257}
1258
7fe98a98 1259function start_lttng_tracing_opt ()
d3e8f6bb 1260{
7fe98a98
JG
1261 local withtap=$1
1262 local expected_to_fail=$2
1263 local sess_name=$3
d3e8f6bb 1264
2cf48300 1265 $TESTDIR/../src/bin/lttng/$LTTNG_BIN start $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
01513c3e 1266 ret=$?
e563bbdb 1267 if [[ $expected_to_fail -eq "1" ]]; then
01513c3e 1268 test "$ret" -ne "0"
7fe98a98
JG
1269 ret=$?
1270 if [ $withtap -eq "1" ]; then
1271 ok $? "Start tracing for session $sess_name failed as expected"
1272 fi
01513c3e 1273 else
7fe98a98
JG
1274 if [ $withtap -eq "1" ]; then
1275 ok $ret "Start tracing for session $sess_name"
1276 fi
01513c3e 1277 fi
d3e8f6bb
DG
1278}
1279
e563bbdb
JR
1280function start_lttng_tracing_ok ()
1281{
7fe98a98 1282 start_lttng_tracing_opt 1 0 "$@"
e563bbdb
JR
1283}
1284
1285function start_lttng_tracing_fail ()
1286{
7fe98a98 1287 start_lttng_tracing_opt 1 1 "$@"
e563bbdb
JR
1288}
1289
7fe98a98 1290function start_lttng_tracing_notap ()
d3e8f6bb 1291{
7fe98a98
JG
1292 start_lttng_tracing_opt 0 1 "$@"
1293}
1294
1295function stop_lttng_tracing_opt ()
1296{
1297 local withtap=$1
1298 local expected_to_fail=$2
1299 local sess_name=$3
d3e8f6bb 1300
2cf48300 1301 $TESTDIR/../src/bin/lttng/$LTTNG_BIN stop $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
01513c3e 1302 ret=$?
96340a01 1303 if [[ $expected_to_fail -eq "1" ]]; then
01513c3e 1304 test "$ret" -ne "0"
7fe98a98
JG
1305 ret=$?
1306 if [ $withtap -eq "1" ]; then
1307 ok $? "Stop lttng tracing for session $sess_name failed as expected"
1308 fi
01513c3e 1309 else
7fe98a98
JG
1310 if [ $withtap -eq "1" ]; then
1311 ok $ret "Stop lttng tracing for session $sess_name"
1312 fi
01513c3e 1313 fi
d3e8f6bb
DG
1314}
1315
96340a01
JR
1316function stop_lttng_tracing_ok ()
1317{
7fe98a98 1318 stop_lttng_tracing_opt 1 0 "$@"
96340a01
JR
1319}
1320
1321function stop_lttng_tracing_fail ()
1322{
7fe98a98
JG
1323 stop_lttng_tracing_opt 1 1 "$@"
1324}
1325
1326function stop_lttng_tracing_notap ()
1327{
1328 stop_lttng_tracing_opt 0 0 "$@"
96340a01
JR
1329}
1330
d3e8f6bb
DG
1331function destroy_lttng_session ()
1332{
854382b8
JR
1333 local withtap=$1
1334 local expected_to_fail=$2
1335 local sess_name=$3
d3e8f6bb 1336
2cf48300 1337 $TESTDIR/../src/bin/lttng/$LTTNG_BIN destroy $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
01513c3e 1338 ret=$?
96340a01 1339 if [[ $expected_to_fail -eq "1" ]]; then
01513c3e 1340 test "$ret" -ne "0"
854382b8
JR
1341 ret=$?
1342 if [ $withtap -eq "1" ]; then
1343 ok $ret "Destroy session $sess_name failed as expected"
1344 fi
01513c3e 1345 else
854382b8
JR
1346 if [ $withtap -eq "1" ]; then
1347 ok $ret "Destroy session $sess_name"
1348 fi
01513c3e 1349 fi
d3e8f6bb
DG
1350}
1351
67b4c664
JR
1352function destroy_lttng_session_ok ()
1353{
854382b8 1354 destroy_lttng_session 1 0 "$@"
67b4c664
JR
1355
1356}
1357
1358function destroy_lttng_session_fail ()
1359{
854382b8 1360 destroy_lttng_session 1 1 "$@"
67b4c664
JR
1361}
1362
854382b8
JR
1363function destroy_lttng_session_notap ()
1364{
1365 destroy_lttng_session 0 0 "$@"
1366}
67b4c664 1367
873c2aae
JRJ
1368function destroy_lttng_sessions ()
1369{
2cf48300 1370 $TESTDIR/../src/bin/lttng/$LTTNG_BIN destroy --all 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
873c2aae
JRJ
1371 ok $? "Destroy all lttng sessions"
1372}
1373
07b86b52
JD
1374function lttng_snapshot_add_output ()
1375{
b5633831
JR
1376 local expected_to_fail=$1
1377 local sess_name=$2
1378 local trace_path=$3
9f0e230a 1379 local opts=$4
07b86b52 1380
9f0e230a 1381 $TESTDIR/../src/bin/lttng/$LTTNG_BIN snapshot add-output -s $sess_name $trace_path $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
01513c3e 1382 ret=$?
b5633831 1383 if [[ $expected_to_fail -eq 1 ]]; then
01513c3e 1384 test "$ret" -ne "0"
9f0e230a 1385 ok $? "Added snapshot output $trace_path failed as expected"
01513c3e 1386 else
9f0e230a 1387 ok $ret "Added snapshot output $trace_path"
01513c3e 1388 fi
07b86b52
JD
1389}
1390
b5633831
JR
1391function lttng_snapshot_add_output_ok ()
1392{
1393 lttng_snapshot_add_output 0 "$@"
1394}
1395
1396function lttng_snapshot_add_output_fail ()
1397{
1398 lttng_snapshot_add_output 1 "$@"
1399}
1400
26402e0c
DG
1401function lttng_snapshot_del_output ()
1402{
31580dc7
JR
1403 local expected_to_fail=$1
1404 local sess_name=$2
1405 local id=$3
26402e0c 1406
2cf48300 1407 $TESTDIR/../src/bin/lttng/$LTTNG_BIN snapshot del-output -s $sess_name $id 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
01513c3e 1408 ret=$?
31580dc7 1409 if [[ $expected_to_fail -eq "1" ]]; then
01513c3e 1410 test "$ret" -ne "0"
34ab15c5 1411 ok $? "Deleted snapshot output id $id failed as expected"
01513c3e
JRJ
1412 else
1413 ok $ret "Deleted snapshot output id $id"
1414 fi
26402e0c
DG
1415}
1416
31580dc7
JR
1417function lttng_snapshot_del_output_ok ()
1418{
1419 lttng_snapshot_del_output 0 "$@"
1420}
1421
1422function lttng_snapshot_del_output_fail ()
1423{
1424 lttng_snapshot_del_output 1 "$@"
1425}
1426
07b86b52
JD
1427function lttng_snapshot_record ()
1428{
7d0ad314 1429 local sess_name=$1
abb58ec7 1430 local trace_path=$2
07b86b52 1431
abb58ec7 1432 $TESTDIR/../src/bin/lttng/$LTTNG_BIN snapshot record -s "$sess_name" "$trace_path" 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
07b86b52
JD
1433 ok $? "Snapshot recorded"
1434}
1435
01513c3e
JRJ
1436function lttng_snapshot_list ()
1437{
1438 local sess_name=$1
2cf48300 1439 $TESTDIR/../src/bin/lttng/$LTTNG_BIN snapshot list-output -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
01513c3e
JRJ
1440 ok $? "Snapshot list"
1441}
1442
e02b109b
DG
1443function lttng_save()
1444{
1445 local sess_name=$1
1446 local opts=$2
1447
2cf48300 1448 $TESTDIR/../src/bin/lttng/$LTTNG_BIN save $sess_name $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
34ab15c5 1449 ok $? "Session saved"
e02b109b
DG
1450}
1451
1452function lttng_load()
1453{
192ac418
JR
1454 local expected_to_fail=$1
1455 local opts=$2
e02b109b 1456
2cf48300 1457 $TESTDIR/../src/bin/lttng/$LTTNG_BIN load $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
192ac418
JR
1458 ret=$?
1459 if [[ $expected_to_fail -eq "1" ]]; then
1460 test $ret -ne "0"
1461 ok $? "Load command failed as expected with opts: $opts"
1462 else
1463 ok $ret "Load command with opts: $opts"
1464 fi
1465}
1466
1467function lttng_load_ok()
1468{
1469 lttng_load 0 "$@"
1470}
1471
1472function lttng_load_fail()
1473{
1474 lttng_load 1 "$@"
e02b109b
DG
1475}
1476
e83a8bdb
JR
1477function lttng_track()
1478{
ba5e8d0a 1479 local expected_to_fail="$1"
c47a705b 1480 shift 1
ba5e8d0a 1481 local opts="$@"
e83a8bdb
JR
1482 $TESTDIR/../src/bin/lttng/$LTTNG_BIN track $opts >$OUTPUT_DEST
1483 ret=$?
1484 if [[ $expected_to_fail -eq "1" ]]; then
1485 test $ret -ne "0"
1486 ok $? "Track command failed as expected with opts: $opts"
1487 else
34ab15c5 1488 ok $ret "Track command with opts: $opts"
e83a8bdb
JR
1489 fi
1490}
1491
1492function lttng_track_ok()
1493{
1494 lttng_track 0 "$@"
1495}
1496
1497function lttng_track_fail()
1498{
1499 lttng_track 1 "$@"
1500}
1501
1502function lttng_untrack()
1503{
ba5e8d0a 1504 local expected_to_fail="$1"
c47a705b 1505 shift 1
ba5e8d0a 1506 local opts="$@"
e83a8bdb
JR
1507 $TESTDIR/../src/bin/lttng/$LTTNG_BIN untrack $opts >$OUTPUT_DEST
1508 ret=$?
1509 if [[ $expected_to_fail -eq "1" ]]; then
1510 test $ret -ne "0"
1511 ok $? "Untrack command failed as expected with opts: $opts"
1512 else
34ab15c5 1513 ok $ret "Untrack command with opts: $opts"
e83a8bdb
JR
1514 fi
1515}
1516
1517function lttng_untrack_ok()
1518{
1519 lttng_untrack 0 "$@"
1520}
1521
1522function lttng_untrack_fail()
1523{
1524 lttng_untrack 1 "$@"
1525}
1526
c8e51d15
FD
1527function lttng_track_pid_ok()
1528{
1529 PID=$1
1530 "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" track --kernel --pid=$PID 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1531 ok $? "Lttng track pid on the kernel domain"
1532}
1533
1534function lttng_untrack_kernel_all_ok()
1535{
1536 "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" untrack --kernel --pid --all 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1537 ok $? "Lttng untrack all pid on the kernel domain"
1538}
1539
ba5e8d0a
MD
1540function lttng_track_ust_ok()
1541{
1542 lttng_track_ok -u "$@"
1543}
1544
1545function lttng_track_ust_fail()
1546{
1547 lttng_track_fail -u "$@"
1548}
1549
1550function lttng_track_kernel_ok()
1551{
1552 lttng_track_ok -k "$@"
1553}
1554
1555function lttng_track_kernel_fail()
1556{
1557 lttng_track_fail -k "$@"
1558}
1559
1560function lttng_untrack_ust_ok()
1561{
1562 lttng_untrack_ok -u "$@"
1563}
1564
1565function lttng_untrack_ust_fail()
1566{
1567 lttng_untrack_fail -u "$@"
1568}
1569
1570function lttng_untrack_kernel_ok()
1571{
1572 lttng_untrack_ok -k "$@"
1573}
1574
1575function lttng_untrack_kernel_fail()
1576{
1577 lttng_untrack_fail -k "$@"
1578}
1579
59deec0c
JR
1580function lttng_add_context_list()
1581{
1582 $TESTDIR/../src/bin/lttng/$LTTNG_BIN add-context --list 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1583 ret=$?
1584 ok $ret "Context listing"
1585}
1586
8dcef147
JR
1587function add_context_lttng()
1588{
1589 local expected_to_fail="$1"
1590 local domain="$2"
1591 local session_name="$3"
1592 local channel_name="$4"
1593 local type="$5"
1594
1595 $TESTDIR/../src/bin/lttng/$LTTNG_BIN add-context -s $session_name -c $channel_name -t $type $domain 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1596 ret=$?
1597 if [[ $expected_to_fail -eq "1" ]]; then
1598 test $ret -ne "0"
1599 ok $? "Add context command failed as expected for type: $type"
1600 else
1601 ok $ret "Add context command for type: $type"
1602 fi
1603}
1604
1605function add_context_ust_ok()
1606{
1607 add_context_lttng 0 -u "$@"
1608}
1609
1610function add_context_ust_fail()
1611{
1612 add_context_lttng 1 -u "$@"
1613}
1614
1615function add_context_kernel_ok()
1616{
1617 add_context_lttng 0 -k "$@"
1618}
1619
1620function add_context_kernel_fail()
1621{
1622 add_context_lttng 1 -k "$@"
1623}
1624
c28fcefd
JR
1625function wait_live_trace_ready ()
1626{
1627 local url=$1
1628 local zero_client_match=0
1629
1630 diag "Waiting for live trace at url: $url"
1631 while [ $zero_client_match -eq 0 ]; do
1632 zero_client_match=$($BABELTRACE_BIN -i lttng-live $url | grep "0 client(s) connected" | wc -l)
1633 sleep 0.5
1634 done
1635 pass "Waiting for live trace at url: $url"
1636}
1637
1638function wait_live_viewer_connect ()
1639{
1640 local url=$1
1641 local one_client_match=0
1642
1643 diag "Waiting for live viewers on url: $url"
1644 while [ $one_client_match -eq 0 ]; do
1645 one_client_match=$($BABELTRACE_BIN -i lttng-live $url | grep "1 client(s) connected" | wc -l)
1646 sleep 0.5
1647 done
1648 pass "Waiting for live viewers on url: $url"
1649}
1650
c54b437e
FD
1651function validate_metadata_event ()
1652{
1653 local event_name=$1
1654 local nr_event_id=$2
1655 local trace_path=$3
1656
1657 local metadata_file=$(find $trace_path | grep metadata)
1658 local metadata_path=$(dirname $metadata_file)
1659
1660 which $BABELTRACE_BIN >/dev/null
1661 skip $? -ne 0 "Babeltrace binary not found. Skipping trace matches"
1662
1663 local count=$($BABELTRACE_BIN --output-format=ctf-metadata $metadata_path | grep $event_name | wc -l)
1664
1665 if [ "$count" -ne "$nr_event_id" ]; then
1666 fail "Metadata match with the metadata of $count event(s) named $event_name"
1667 diag "$count matching event id found in metadata"
1668 else
1669 pass "Metadata match with the metadata of $count event(s) named $event_name"
1670 fi
1671
1672}
1673
d3e8f6bb
DG
1674function trace_matches ()
1675{
7d0ad314
JRJ
1676 local event_name=$1
1677 local nr_iter=$2
1678 local trace_path=$3
d3e8f6bb 1679
317eef93 1680 which $BABELTRACE_BIN >/dev/null
29655db7 1681 skip $? -ne 0 "Babeltrace binary not found. Skipping trace matches"
d3e8f6bb 1682
7d0ad314 1683 local count=$($BABELTRACE_BIN $trace_path | grep $event_name | wc -l)
29655db7 1684
d3e8f6bb 1685 if [ "$count" -ne "$nr_iter" ]; then
29655db7 1686 fail "Trace match"
af91abc9 1687 diag "$count matching events found in trace"
d3e8f6bb 1688 else
29655db7 1689 pass "Trace match"
d3e8f6bb
DG
1690 fi
1691}
f4e40ab6 1692
d53addeb
DG
1693function trace_match_only()
1694{
1695 local event_name=$1
1696 local nr_iter=$2
1697 local trace_path=$3
1698
1699 which $BABELTRACE_BIN >/dev/null
1700 skip $? -ne 0 "Babeltrace binary not found. Skipping trace matches"
1701
1702 local count=$($BABELTRACE_BIN $trace_path | grep $event_name | wc -l)
1703 local total=$($BABELTRACE_BIN $trace_path | wc -l)
1704
08f96a38
JG
1705 if [ "$nr_iter" -eq "$count" ] && [ "$total" -eq "$nr_iter" ]; then
1706 pass "Trace match with $total event $event_name"
1707 else
1708 fail "Trace match"
1709 diag "$total event(s) found, expecting $nr_iter of event $event_name and only found $count"
1710 fi
d53addeb
DG
1711}
1712
f4e40ab6
DG
1713function validate_trace
1714{
7d0ad314
JRJ
1715 local event_name=$1
1716 local trace_path=$2
f4e40ab6
DG
1717
1718 which $BABELTRACE_BIN >/dev/null
29655db7
CB
1719 if [ $? -ne 0 ]; then
1720 skip 0 "Babeltrace binary not found. Skipping trace validation"
f4e40ab6
DG
1721 fi
1722
07b86b52
JD
1723 OLDIFS=$IFS
1724 IFS=","
1725 for i in $event_name; do
1726 traced=$($BABELTRACE_BIN $trace_path 2>/dev/null | grep $i | wc -l)
1727 if [ "$traced" -ne 0 ]; then
ebaaaf5e 1728 pass "Validate trace for event $i, $traced events"
07b86b52
JD
1729 else
1730 fail "Validate trace for event $i"
1731 diag "Found $traced occurences of $i"
1732 fi
1733 done
1734 ret=$?
1735 IFS=$OLDIFS
1736 return $ret
f4e40ab6 1737}
8cfcd41c 1738
54cd6107
JD
1739function validate_trace_count
1740{
1741 local event_name=$1
1742 local trace_path=$2
1743 local expected_count=$3
1744
1745 which $BABELTRACE_BIN >/dev/null
1746 if [ $? -ne 0 ]; then
1747 skip 0 "Babeltrace binary not found. Skipping trace validation"
1748 fi
1749
1750 cnt=0
1751 OLDIFS=$IFS
1752 IFS=","
1753 for i in $event_name; do
1754 traced=$($BABELTRACE_BIN $trace_path 2>/dev/null | grep $i | wc -l)
1755 if [ "$traced" -ne 0 ]; then
1756 pass "Validate trace for event $i, $traced events"
1757 else
1758 fail "Validate trace for event $i"
1759 diag "Found $traced occurences of $i"
1760 fi
1761 cnt=$(($cnt + $traced))
1762 done
1763 IFS=$OLDIFS
1764 test $cnt -eq $expected_count
1765 ok $? "Read a total of $cnt events, expected $expected_count"
1766}
1767
c28fcefd
JR
1768function validate_trace_count_range_incl_min_excl_max
1769{
1770 local event_name=$1
1771 local trace_path=$2
1772 local expected_min=$3
1773 local expected_max=$4
1774
1775 which $BABELTRACE_BIN >/dev/null
1776 if [ $? -ne 0 ]; then
1777 skip 0 "Babeltrace binary not found. Skipping trace validation"
1778 fi
1779
1780 cnt=0
1781 OLDIFS=$IFS
1782 IFS=","
1783 for i in $event_name; do
1784 traced=$($BABELTRACE_BIN $trace_path 2>/dev/null | grep $i | wc -l)
1785 if [ "$traced" -ge $expected_min ]; then
1786 pass "Validate trace for event $i, $traced events"
1787 else
1788 fail "Validate trace for event $i"
1789 diag "Found $traced occurences of $i"
1790 fi
1791 cnt=$(($cnt + $traced))
1792 done
1793 IFS=$OLDIFS
1794 test $cnt -lt $expected_max
1795 ok $? "Read a total of $cnt events, expected between [$expected_min, $expected_max["
1796}
1797
086e6add
MD
1798function trace_first_line
1799{
1800 local trace_path=$1
1801
1802 which $BABELTRACE_BIN >/dev/null
1803 if [ $? -ne 0 ]; then
1804 skip 0 "Babeltrace binary not found. Skipping trace validation"
1805 fi
1806
1807 $BABELTRACE_BIN $trace_path 2>/dev/null | head -n 1
1808}
1809
8cfcd41c
MD
1810function validate_trace_exp()
1811{
1812 local event_exp=$1
1813 local trace_path=$2
1814
1815 which $BABELTRACE_BIN >/dev/null
1816 skip $? -ne 0 "Babeltrace binary not found. Skipping trace validation"
1817
49538c32 1818 traced=$($BABELTRACE_BIN $trace_path 2>/dev/null | grep --extended-regexp ${event_exp} | wc -l)
8cfcd41c
MD
1819 if [ "$traced" -ne 0 ]; then
1820 pass "Validate trace for expression '${event_exp}', $traced events"
1821 else
1822 fail "Validate trace for expression '${event_exp}'"
1823 diag "Found $traced occurences of '${event_exp}'"
1824 fi
1825 ret=$?
1826 return $ret
1827}
1828
1829function validate_trace_only_exp()
1830{
1831 local event_exp=$1
1832 local trace_path=$2
1833
1834 which $BABELTRACE_BIN >/dev/null
1835 skip $? -ne 0 "Babeltrace binary not found. Skipping trace matches"
1836
49538c32 1837 local count=$($BABELTRACE_BIN $trace_path | grep --extended-regexp ${event_exp} | wc -l)
8cfcd41c
MD
1838 local total=$($BABELTRACE_BIN $trace_path | wc -l)
1839
1840 if [ "$count" -ne 0 ] && [ "$total" -eq "$count" ]; then
ab95d85d 1841 pass "Trace match with $total for expression '${event_exp}'"
8cfcd41c
MD
1842 else
1843 fail "Trace match"
1844 diag "$total syscall event(s) found, only syscalls matching expression '${event_exp}' ($count occurrences) are expected"
1845 fi
1846 ret=$?
1847 return $ret
1848}
1849
1850function validate_trace_empty()
1851{
1852 local trace_path=$1
1853
1854 which $BABELTRACE_BIN >/dev/null
1855 if [ $? -ne 0 ]; then
1856 skip 0 "Babeltrace binary not found. Skipping trace validation"
1857 fi
1858
2462eee7
JD
1859 events=$($BABELTRACE_BIN $trace_path 2>/dev/null)
1860 ret=$?
1861 if [ $ret -ne 0 ]; then
1862 fail "Failed to parse trace"
1863 return $ret
1864 fi
1865
1866 traced=$(echo -n "$events" | wc -l)
8cfcd41c
MD
1867 if [ "$traced" -eq 0 ]; then
1868 pass "Validate empty trace"
1869 else
1870 fail "Validate empty trace"
1871 diag "Found $traced events in trace"
1872 fi
1873 ret=$?
1874 return $ret
1875}
801236b0 1876
f2489409 1877function validate_directory_empty ()
ba5e8d0a 1878{
f2489409
FD
1879 local trace_path="$1"
1880
d78d26e1
FD
1881 # Do not double quote `$trace_path` below as we want wildcards to be
1882 # expanded.
1883 files="$(ls -A $trace_path)"
f2489409
FD
1884 ret=$?
1885 if [ $ret -ne 0 ]; then
1886 fail "Failed to list content of directory \"$trace_path\""
1887 return $ret
1888 fi
ba5e8d0a 1889
f2489409
FD
1890 nb_files="$(echo -n "$files" | wc -l)"
1891 ok $nb_files "Directory \"$trace_path\" is empty"
ba5e8d0a
MD
1892}
1893
1894function validate_trace_session_ust_empty()
1895{
f2489409 1896 validate_directory_empty "$1"/ust
ba5e8d0a
MD
1897}
1898
1899function validate_trace_session_kernel_empty()
1900{
1901 validate_trace_empty "$1"/kernel
1902}
1903
eded6438 1904function regenerate_metadata ()
801236b0
JD
1905{
1906 local expected_to_fail=$1
1907 local sess_name=$2
1908
eded6438 1909 $TESTDIR/../src/bin/lttng/$LTTNG_BIN regenerate metadata -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
801236b0
JD
1910 ret=$?
1911 if [[ $expected_to_fail -eq "1" ]]; then
1912 test "$ret" -ne "0"
eded6438 1913 ok $? "Expected fail on regenerate metadata $sess_name"
801236b0
JD
1914 else
1915 ok $ret "Metadata regenerate $sess_name"
1916 fi
1917}
1918
eded6438 1919function regenerate_metadata_ok ()
801236b0 1920{
eded6438 1921 regenerate_metadata 0 "$@"
801236b0
JD
1922}
1923
eded6438 1924function regenerate_metadata_fail ()
801236b0 1925{
eded6438 1926 regenerate_metadata 1 "$@"
801236b0 1927}
512eb148 1928
54cd6107
JD
1929function regenerate_statedump ()
1930{
1931 local expected_to_fail=$1
1932 local sess_name=$2
1933
1934 $TESTDIR/../src/bin/lttng/$LTTNG_BIN regenerate statedump -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1935 ret=$?
1936 if [[ $expected_to_fail -eq "1" ]]; then
1937 test "$ret" -ne "0"
1938 ok $? "Expected fail on regenerate statedump $sess_name"
1939 else
5ebb1a9f 1940 ok $ret "Statedump regenerate $sess_name"
54cd6107
JD
1941 fi
1942}
1943
1944function regenerate_statedump_ok ()
1945{
1946 regenerate_statedump 0 "$@"
1947}
1948
1949function regenerate_statedump_fail ()
1950{
1951 regenerate_statedump 1 "$@"
1952}
1953
e7716c6a
JD
1954function rotate_session ()
1955{
1956 local expected_to_fail=$1
1957 local sess_name=$2
1958
1959 $TESTDIR/../src/bin/lttng/$LTTNG_BIN rotate $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1960 ret=$?
1961 if [[ $expected_to_fail -eq "1" ]]; then
1962 test "$ret" -ne "0"
1963 ok $? "Expected fail on rotate session $sess_name"
1964 else
1965 ok $ret "Rotate session $sess_name"
1966 fi
1967}
1968
1969function rotate_session_ok ()
1970{
1971 rotate_session 0 "$@"
1972}
1973
1974function rotate_session_fail ()
1975{
1976 rotate_session 1 "$@"
1977}
1978
512eb148
JD
1979function destructive_tests_enabled ()
1980{
68ad3d2e 1981 if [ "$LTTNG_ENABLE_DESTRUCTIVE_TESTS" = "will-break-my-system" ]; then
512eb148
JD
1982 return 0
1983 else
1984 return 1
1985 fi
1986}
e7716c6a
JD
1987
1988function lttng_enable_rotation_timer ()
1989{
1990 local expected_to_fail=$1
1991 local sess_name=$2
1992 local period=$3
1993
1994 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-rotation -s $sess_name --timer $period 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1995 ret=$?
1996 if [[ $expected_to_fail -eq "1" ]]; then
1997 test "$ret" -ne "0"
9498e289 1998 ok $? "Expected fail when setting periodic rotation ($period) of session $sess_name"
e7716c6a 1999 else
795f9063 2000 ok $ret "Set periodic rotation ($period) of session $sess_name"
e7716c6a
JD
2001 fi
2002}
2003
2004function lttng_enable_rotation_timer_ok ()
2005{
2006 lttng_enable_rotation_timer 0 $@
2007}
2008
2009function lttng_enable_rotation_timer_fail ()
2010{
2011 lttng_enable_rotation_timer 1 $@
2012}
2013
2014function lttng_enable_rotation_size ()
2015{
2016 local expected_to_fail=$1
2017 local sess_name=$2
2018 local size=$3
2019
2020 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-rotation -s $sess_name --size $size 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
2021 ret=$?
2022 if [[ $expected_to_fail -eq "1" ]]; then
2023 test "$ret" -ne "0"
2024 ok $? "Expected fail on rotate session $sess_name"
2025 else
2026 ok $ret "Rotate session $sess_name"
2027 fi
2028}
2029
2030function lttng_enable_rotation_size_ok ()
2031{
2032 lttng_enable_rotation_size 0 $@
2033}
2034
2035function lttng_enable_rotation_size_fail ()
2036{
2037 lttng_enable_rotation_size 1 $@
2038}
c28fcefd
JR
2039
2040function lttng_clear_session ()
2041{
2042 local expected_to_fail=$1
2043 local sess_name=$2
2044
2045 $TESTDIR/../src/bin/lttng/$LTTNG_BIN clear $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
2046 ret=$?
2047 if [[ $expected_to_fail -eq "1" ]]; then
2048 test "$ret" -ne "0"
2049 ok $? "Expected fail on clear session $sess_name"
2050 else
2051 ok $ret "Clear session $sess_name"
2052 fi
2053}
2054
2055function lttng_clear_session_ok ()
2056{
2057 lttng_clear_session 0 $@
2058}
2059
2060function lttng_clear_session_fail ()
2061{
2062 lttng_clear_session 1 $@
2063}
5ee26199
JR
2064
2065function lttng_clear_all ()
2066{
2067 $TESTDIR/../src/bin/lttng/$LTTNG_BIN clear --all 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
2068 ok $? "Clear all lttng sessions"
2069}
This page took 0.170895 seconds and 5 git commands to generate.