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