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