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