Tests: Add get_possible_cpus_count utility
[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
045ce78b 18MI_XSD_MAJOR_VERSION=4
ebc5e6b0 19MI_XSD_MINOR_VERSION=1
045ce78b
JR
20MI_XSD_PATH="$TESTDIR/../src/common/mi-lttng-${MI_XSD_MAJOR_VERSION}.${MI_XSD_MINOR_VERSION}.xsd"
21MI_VALIDATE="$TESTDIR/utils/xml-utils/validate_xml ${MI_XSD_PATH}"
22
23XML_PRETTY="$TESTDIR/utils/xml-utils/pretty_xml"
24XML_EXTRACT="$TESTDIR/utils/xml-utils/extract_xml"
25XML_NODE_CHECK="${XML_EXTRACT} -e"
d3e8f6bb 26
e4061179
JR
27# To match 20201127-175802
28date_time_pattern="[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9]"
29# The size of a long on this system
30system_long_bit_size=$(getconf LONG_BIT)
31
fd4dfcec
DG
32# Minimal kernel version supported for session daemon tests
33KERNEL_MAJOR_VERSION=2
34KERNEL_MINOR_VERSION=6
35KERNEL_PATCHLEVEL_VERSION=27
36
651b8bb3
JG
37# We set the default UST register timeout and network and app socket timeout to
38# "wait forever", so that basic tests don't have to worry about hitting
39# timeouts on busy systems. Specialized tests should test those corner-cases.
629b9335 40export LTTNG_UST_REGISTER_TIMEOUT=-1
651b8bb3
JG
41export LTTNG_NETWORK_SOCKET_TIMEOUT=-1
42export LTTNG_APP_SOCKET_TIMEOUT=-1
629b9335 43
fd7fe1a8
JR
44# We set the default lttng-sessiond path to /bin/true to prevent the spawning
45# of a daemonized sessiond. This is necessary since 'lttng create' will spawn
46# its own sessiond if none is running. It also ensures that 'lttng create'
47# fails when no sessiond is running.
48export LTTNG_SESSIOND_PATH="/bin/true"
49
29655db7
CB
50source $TESTDIR/utils/tap/tap.sh
51
65e663fa 52if [ -z ${LTTNG_TEST_TEARDOWN_TIMEOUT+x} ]; then
529bb942
MD
53 LTTNG_TEST_TEARDOWN_TIMEOUT=60
54fi
55
a0f8e310
JR
56# Enable job monitor mode.
57# Here we are mostly interested in the following from the monitor mode:
58# All processes run in a separate process group.
59# This allows us to ensure that all subprocesses from all background tasks are
60# cleaned up correctly using signal to process group id.
61set -m
62
63kill_background_jobs ()
64{
65 local pids
66 pids=$(jobs -p)
67
68 if [ -z "$pids" ]; then
69 # Empty
70 return 0
71 fi
72
73 while read -r pid;
74 do
75 # Use negative number to send the signal to the process group.
76 # This ensure that any subprocesses receive the signal.
77 # /dev/null is used since there is an acceptable race between
78 # the moments the pids are listed and the moment we send a
79 # signal.
80 kill -SIGTERM -- "-$pid" 2>/dev/null
81 done <<< "$pids"
82}
83
84function cleanup ()
1c362dc7 85{
529bb942 86 # Try to kill daemons gracefully
a0f8e310
JR
87 stop_lttng_relayd_cleanup SIGTERM $LTTNG_TEST_TEARDOWN_TIMEOUT
88 stop_lttng_sessiond_cleanup SIGTERM $LTTNG_TEST_TEARDOWN_TIMEOUT
529bb942
MD
89
90 # If daemons are still present, forcibly kill them
a0f8e310
JR
91 stop_lttng_relayd_cleanup SIGKILL $LTTNG_TEST_TEARDOWN_TIMEOUT
92 stop_lttng_sessiond_cleanup SIGKILL $LTTNG_TEST_TEARDOWN_TIMEOUT
93 stop_lttng_consumerd_cleanup SIGKILL $LTTNG_TEST_TEARDOWN_TIMEOUT
94
95 kill_background_jobs
96}
97
98function full_cleanup ()
99{
100 cleanup
4e8ea4fa 101 exit 1
1c362dc7
JR
102}
103
a0f8e310
JR
104function LTTNG_BAIL_OUT ()
105{
106 cleanup
107 BAIL_OUT "$@"
108}
109
27b667f7
MD
110function null_pipes ()
111{
112 exec 0>/dev/null
113 exec 1>/dev/null
114 exec 2>/dev/null
115}
1c362dc7
JR
116
117trap full_cleanup SIGINT SIGTERM
118
27b667f7
MD
119# perl prove closes its child pipes before giving it a chance to run its
120# signal trap handlers. Redirect pipes to /dev/null if SIGPIPE is caught
121# to allow those trap handlers to proceed.
122
123trap null_pipes SIGPIPE
124
7cb78e2f
JR
125# Check pgrep from env, default to pgrep if none
126if [ -z "$PGREP" ]; then
127 PGREP=pgrep
128fi
129
130# Due to the renaming of threads we need to use the full command (pgrep -f) to
131# identify the pids for multiple lttng related processes. The problem with "pgrep
132# -f" is that it ends up also looking at the arguments. We use a two stage
133# lookup. The first one is using "pgrep -f" yielding potential candidate.
134# The second on perform grep on the basename of the first field of the
135# /proc/pid/cmdline of the previously identified pids. The first field
136# correspond to the actual command.
137function lttng_pgrep ()
138{
139 local pattern=$1
140 local possible_pids
141 local full_command_no_argument
142 local command_basename
143
144 possible_pids=$($PGREP -f "$pattern")
145 if [ -z "$possible_pids" ]; then
146 return 0
147 fi
148
149 while IFS= read -r pid ; do
150 # /proc/pid/cmdline is null separated.
00d1ff64 151 if full_command_no_argument=$(cut -d '' -f 1 2>/dev/null < /proc/"$pid"/cmdline); then
7cb78e2f
JR
152 command_basename=$(basename "$full_command_no_argument")
153 if grep -q "$pattern" <<< "$command_basename"; then
154 echo "$pid"
155 fi
156 fi
157 done <<< "$possible_pids"
158 return 0
159}
160
fec81a7e
CB
161function print_ok ()
162{
163 # Check if we are a terminal
164 if [ -t 1 ]; then
165 echo -e "\e[1;32mOK\e[0m"
166 else
167 echo -e "OK"
168 fi
169}
170
171function print_fail ()
172{
173 # Check if we are a terminal
174 if [ -t 1 ]; then
175 echo -e "\e[1;31mFAIL\e[0m"
176 else
177 echo -e "FAIL"
178 fi
179}
180
181function print_test_banner ()
182{
7d0ad314 183 local desc="$1"
29655db7 184 diag "$desc"
fec81a7e
CB
185}
186
fd4dfcec
DG
187function validate_kernel_version ()
188{
7d0ad314 189 local kern_version=($(uname -r | awk -F. '{ printf("%d.%d.%d\n",$1,$2,$3); }' | tr '.' '\n'))
fd4dfcec
DG
190 if [ ${kern_version[0]} -gt $KERNEL_MAJOR_VERSION ]; then
191 return 0
192 fi
193 if [ ${kern_version[1]} -gt $KERNEL_MINOR_VERSION ]; then
194 return 0
195 fi
196 if [ ${kern_version[2]} -ge $KERNEL_PATCHLEVEL_VERSION ]; then
197 return 0
198 fi
199 return 1
200}
201
9ac429ef 202# Generate a random string
f4e40ab6
DG
203# $1 = number of characters; defaults to 16
204# $2 = include special characters; 1 = yes, 0 = no; defaults to yes
9ac429ef 205function randstring()
f4e40ab6
DG
206{
207 [ "$2" == "0" ] && CHAR="[:alnum:]" || CHAR="[:graph:]"
b89c3a68 208 cat /dev/urandom 2>/dev/null | tr -cd "$CHAR" 2>/dev/null | head -c ${1:-16} 2>/dev/null
f4e40ab6
DG
209 echo
210}
211
b4b790cd
OD
212# Helpers for get_possible_cpus.
213function get_possible_cpus_count_from_sysfs_possible_mask()
214{
215 local max_possible_cpu_id=$(cut -d '-' -f 2 < /sys/devices/system/cpu/possible)
216 echo $((max_possible_cpu_id+1))
217}
218
219function get_max_cpus_count_from_sysfs_cpu_directories()
220{
221 local max_possible_cpu_id= \
222 $(find /sys/devices/system/cpu/ -mindepth 1 -maxdepth 1 -regex ".+cpu[0-9]+" | \
223 sed -e 's/cpu//g' | \
224 awk -F '/' '{ if ($NF > N) N = $NF } END { print N }')
225 echo $((max_possible_cpu_id+1))
226}
227
228# Return the number of possible CPUs.
229function get_possible_cpus_count()
230{
231 local possible_cpus_count=$(get_possible_cpus_count_from_sysfs_possible_mask)
232
233 if [ $? -ne 0 ]; then
234 possible_cpus_count=$(get_max_cpus_count_from_sysfs_cpu_directories)
235 local configured_cpus_count=$(getconf _NPROCESSORS_CONF)
236 possible_cpus_count=$(($configured_cpus_count > $possible_cpus_count \
237 ? $configured_cpus_count \
238 : $possible_cpus_count))
239 fi
240
241 echo $possible_cpus_count
242}
243
9e136324
JG
244# Return the number of _configured_ CPUs.
245function conf_proc_count()
246{
247 getconf _NPROCESSORS_CONF
248 if [ $? -ne 0 ]; then
249 diag "Failed to get the number of configured CPUs"
250 fi
251 echo
252}
253
9c8a3964
JR
254# Check if base lttng-modules are present.
255# Bail out on failure
256function validate_lttng_modules_present ()
257{
03f11686 258 # Check for loadable modules.
9c8a3964 259 modprobe -n lttng-tracer 2>/dev/null
03f11686
FD
260 if [ $? -eq 0 ]; then
261 return 0
9c8a3964 262 fi
03f11686
FD
263
264 # Check for builtin modules.
265 ls /proc/lttng > /dev/null 2>&1
266 if [ $? -eq 0 ]; then
267 return 0
268 fi
269
a0f8e310 270 LTTNG_BAIL_OUT "LTTng modules not detected."
9c8a3964
JR
271}
272
7f6639c2
MJ
273# Run the lttng binary.
274#
275# The first two arguments are stdout and stderr redirect paths, respectively.
276# The rest of the arguments are forwarded to the lttng binary
277function _run_lttng_cmd
278{
279 local stdout_dest="$1"
280 local stderr_dest="$2"
281 shift 2
282
283 diag "$TESTDIR/../src/bin/lttng/$LTTNG_BIN $*"
284 $TESTDIR/../src/bin/lttng/$LTTNG_BIN "$@" 1> "$stdout_dest" 2> "$stderr_dest"
285}
286
4a180d9f 287function enable_kernel_lttng_event
f4e40ab6 288{
854382b8
JR
289 local withtap="$1"
290 local expected_to_fail="$2"
291 local sess_name="$3"
292 local event_name="$4"
293 local channel_name="$5"
f4e40ab6 294
4a180d9f 295 if [ -z "$event_name" ]; then
f4e40ab6 296 # Enable all event if no event name specified
29655db7 297 event_name="-a"
f4e40ab6
DG
298 fi
299
4a180d9f 300 if [ -z "$channel_name" ]; then
07b86b52
JD
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 enable-event "$event_name" $chan -s $sess_name -k 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
4a180d9f
MD
308 ret=$?
309 if [[ $expected_to_fail -eq "1" ]]; then
310 test $ret -ne "0"
854382b8
JR
311 ret=$?
312 if [ $withtap -eq "1" ]; then
313 ok $ret "Enable kernel event $event_name for session $session_name on channel $channel_name failed as expected"
314 fi
4a180d9f 315 else
854382b8
JR
316 if [ $withtap -eq "1" ]; then
317 ok $ret "Enable kernel event $event_name for session $sess_name"
318 fi
4a180d9f
MD
319 fi
320}
321
322function enable_kernel_lttng_event_ok ()
323{
854382b8 324 enable_kernel_lttng_event 1 0 "$@"
4a180d9f
MD
325}
326
327function enable_kernel_lttng_event_fail ()
328{
854382b8
JR
329 enable_kernel_lttng_event 1 1 "$@"
330}
331
332function enable_kernel_lttng_event_notap ()
333{
334 enable_kernel_lttng_event 0 0 "$@"
4a180d9f
MD
335}
336
337# Old interface
338function lttng_enable_kernel_event
339{
340 enable_kernel_lttng_event_ok "$@"
f4e40ab6
DG
341}
342
8cfcd41c
MD
343function lttng_enable_kernel_syscall()
344{
345 local expected_to_fail=$1
346 local sess_name=$2
347 local syscall_name=$3
348 local channel_name=$4
349
350 if [ -z $syscall_name ]; then
351 # Enable all event if no syscall name specified
352 syscall_name="-a"
353 fi
354
355 if [ -z $channel_name ]; then
356 # default channel if none specified
357 chan=""
358 else
359 chan="-c $channel_name"
360 fi
361
2cf48300 362 $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
363 ret=$?
364 if [[ $expected_to_fail -eq "1" ]]; then
365 test $ret -ne "0"
366 ok $? "Enable kernel syscall $syscall_name for session $sess_name on channel $channel_name fail as expected"
367 else
368 ok $ret "Enable kernel syscall $syscall_name for session $sess_name on channel $channel_name"
369 fi
370}
371
372function lttng_enable_kernel_syscall_ok()
373{
421b83dc 374 lttng_enable_kernel_syscall 0 "$@"
8cfcd41c
MD
375}
376
377function lttng_enable_kernel_syscall_fail()
378{
421b83dc 379 lttng_enable_kernel_syscall 1 "$@"
8cfcd41c
MD
380}
381
382function lttng_disable_kernel_syscall()
383{
384 local expected_to_fail=$1
385 local sess_name=$2
386 local syscall_name=$3
387 local channel_name=$4
388
389 if [ -z $syscall_name ]; then
390 # Enable all event if no syscall name specified
391 syscall_name="-a"
392 fi
393
394 if [ -z $channel_name ]; then
395 # default channel if none specified
396 chan=""
397 else
398 chan="-c $channel_name"
399 fi
400
2cf48300 401 $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
402
403 ret=$?
404 if [[ $expected_to_fail -eq "1" ]]; then
405 test $ret -ne "0"
34ab15c5 406 ok $? "Disable kernel syscall $syscall_name for session $sess_name on channel $channel_name failed as expected"
8cfcd41c
MD
407 else
408 ok $ret "Disable kernel syscall $syscall_name for session $sess_name on channel $channel_name"
409 fi
410}
411
412function lttng_disable_kernel_syscall_ok()
413{
421b83dc 414 lttng_disable_kernel_syscall 0 "$@"
8cfcd41c
MD
415}
416
417function lttng_disable_kernel_syscall_fail()
418{
421b83dc 419 lttng_disable_kernel_syscall 1 "$@"
8cfcd41c
MD
420}
421
b6d14cf3
FD
422function lttng_enable_kernel_function_event ()
423{
424 local expected_to_fail="$1"
425 local sess_name="$2"
426 local target="$3"
427 local event_name="$4"
428
429 "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" enable-event --kernel --function="$target" "$event_name" -s "$sess_name" > "$OUTPUT_DEST" 2> "$ERROR_OUTPUT_DEST"
430 ret=$?
431 if [[ $expected_to_fail -eq "1" ]]; then
432 test $ret -ne "0"
433 ok $? "Enable kernel function event for session $sess_name failed as expected"
434 else
435 ok $ret "Enable kernel function event for session $sess_name"
436 fi
437}
438
439function lttng_enable_kernel_function_event_ok ()
440{
441 lttng_enable_kernel_function_event 0 "$@"
442}
443
a9c2df2b
FD
444function lttng_enable_kernel_userspace_probe_event ()
445{
446 local expected_to_fail="$1"
447 local sess_name="$2"
448 local target="$3"
449 local event_name="$4"
450
451 "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" enable-event --kernel --userspace-probe="$target" "$event_name" -s "$sess_name" > "$OUTPUT_DEST" 2> "$ERROR_OUTPUT_DEST"
452 ret=$?
453 if [[ $expected_to_fail -eq "1" ]]; then
454 test $ret -ne "0"
455 ok $? "Enable kernel userspace probe event for session $sess_name failed as expected"
456 else
457 ok $ret "Enable kernel userspace probe event for session $sess_name"
458 fi
459}
460
461function lttng_enable_kernel_userspace_probe_event_fail ()
462{
463 lttng_enable_kernel_userspace_probe_event 1 "$@"
464}
465
466function lttng_enable_kernel_userspace_probe_event_ok ()
467{
468 lttng_enable_kernel_userspace_probe_event 0 "$@"
469}
470
471function disable_kernel_lttng_userspace_probe_event_ok ()
472{
473 local sess_name="$1"
474 local event_name="$2"
475
476 "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" disable-event --kernel "$event_name" -s "$sess_name" > "$OUTPUT_DEST" 2> "$ERROR_OUTPUT_DEST"
477 ok $? "Disable kernel event $target for session $sess_name"
478}
d96f6315
MD
479function lttng_enable_kernel_channel()
480{
854382b8
JR
481 local withtap=$1
482 local expected_to_fail=$2
483 local sess_name=$3
484 local channel_name=$4
c28fcefd 485 local opts="${@:5}"
d96f6315 486
c28fcefd 487 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel -k $channel_name -s $sess_name $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
d96f6315
MD
488 ret=$?
489 if [[ $expected_to_fail -eq "1" ]]; then
490 test "$ret" -ne "0"
854382b8
JR
491 ret=$?
492 if [ $withtap -eq "1" ]; then
493 ok $ret "Enable channel $channel_name for session $sess_name failed as expected"
494 fi
d96f6315 495 else
854382b8
JR
496 if [ $withtap -eq "1" ]; then
497 ok $ret "Enable channel $channel_name for session $sess_name"
498 fi
d96f6315
MD
499 fi
500}
501
502function lttng_enable_kernel_channel_ok()
503{
854382b8 504 lttng_enable_kernel_channel 1 0 "$@"
d96f6315
MD
505}
506
507function lttng_enable_kernel_channel_fail()
508{
854382b8
JR
509 lttng_enable_kernel_channel 1 1 "$@"
510}
511
512function lttng_enable_kernel_channel_notap()
513{
514 lttng_enable_kernel_channel 0 0 "$@"
515}
516
517function enable_kernel_lttng_channel_ok()
518{
519 lttng_enable_kernel_channel 1 0 "$@"
d96f6315
MD
520}
521
522function lttng_disable_kernel_channel()
523{
524 local expected_to_fail=$1
525 local sess_name=$2
526 local channel_name=$3
527
2cf48300 528 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-channel -k $channel_name -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
d96f6315
MD
529 ret=$?
530 if [[ $expected_to_fail -eq "1" ]]; then
531 test "$ret" -ne "0"
34ab15c5 532 ok $? "Disable channel $channel_name for session $sess_name failed as expected"
d96f6315 533 else
34ab15c5 534 ok $ret "Disable channel $channel_name for session $sess_name"
d96f6315
MD
535 fi
536}
537
538function lttng_disable_kernel_channel_ok()
539{
421b83dc 540 lttng_disable_kernel_channel 0 "$@"
d96f6315
MD
541}
542
543function lttng_disable_kernel_channel_fail()
544{
421b83dc 545 lttng_disable_kernel_channel 1 "$@"
d96f6315
MD
546}
547
05aa48da 548function start_lttng_relayd_opt()
f4e40ab6 549{
05aa48da 550 local withtap=$1
f3630ec4
JR
551 local process_mode=$2
552 local opt=$3
173af62f 553
529bb942 554 DIR=$(readlink -f "$TESTDIR")
f4e40ab6 555
7cb78e2f 556 if [ -z $(lttng_pgrep "$RELAYD_MATCH") ]; then
529bb942 557 # shellcheck disable=SC2086
f3630ec4
JR
558 $DIR/../src/bin/lttng-relayd/$RELAYD_BIN $process_mode $opt 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
559 #$DIR/../src/bin/lttng-relayd/$RELAYD_BIN $opt -vvv >>/tmp/relayd.log 2>&1 &
f4e40ab6 560 if [ $? -eq 1 ]; then
f3630ec4
JR
561 if [ $withtap -eq "1" ]; then
562 fail "Start lttng-relayd (process mode: $process_mode opt: $opt)"
05aa48da 563 fi
f4e40ab6
DG
564 return 1
565 else
f3630ec4
JR
566 if [ $withtap -eq "1" ]; then
567 pass "Start lttng-relayd (process mode: $process_mode opt: $opt)"
05aa48da 568 fi
f4e40ab6
DG
569 fi
570 else
29655db7 571 pass "Start lttng-relayd (opt: $opt)"
f4e40ab6
DG
572 fi
573}
574
05aa48da 575function start_lttng_relayd()
f4e40ab6 576{
f3630ec4 577 start_lttng_relayd_opt 1 "-b" "$@"
05aa48da
MD
578}
579
580function start_lttng_relayd_notap()
581{
f3630ec4 582 start_lttng_relayd_opt 0 "-b" "$@"
05aa48da
MD
583}
584
585function stop_lttng_relayd_opt()
586{
587 local withtap=$1
a0f8e310
JR
588 local is_cleanup=$2
589 local signal=$3
590 local timeout_s=$4
591 local dtimeleft_s=
592 local retval=0
593 local pids
05aa48da 594
529bb942
MD
595 if [ -z "$signal" ]; then
596 signal="SIGTERM"
05aa48da 597 fi
29655db7 598
529bb942
MD
599
600 # Multiply time by 2 to simplify integer arithmetic
601 if [ -n "$timeout_s" ]; then
602 dtimeleft_s=$((timeout_s * 2))
603 fi
604
529bb942 605
7cb78e2f 606 pids=$(lttng_pgrep "$RELAYD_MATCH")
529bb942 607 if [ -z "$pids" ]; then
a0f8e310
JR
608 if [ "$is_cleanup" -eq 1 ]; then
609 :
610 elif [ "$withtap" -eq "1" ]; then
611 fail "No relay daemon to kill"
612 else
613 LTTNG_BAIL_OUT "No relay daemon to kill"
529bb942
MD
614 fi
615 return 0
616 fi
617
618 diag "Killing (signal $signal) lttng-relayd (pid: $pids)"
619
620 # shellcheck disable=SC2086
621 if ! kill -s $signal $pids 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST; then
622 retval=1
623 if [ "$withtap" -eq "1" ]; then
05aa48da
MD
624 fail "Kill relay daemon"
625 fi
05aa48da 626 else
f4e40ab6
DG
627 out=1
628 while [ -n "$out" ]; do
7cb78e2f 629 out=$(lttng_pgrep "$RELAYD_MATCH")
529bb942
MD
630 if [ -n "$dtimeleft_s" ]; then
631 if [ $dtimeleft_s -lt 0 ]; then
632 out=
633 retval=1
634 fi
635 dtimeleft_s=$((dtimeleft_s - 1))
636 fi
f4e40ab6
DG
637 sleep 0.5
638 done
529bb942
MD
639 if [ "$withtap" -eq "1" ]; then
640 if [ "$retval" -eq "0" ]; then
641 pass "Wait after kill relay daemon"
642 else
643 fail "Wait after kill relay daemon"
644 fi
05aa48da 645 fi
1fb23888
MD
646 fi
647 return $retval
648}
649
05aa48da 650function stop_lttng_relayd()
1fb23888 651{
a0f8e310 652 stop_lttng_relayd_opt 1 0 "$@"
05aa48da 653}
1fb23888 654
05aa48da
MD
655function stop_lttng_relayd_notap()
656{
a0f8e310
JR
657 stop_lttng_relayd_opt 0 0 "$@"
658}
659
660function stop_lttng_relayd_cleanup()
661{
662 stop_lttng_relayd_opt 0 1 "$@"
f4e40ab6
DG
663}
664
05aa48da
MD
665#First arg: show tap output
666#Second argument: load path for automatic loading
667function start_lttng_sessiond_opt()
355f483d 668{
05aa48da
MD
669 local withtap=$1
670 local load_path=$2
8d51ddbc 671
1d302e3d
JR
672 # The rest of the arguments will be passed directly to lttng-sessiond.
673 shift 2
674
4b01971f 675 local env_vars=""
b916da6b 676 local consumerd=""
b916da6b 677
529bb942
MD
678 local long_bit_value=
679 long_bit_value=$(getconf LONG_BIT)
680
681 if [ -n "$TEST_NO_SESSIOND" ] && [ "$TEST_NO_SESSIOND" == "1" ]; then
355f483d
DG
682 # Env variable requested no session daemon
683 return
684 fi
685
529bb942 686 DIR=$(readlink -f "$TESTDIR")
b916da6b
JR
687
688 # Get long_bit value for 32/64 consumerd
689 case "$long_bit_value" in
690 32)
691 consumerd="--consumerd32-path=$DIR/../src/bin/lttng-consumerd/lttng-consumerd"
692 ;;
693 64)
694 consumerd="--consumerd64-path=$DIR/../src/bin/lttng-consumerd/lttng-consumerd"
695 ;;
696 *)
697 return
698 ;;
699 esac
700
4b01971f
JR
701 # Check for env. variable. Allow the use of LD_PRELOAD etc.
702 if [[ "x${LTTNG_SESSIOND_ENV_VARS}" != "x" ]]; then
529bb942 703 env_vars="${LTTNG_SESSIOND_ENV_VARS} "
4b01971f 704 fi
529bb942 705 env_vars="${env_vars}$DIR/../src/bin/lttng-sessiond/$SESSIOND_BIN"
4b01971f 706
529bb942 707 if ! validate_kernel_version; then
29655db7 708 fail "Start session daemon"
a0f8e310 709 LTTNG_BAIL_OUT "*** Kernel too old for session daemon tests ***"
355f483d
DG
710 fi
711
529bb942 712 : "${LTTNG_SESSION_CONFIG_XSD_PATH="${DIR}/../src/common/config/"}"
d3d97763 713 export LTTNG_SESSION_CONFIG_XSD_PATH
29655db7 714
7cb78e2f 715 if [ -z "$(lttng_pgrep "${SESSIOND_MATCH}")" ]; then
8d51ddbc 716 # Have a load path ?
05aa48da 717 if [ -n "$load_path" ]; then
529bb942 718 # shellcheck disable=SC2086
1d302e3d 719 env $env_vars --load "$load_path" --background "$consumerd" "$@"
8d51ddbc 720 else
529bb942 721 # shellcheck disable=SC2086
1d302e3d 722 env $env_vars --background "$consumerd" "$@"
8d51ddbc 723 fi
0fc2834c 724 #$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 725 status=$?
529bb942 726 if [ "$withtap" -eq "1" ]; then
05aa48da
MD
727 ok $status "Start session daemon"
728 fi
29655db7 729 fi
355f483d
DG
730}
731
05aa48da
MD
732function start_lttng_sessiond()
733{
734 start_lttng_sessiond_opt 1 "$@"
735}
736
737function start_lttng_sessiond_notap()
d3e8f6bb 738{
05aa48da
MD
739 start_lttng_sessiond_opt 0 "$@"
740}
741
742function stop_lttng_sessiond_opt()
743{
744 local withtap=$1
a0f8e310
JR
745 local is_cleanup=$2
746 local signal=$3
747 local timeout_s=$4
748 local dtimeleft_s=
749 local retval=0
750 local runas_pids
751 local pids
05aa48da 752
529bb942
MD
753 if [ -z "$signal" ]; then
754 signal=SIGTERM
755 fi
756
529bb942
MD
757 # Multiply time by 2 to simplify integer arithmetic
758 if [ -n "$timeout_s" ]; then
759 dtimeleft_s=$((timeout_s * 2))
760 fi
761
762 if [ -n "$TEST_NO_SESSIOND" ] && [ "$TEST_NO_SESSIOND" == "1" ]; then
355f483d 763 # Env variable requested no session daemon
529bb942 764 return 0
355f483d
DG
765 fi
766
7cb78e2f 767 runas_pids=$(lttng_pgrep "$RUNAS_MATCH")
7cb78e2f 768 pids=$(lttng_pgrep "$SESSIOND_MATCH")
529bb942
MD
769
770 if [ -n "$runas_pids" ]; then
771 pids="$pids $runas_pids"
4c80129b 772 fi
529bb942
MD
773
774 if [ -z "$pids" ]; then
7539dcec 775 if [ "$is_cleanup" -eq 1 ]; then
a0f8e310
JR
776 :
777 elif [ "$withtap" -eq "1" ]; then
d3d783bb
FD
778 fail "No session daemon to kill"
779 else
a0f8e310 780 LTTNG_BAIL_OUT "No session daemon to kill"
529bb942
MD
781 fi
782 return 0
8490897a 783 fi
29655db7 784
529bb942
MD
785 diag "Killing (signal $signal) $SESSIOND_BIN and lt-$SESSIOND_BIN pids: $(echo "$pids" | tr '\n' ' ')"
786
787 # shellcheck disable=SC2086
788 if ! kill -s $signal $pids 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST; then
789 retval=1
790 if [ "$withtap" -eq "1" ]; then
05aa48da
MD
791 fail "Kill sessions daemon"
792 fi
d3e8f6bb 793 else
5fa32580
DG
794 out=1
795 while [ -n "$out" ]; do
7cb78e2f 796 out=$(lttng_pgrep "${SESSIOND_MATCH}")
529bb942
MD
797 if [ -n "$dtimeleft_s" ]; then
798 if [ $dtimeleft_s -lt 0 ]; then
799 out=
800 retval=1
801 fi
802 dtimeleft_s=$((dtimeleft_s - 1))
803 fi
5fa32580
DG
804 sleep 0.5
805 done
f7613992
MD
806 out=1
807 while [ -n "$out" ]; do
7cb78e2f 808 out=$(lttng_pgrep "$CONSUMERD_MATCH")
529bb942
MD
809 if [ -n "$dtimeleft_s" ]; then
810 if [ $dtimeleft_s -lt 0 ]; then
811 out=
812 retval=1
813 fi
814 dtimeleft_s=$((dtimeleft_s - 1))
815 fi
f7613992
MD
816 sleep 0.5
817 done
1c362dc7 818
529bb942
MD
819 if [ "$withtap" -eq "1" ]; then
820 if [ "$retval" -eq "0" ]; then
821 pass "Wait after kill session daemon"
822 else
823 fail "Wait after kill session daemon"
824 fi
05aa48da 825 fi
d3e8f6bb 826 fi
529bb942
MD
827 if [ "$signal" = "SIGKILL" ]; then
828 if [ "$(id -u)" -eq "0" ]; then
829 local modules=
830 modules="$(lsmod | grep ^lttng | awk '{print $1}')"
831
832 if [ -n "$modules" ]; then
833 diag "Unloading all LTTng modules"
d0e263e7 834 modprobe --remove "$modules"
529bb942
MD
835 fi
836 fi
837 fi
838
839 return $retval
d3e8f6bb
DG
840}
841
05aa48da
MD
842function stop_lttng_sessiond()
843{
a0f8e310 844 stop_lttng_sessiond_opt 1 0 "$@"
05aa48da
MD
845}
846
847function stop_lttng_sessiond_notap()
848{
a0f8e310
JR
849 stop_lttng_sessiond_opt 0 0 "$@"
850}
851
852function stop_lttng_sessiond_cleanup()
853{
854 stop_lttng_sessiond_opt 0 1 "$@"
05aa48da
MD
855}
856
8490897a
MD
857function sigstop_lttng_sessiond_opt()
858{
859 local withtap=$1
860 local signal=SIGSTOP
a0f8e310 861 local pids
8490897a 862
529bb942 863 if [ -n "$TEST_NO_SESSIOND" ] && [ "$TEST_NO_SESSIOND" == "1" ]; then
8490897a
MD
864 # Env variable requested no session daemon
865 return
866 fi
867
a0f8e310 868 pids="$(lttng_pgrep "${SESSIOND_MATCH}") $(lttng_pgrep "$RUNAS_MATCH")"
8490897a 869
529bb942 870 if [ "$withtap" -eq "1" ]; then
a0f8e310 871 diag "Sending SIGSTOP to lt-$SESSIOND_BIN and $SESSIOND_BIN pids: $(echo "$pids" | tr '\n' ' ')"
8490897a 872 fi
8490897a 873
529bb942 874 # shellcheck disable=SC2086
a0f8e310 875 if ! kill -s $signal $pids 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST; then
529bb942 876 if [ "$withtap" -eq "1" ]; then
8490897a
MD
877 fail "Sending SIGSTOP to session daemon"
878 fi
879 else
880 out=1
881 while [ $out -ne 0 ]; do
a0f8e310 882 pids="$(lttng_pgrep "$SESSIOND_MATCH")"
8490897a
MD
883
884 # Wait until state becomes stopped for session
885 # daemon(s).
886 out=0
a0f8e310 887 for sessiond_pid in $pids; do
529bb942 888 state="$(ps -p "$sessiond_pid" -o state= )"
8490897a
MD
889 if [[ -n "$state" && "$state" != "T" ]]; then
890 out=1
891 fi
892 done
893 sleep 0.5
894 done
529bb942 895 if [ "$withtap" -eq "1" ]; then
8490897a
MD
896 pass "Sending SIGSTOP to session daemon"
897 fi
898 fi
899}
900
901function sigstop_lttng_sessiond()
902{
903 sigstop_lttng_sessiond_opt 1 "$@"
904}
905
906function sigstop_lttng_sessiond_notap()
907{
908 sigstop_lttng_sessiond_opt 0 "$@"
909}
910
4c80129b
JR
911function stop_lttng_consumerd_opt()
912{
913 local withtap=$1
a0f8e310
JR
914 local is_cleanup=$2
915 local signal=$3
916 local timeout_s=$4
917 local dtimeleft_s=
918 local retval=0
919 local pids
4c80129b 920
529bb942
MD
921 if [ -z "$signal" ]; then
922 signal=SIGTERM
923 fi
924
529bb942
MD
925 # Multiply time by 2 to simplify integer arithmetic
926 if [ -n "$timeout_s" ]; then
927 dtimeleft_s=$((timeout_s * 2))
4c80129b
JR
928 fi
929
a0f8e310 930 pids="$(lttng_pgrep "$CONSUMERD_MATCH")"
529bb942 931
a0f8e310
JR
932 if [ -z "$pids" ]; then
933 if [ "$is_cleanup" -eq 1 ]; then
934 :
935 elif [ "$withtap" -eq "1" ]; then
936 fail "No consumerd daemon to kill"
937 else
938 LTTNG_BAIL_OUT "No consumerd daemon to kill"
529bb942
MD
939 fi
940 return 0
4c80129b 941 fi
3355fd4d 942
a0f8e310 943 diag "Killing (signal $signal) $CONSUMERD_BIN pids: $(echo "$pids" | tr '\n' ' ')"
4c80129b 944
529bb942 945 # shellcheck disable=SC2086
a0f8e310 946 if ! kill -s $signal $pids 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST; then
529bb942
MD
947 retval=1
948 if [ "$withtap" -eq "1" ]; then
4c80129b
JR
949 fail "Kill consumer daemon"
950 fi
4c80129b
JR
951 else
952 out=1
953 while [ $out -ne 0 ]; do
a0f8e310 954 pids="$(lttng_pgrep "$CONSUMERD_MATCH")"
4c80129b
JR
955
956 # If consumerds are still present check their status.
957 # A zombie status qualifies the consumerd as *killed*
958 out=0
a0f8e310 959 for consumer_pid in $pids; do
529bb942 960 state="$(ps -p "$consumer_pid" -o state= )"
4c80129b
JR
961 if [[ -n "$state" && "$state" != "Z" ]]; then
962 out=1
963 fi
964 done
529bb942
MD
965 if [ -n "$dtimeleft_s" ]; then
966 if [ $dtimeleft_s -lt 0 ]; then
967 out=0
968 retval=1
969 fi
970 dtimeleft_s=$((dtimeleft_s - 1))
971 fi
4c80129b
JR
972 sleep 0.5
973 done
529bb942
MD
974 if [ "$withtap" -eq "1" ]; then
975 if [ "$retval" -eq "0" ]; then
976 pass "Wait after kill consumer daemon"
977 else
978 fail "Wait after kill consumer daemon"
979 fi
4c80129b
JR
980 fi
981 fi
529bb942 982
4c80129b
JR
983 return $retval
984}
985
986function stop_lttng_consumerd()
987{
a0f8e310 988 stop_lttng_consumerd_opt 1 0 "$@"
4c80129b
JR
989}
990
991function stop_lttng_consumerd_notap()
992{
a0f8e310
JR
993 stop_lttng_consumerd_opt 0 0 "$@"
994}
995
996function stop_lttng_consumerd_cleanup()
997{
998 stop_lttng_consumerd_opt 0 1 "$@"
4c80129b
JR
999}
1000
8490897a
MD
1001function sigstop_lttng_consumerd_opt()
1002{
1003 local withtap=$1
1004 local signal=SIGSTOP
a0f8e310 1005 local pids
8490897a 1006
a0f8e310 1007 pids="$(lttng_pgrep "$CONSUMERD_MATCH")"
8490897a 1008
a0f8e310 1009 diag "Sending SIGSTOP to $CONSUMERD_BIN pids: $(echo "$pids" | tr '\n' ' ')"
8490897a 1010
529bb942 1011 # shellcheck disable=SC2086
a0f8e310 1012 kill -s $signal $pids 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
8490897a 1013 retval=$?
8490897a 1014
529bb942
MD
1015 if [ $retval -eq 1 ]; then
1016 if [ "$withtap" -eq "1" ]; then
8490897a
MD
1017 fail "Sending SIGSTOP to consumer daemon"
1018 fi
1019 return 1
1020 else
1021 out=1
1022 while [ $out -ne 0 ]; do
a0f8e310 1023 pids="$(lttng_pgrep "$CONSUMERD_MATCH")"
8490897a
MD
1024
1025 # Wait until state becomes stopped for all
1026 # consumers.
1027 out=0
a0f8e310 1028 for consumer_pid in $pids; do
529bb942 1029 state="$(ps -p "$consumer_pid" -o state= )"
8490897a
MD
1030 if [[ -n "$state" && "$state" != "T" ]]; then
1031 out=1
1032 fi
1033 done
1034 sleep 0.5
1035 done
529bb942 1036 if [ "$withtap" -eq "1" ]; then
8490897a
MD
1037 pass "Sending SIGSTOP to consumer daemon"
1038 fi
1039 fi
1040 return $retval
1041}
1042
1043function sigstop_lttng_consumerd()
1044{
1045 sigstop_lttng_consumerd_opt 1 "$@"
1046}
1047
1048function sigstop_lttng_consumerd_notap()
1049{
1050 sigstop_lttng_consumerd_opt 0 "$@"
1051}
1052
873c2aae
JRJ
1053function list_lttng_with_opts ()
1054{
65d1f746
JR
1055 local ret
1056 local withtap=$1
1057 shift
7d0ad314 1058 local opts=$1
2cf48300 1059 $TESTDIR/../src/bin/lttng/$LTTNG_BIN list $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
65d1f746
JR
1060 ret=$?
1061 if [ $withtap -eq "1" ]; then
1062 ok $ret "Lttng-tool list command with option $opts"
1063 fi
1064}
1065
1066function list_lttng_ok ()
1067{
1068 list_lttng_with_opts 1 "$@"
1069}
1070
1071function list_lttng_notap ()
1072{
1073 list_lttng_with_opts 0 "$@"
873c2aae
JRJ
1074}
1075
07b86b52
JD
1076function create_lttng_session_no_output ()
1077{
7d0ad314 1078 local sess_name=$1
2a166864 1079 local opts="${@:2}"
07b86b52 1080
2a166864 1081 $TESTDIR/../src/bin/lttng/$LTTNG_BIN create $sess_name --no-output $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
07b86b52
JD
1082 ok $? "Create session $sess_name in no-output mode"
1083}
1084
f0d43d3d
JR
1085function create_lttng_session_uri () {
1086 local sess_name=$1
1087 local uri=$2
1088 local opts="${@:3}"
1089
1090 $TESTDIR/../src/bin/lttng/$LTTNG_BIN create $sess_name -U $uri $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1091 ok $? "Create session $sess_name with uri:$uri and opts: $opts"
1092}
1093
d3e8f6bb
DG
1094function create_lttng_session ()
1095{
434f8068
JR
1096 local withtap=$1
1097 local expected_to_fail=$2
1098 local sess_name=$3
1099 local trace_path=$4
1100 local opt=$5
d3e8f6bb 1101
01654d69
JR
1102 if [ -z "$trace_path" ]; then
1103 # Use lttng-sessiond default output.
1104 trace_path=""
1105 else
1106 trace_path="-o $trace_path"
1107 fi
1108
1109 $TESTDIR/../src/bin/lttng/$LTTNG_BIN create "$sess_name" $trace_path $opt 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
873c2aae 1110 ret=$?
434f8068 1111 if [ $expected_to_fail -eq "1" ]; then
01513c3e 1112 test "$ret" -ne "0"
434f8068
JR
1113 ret=$?
1114 if [ $withtap -eq "1" ]; then
1115 ok $ret "Create session $sess_name in $trace_path failed as expected"
1116 fi
873c2aae 1117 else
434f8068
JR
1118 if [ $withtap -eq "1" ]; then
1119 ok $ret "Create session $sess_name in $trace_path"
1120 fi
873c2aae 1121 fi
434f8068 1122 return $ret
d4018451
DG
1123}
1124
bf6ae429
JR
1125function create_lttng_session_ok ()
1126{
434f8068 1127 create_lttng_session 1 0 "$@"
bf6ae429
JR
1128}
1129
1130function create_lttng_session_fail ()
1131{
434f8068
JR
1132 create_lttng_session 1 1 "$@"
1133}
1134
1135function create_lttng_session_notap ()
1136{
1137 create_lttng_session 0 0 "$@"
bf6ae429
JR
1138}
1139
1140
827caf52 1141function enable_ust_lttng_channel ()
d4018451 1142{
434f8068
JR
1143 local withtap=$1
1144 local expected_to_fail=$2
1145 local sess_name=$3
1146 local channel_name=$4
c28fcefd 1147 local opts="${@:5}"
d4018451 1148
c28fcefd 1149 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel -u $channel_name -s $sess_name $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
312dabc3 1150 ret=$?
34ab15c5 1151 if [[ $expected_to_fail -eq "1" ]]; then
01513c3e 1152 test "$ret" -ne "0"
434f8068
JR
1153 ret=$?
1154 if [ $withtap -eq "1" ]; then
1155 ok $ret "Enable channel $channel_name for session $sess_name failed as expected"
1156 fi
312dabc3 1157 else
434f8068
JR
1158 if [ $withtap -eq "1" ]; then
1159 ok $ret "Enable channel $channel_name for session $sess_name"
1160 fi
312dabc3 1161 fi
434f8068 1162 return $ret
d4018451
DG
1163}
1164
827caf52
JR
1165function enable_ust_lttng_channel_ok ()
1166{
434f8068 1167 enable_ust_lttng_channel 1 0 "$@"
827caf52
JR
1168}
1169
1170function enable_ust_lttng_channel_fail ()
1171{
434f8068
JR
1172 enable_ust_lttng_channel 1 1 "$@"
1173}
1174
1175function enable_ust_lttng_channel_notap ()
1176{
1177 enable_ust_lttng_channel 0 0 "$@"
827caf52
JR
1178}
1179
29655db7 1180function disable_ust_lttng_channel()
d4018451 1181{
7d0ad314
JRJ
1182 local sess_name=$1
1183 local channel_name=$2
d4018451 1184
2cf48300 1185 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-channel -u $channel_name -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
29655db7 1186 ok $? "Disable channel $channel_name for session $sess_name"
d3e8f6bb
DG
1187}
1188
07b86b52
JD
1189function enable_lttng_mmap_overwrite_kernel_channel()
1190{
7d0ad314
JRJ
1191 local sess_name=$1
1192 local channel_name=$2
07b86b52 1193
2cf48300 1194 $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
1195 ok $? "Enable channel $channel_name for session $sess_name"
1196}
1197
086e6add
MD
1198function enable_lttng_mmap_discard_small_kernel_channel()
1199{
1200 local sess_name=$1
1201 local channel_name=$2
1202
1203 $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
1204 ok $? "Enable small discard channel $channel_name for session $sess_name"
1205}
1206
1207function enable_lttng_mmap_overwrite_small_kernel_channel()
1208{
1209 local sess_name=$1
1210 local channel_name=$2
1211
1212 $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
1213 ok $? "Enable small discard channel $channel_name for session $sess_name"
1214}
1215
ebaaaf5e
JD
1216function enable_lttng_mmap_overwrite_ust_channel()
1217{
7d0ad314
JRJ
1218 local sess_name=$1
1219 local channel_name=$2
ebaaaf5e 1220
2cf48300 1221 $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
1222 ok $? "Enable channel $channel_name for session $sess_name"
1223}
1224
d3e8f6bb
DG
1225function enable_ust_lttng_event ()
1226{
434f8068
JR
1227 local withtap=$1
1228 local expected_to_fail=$2
1229 local sess_name=$3
1230 local event_name="$4"
1231 local channel_name=$5
ebaaaf5e
JD
1232
1233 if [ -z $channel_name ]; then
1234 # default channel if none specified
1235 chan=""
1236 else
1237 chan="-c $channel_name"
1238 fi
d3e8f6bb 1239
2cf48300 1240 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" $chan -s $sess_name -u 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
01513c3e 1241 ret=$?
c4926bb5 1242 if [[ $expected_to_fail -eq "1" ]]; then
01513c3e 1243 test $ret -ne "0"
434f8068
JR
1244 ret=$?
1245 if [[ $withtap -eq "1" ]]; then
1246 ok $ret "Enable ust event $event_name for session $session_name failed as expected"
1247 fi
01513c3e 1248 else
434f8068
JR
1249 if [[ $withtap -eq "1" ]]; then
1250 ok $ret "Enable ust event $event_name for session $sess_name"
1251 fi
01513c3e 1252 fi
434f8068 1253 return $ret
26b53d3b
DG
1254}
1255
c4926bb5
JR
1256function enable_ust_lttng_event_ok ()
1257{
434f8068 1258 enable_ust_lttng_event 1 0 "$@"
c4926bb5
JR
1259}
1260
1261function enable_ust_lttng_event_fail ()
1262{
434f8068
JR
1263 enable_ust_lttng_event 1 1 "$@"
1264}
1265
1266function enable_ust_lttng_event_notap ()
1267{
1268 enable_ust_lttng_event 0 0 "$@"
c4926bb5
JR
1269}
1270
37175ce4
DG
1271function enable_jul_lttng_event()
1272{
1273 sess_name=$1
1274 event_name="$2"
1275 channel_name=$3
1276
1277 if [ -z $channel_name ]; then
1278 # default channel if none specified
1279 chan=""
1280 else
1281 chan="-c $channel_name"
1282 fi
1283
2cf48300 1284 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" $chan -s $sess_name -j 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
37175ce4
DG
1285 ok $? "Enable JUL event $event_name for session $sess_name"
1286}
1287
b2064f54
DG
1288function enable_jul_lttng_event_loglevel()
1289{
7d0ad314
JRJ
1290 local sess_name=$1
1291 local event_name="$2"
1292 local loglevel=$3
1293 local channel_name=$4
b2064f54
DG
1294
1295 if [ -z $channel_name ]; then
1296 # default channel if none specified
1297 chan=""
1298 else
1299 chan="-c $channel_name"
1300 fi
1301
2cf48300 1302 $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
1303 ok $? "Enable JUL event $event_name for session $sess_name with loglevel $loglevel"
1304}
1305
504d4ace
DG
1306function enable_log4j_lttng_event()
1307{
7f6639c2
MJ
1308 local sess_name=$1
1309 local event_name=$2
1310 local channel_name=$3
504d4ace 1311
7f6639c2
MJ
1312 local chan_opt=()
1313
1314 # default channel if none specified
1315 if [ -n "$channel_name" ]; then
1316 chan_opt=("-c" "$channel_name")
504d4ace
DG
1317 fi
1318
7f6639c2
MJ
1319 _run_lttng_cmd "$OUTPUT_DEST" "$ERROR_OUTPUT_DEST" \
1320 enable-event "$event_name" "${chan_opt[@]}" -s "$sess_name" --log4j
1321 ok $? "Enable LOG4J event '$event_name' for session '$sess_name'"
1322}
1323
1324function enable_log4j_lttng_event_filter()
1325{
1326 local sess_name=$1
1327 local event_name=$2
1328 local filter=$3
1329
1330 _run_lttng_cmd "$OUTPUT_DEST" "$ERROR_OUTPUT_DEST" \
1331 enable-event "$event_name" -s "$sess_name" --log4j --filter "$filter"
1332 ok $? "Enable LOG4J event '$event_name' with filter '$filter' for session '$sess_name'"
1333}
1334
1335function enable_log4j_lttng_event_filter_loglevel_only()
1336{
1337 local sess_name=$1
1338 local event_name=$2
1339 local filter=$3
1340 local loglevel=$4
1341
1342 _run_lttng_cmd "$OUTPUT_DEST" "$ERROR_OUTPUT_DEST" \
1343 enable-event --loglevel-only "$loglevel" "$event_name" -s "$sess_name" -l --filter "$filter"
1344 ok $? "Enable LOG4J event '$event_name' with filter '$filter' and loglevel-only '$loglevel' for session '$sess_name'"
504d4ace
DG
1345}
1346
1347function enable_log4j_lttng_event_loglevel()
1348{
1349 local sess_name=$1
7f6639c2 1350 local event_name=$2
504d4ace
DG
1351 local loglevel=$3
1352 local channel_name=$4
1353
7f6639c2
MJ
1354
1355 # default channel if none specified
1356 if [ -n "$channel_name" ]; then
1357 chan_opt=("-c" "$channel_name")
1358 fi
1359
1360 _run_lttng_cmd "$OUTPUT_DEST" "$ERROR_OUTPUT_DEST" \
1361 enable-event --loglevel "$loglevel" "$event_name" "${chan_opt[@]}" -s "$sess_name" --log4j
1362 ok $? "Enable LOG4J event '$event_name' for session '$sess_name' with loglevel '$loglevel'"
1363}
1364
1365function enable_log4j_lttng_event_loglevel_only()
1366{
1367 local sess_name=$1
1368 local event_name=$2
1369 local loglevel=$3
1370 local channel_name=$4
1371
1372 local chan_opt=()
1373
1374 # default channel if none specified
1375 if [ -n "$channel_name" ]; then
1376 chan_opt=("-c" "$channel_name")
504d4ace
DG
1377 fi
1378
7f6639c2
MJ
1379 _run_lttng_cmd "$OUTPUT_DEST" "$ERROR_OUTPUT_DEST" \
1380 enable-event --loglevel-only "$loglevel" "$event_name" "${chan_opt[@]}" -s "$sess_name" --log4j
1381 ok $? "Enable LOG4J event '$event_name' for session '$sess_name' with loglevel-only '$loglevel'"
504d4ace
DG
1382}
1383
0e115563
DG
1384function enable_python_lttng_event()
1385{
1386 sess_name=$1
1387 event_name="$2"
1388 channel_name=$3
1389
1390 if [ -z $channel_name ]; then
1391 # default channel if none specified
1392 chan=""
1393 else
1394 chan="-c $channel_name"
1395 fi
1396
2cf48300 1397 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" $chan -s $sess_name -p 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
0e115563
DG
1398 ok $? "Enable Python event $event_name for session $sess_name"
1399}
1400
1401function enable_python_lttng_event_loglevel()
1402{
1403 local sess_name=$1
1404 local event_name="$2"
1405 local loglevel=$3
1406 local channel_name=$4
1407
1408 if [ -z $channel_name ]; then
1409 # default channel if none specified
1410 chan=""
1411 else
1412 chan="-c $channel_name"
1413 fi
1414
2cf48300 1415 $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
1416 ok $? "Enable Python event $event_name for session $sess_name with loglevel $loglevel"
1417}
1418
26b53d3b
DG
1419function enable_ust_lttng_event_filter()
1420{
7d0ad314
JRJ
1421 local sess_name="$1"
1422 local event_name="$2"
1423 local filter="$3"
bc3c79ae
JG
1424 local channel_name=$4
1425
1426 if [ -z $channel_name ]; then
1427 # default channel if none specified
1428 chan=""
1429 else
1430 chan="-c $channel_name"
1431 fi
26b53d3b 1432
bc3c79ae 1433 $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 1434 ok $? "Enable event $event_name with filtering for session $sess_name"
26b53d3b
DG
1435}
1436
1437function enable_ust_lttng_event_loglevel()
1438{
7d0ad314
JRJ
1439 local sess_name="$1"
1440 local event_name="$2"
1441 local loglevel="$3"
26b53d3b 1442
2cf48300 1443 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" -s $sess_name -u --loglevel $loglevel 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
29655db7 1444 ok $? "Enable event $event_name with loglevel $loglevel"
26b53d3b
DG
1445}
1446
1447function enable_ust_lttng_event_loglevel_only()
1448{
7d0ad314
JRJ
1449 local sess_name="$1"
1450 local event_name="$2"
1451 local loglevel="$3"
26b53d3b 1452
2cf48300 1453 $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 1454 ok $? "Enable event $event_name with loglevel-only $loglevel"
26b53d3b
DG
1455}
1456
1457function disable_ust_lttng_event ()
1458{
7d0ad314
JRJ
1459 local sess_name="$1"
1460 local event_name="$2"
01513c3e 1461 local channel_name="$3"
26b53d3b 1462
01513c3e
JRJ
1463 if [ -z $channel_name ]; then
1464 # default channel if none specified
1465 chan=""
1466 else
1467 chan="-c $channel_name"
1468 fi
1469
2cf48300 1470 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-event "$event_name" -s $sess_name $chan -u 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
29655db7 1471 ok $? "Disable event $event_name for session $sess_name"
d3e8f6bb
DG
1472}
1473
1d842d5a
DG
1474function disable_jul_lttng_event ()
1475{
1476 local sess_name="$1"
1477 local event_name="$2"
1478
1479 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-event "$event_name" -s $sess_name -j >/dev/null 2>&1
1480 ok $? "Disable JUL event $event_name for session $sess_name"
1481}
1482
504d4ace
DG
1483function disable_log4j_lttng_event ()
1484{
1485 local sess_name="$1"
1486 local event_name="$2"
1487
7f6639c2
MJ
1488 _run_lttng_cmd "$OUTPUT_DEST" "$ERROR_OUTPUT_DEST" \
1489 disable-event "$event_name" -s "$sess_name" --log4j
1490 ok $? "Disable LOG4J event '$event_name' for session '$sess_name'"
504d4ace
DG
1491}
1492
0e115563
DG
1493function disable_python_lttng_event ()
1494{
1495 local sess_name="$1"
1496 local event_name="$2"
1497
2cf48300 1498 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-event "$event_name" -s $sess_name -p 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
0e115563
DG
1499 ok $? "Disable Python event $event_name for session $sess_name"
1500}
1501
7fe98a98 1502function start_lttng_tracing_opt ()
d3e8f6bb 1503{
7fe98a98
JG
1504 local withtap=$1
1505 local expected_to_fail=$2
1506 local sess_name=$3
d3e8f6bb 1507
2cf48300 1508 $TESTDIR/../src/bin/lttng/$LTTNG_BIN start $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
01513c3e 1509 ret=$?
e563bbdb 1510 if [[ $expected_to_fail -eq "1" ]]; then
01513c3e 1511 test "$ret" -ne "0"
7fe98a98
JG
1512 ret=$?
1513 if [ $withtap -eq "1" ]; then
1514 ok $? "Start tracing for session $sess_name failed as expected"
1515 fi
01513c3e 1516 else
7fe98a98
JG
1517 if [ $withtap -eq "1" ]; then
1518 ok $ret "Start tracing for session $sess_name"
1519 fi
01513c3e 1520 fi
d3e8f6bb
DG
1521}
1522
e563bbdb
JR
1523function start_lttng_tracing_ok ()
1524{
7fe98a98 1525 start_lttng_tracing_opt 1 0 "$@"
e563bbdb
JR
1526}
1527
1528function start_lttng_tracing_fail ()
1529{
7fe98a98 1530 start_lttng_tracing_opt 1 1 "$@"
e563bbdb
JR
1531}
1532
7fe98a98 1533function start_lttng_tracing_notap ()
d3e8f6bb 1534{
7fe98a98
JG
1535 start_lttng_tracing_opt 0 1 "$@"
1536}
1537
1538function stop_lttng_tracing_opt ()
1539{
1540 local withtap=$1
1541 local expected_to_fail=$2
1542 local sess_name=$3
d3e8f6bb 1543
2cf48300 1544 $TESTDIR/../src/bin/lttng/$LTTNG_BIN stop $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
01513c3e 1545 ret=$?
96340a01 1546 if [[ $expected_to_fail -eq "1" ]]; then
01513c3e 1547 test "$ret" -ne "0"
7fe98a98
JG
1548 ret=$?
1549 if [ $withtap -eq "1" ]; then
1550 ok $? "Stop lttng tracing for session $sess_name failed as expected"
1551 fi
01513c3e 1552 else
7fe98a98
JG
1553 if [ $withtap -eq "1" ]; then
1554 ok $ret "Stop lttng tracing for session $sess_name"
1555 fi
01513c3e 1556 fi
d3e8f6bb
DG
1557}
1558
96340a01
JR
1559function stop_lttng_tracing_ok ()
1560{
7fe98a98 1561 stop_lttng_tracing_opt 1 0 "$@"
96340a01
JR
1562}
1563
1564function stop_lttng_tracing_fail ()
1565{
7fe98a98
JG
1566 stop_lttng_tracing_opt 1 1 "$@"
1567}
1568
1569function stop_lttng_tracing_notap ()
1570{
1571 stop_lttng_tracing_opt 0 0 "$@"
96340a01
JR
1572}
1573
d3e8f6bb
DG
1574function destroy_lttng_session ()
1575{
854382b8
JR
1576 local withtap=$1
1577 local expected_to_fail=$2
1578 local sess_name=$3
d3e8f6bb 1579
2cf48300 1580 $TESTDIR/../src/bin/lttng/$LTTNG_BIN destroy $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
01513c3e 1581 ret=$?
96340a01 1582 if [[ $expected_to_fail -eq "1" ]]; then
01513c3e 1583 test "$ret" -ne "0"
854382b8
JR
1584 ret=$?
1585 if [ $withtap -eq "1" ]; then
1586 ok $ret "Destroy session $sess_name failed as expected"
1587 fi
01513c3e 1588 else
854382b8
JR
1589 if [ $withtap -eq "1" ]; then
1590 ok $ret "Destroy session $sess_name"
1591 fi
01513c3e 1592 fi
d3e8f6bb
DG
1593}
1594
67b4c664
JR
1595function destroy_lttng_session_ok ()
1596{
854382b8 1597 destroy_lttng_session 1 0 "$@"
67b4c664
JR
1598
1599}
1600
1601function destroy_lttng_session_fail ()
1602{
854382b8 1603 destroy_lttng_session 1 1 "$@"
67b4c664
JR
1604}
1605
854382b8
JR
1606function destroy_lttng_session_notap ()
1607{
1608 destroy_lttng_session 0 0 "$@"
1609}
67b4c664 1610
873c2aae
JRJ
1611function destroy_lttng_sessions ()
1612{
2cf48300 1613 $TESTDIR/../src/bin/lttng/$LTTNG_BIN destroy --all 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
873c2aae
JRJ
1614 ok $? "Destroy all lttng sessions"
1615}
1616
07b86b52
JD
1617function lttng_snapshot_add_output ()
1618{
b5633831
JR
1619 local expected_to_fail=$1
1620 local sess_name=$2
1621 local trace_path=$3
9f0e230a 1622 local opts=$4
07b86b52 1623
9f0e230a 1624 $TESTDIR/../src/bin/lttng/$LTTNG_BIN snapshot add-output -s $sess_name $trace_path $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
01513c3e 1625 ret=$?
b5633831 1626 if [[ $expected_to_fail -eq 1 ]]; then
01513c3e 1627 test "$ret" -ne "0"
9f0e230a 1628 ok $? "Added snapshot output $trace_path failed as expected"
01513c3e 1629 else
9f0e230a 1630 ok $ret "Added snapshot output $trace_path"
01513c3e 1631 fi
07b86b52
JD
1632}
1633
b5633831
JR
1634function lttng_snapshot_add_output_ok ()
1635{
1636 lttng_snapshot_add_output 0 "$@"
1637}
1638
1639function lttng_snapshot_add_output_fail ()
1640{
1641 lttng_snapshot_add_output 1 "$@"
1642}
1643
26402e0c
DG
1644function lttng_snapshot_del_output ()
1645{
31580dc7
JR
1646 local expected_to_fail=$1
1647 local sess_name=$2
1648 local id=$3
26402e0c 1649
2cf48300 1650 $TESTDIR/../src/bin/lttng/$LTTNG_BIN snapshot del-output -s $sess_name $id 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
01513c3e 1651 ret=$?
31580dc7 1652 if [[ $expected_to_fail -eq "1" ]]; then
01513c3e 1653 test "$ret" -ne "0"
34ab15c5 1654 ok $? "Deleted snapshot output id $id failed as expected"
01513c3e
JRJ
1655 else
1656 ok $ret "Deleted snapshot output id $id"
1657 fi
26402e0c
DG
1658}
1659
31580dc7
JR
1660function lttng_snapshot_del_output_ok ()
1661{
1662 lttng_snapshot_del_output 0 "$@"
1663}
1664
1665function lttng_snapshot_del_output_fail ()
1666{
1667 lttng_snapshot_del_output 1 "$@"
1668}
1669
07b86b52
JD
1670function lttng_snapshot_record ()
1671{
7d0ad314 1672 local sess_name=$1
6ac56bb9 1673 local trace_path=$2
07b86b52 1674
6ac56bb9 1675 $TESTDIR/../src/bin/lttng/$LTTNG_BIN snapshot record -s "$sess_name" "$trace_path" 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
07b86b52
JD
1676 ok $? "Snapshot recorded"
1677}
1678
01513c3e
JRJ
1679function lttng_snapshot_list ()
1680{
1681 local sess_name=$1
2cf48300 1682 $TESTDIR/../src/bin/lttng/$LTTNG_BIN snapshot list-output -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
01513c3e
JRJ
1683 ok $? "Snapshot list"
1684}
1685
e02b109b
DG
1686function lttng_save()
1687{
1688 local sess_name=$1
1689 local opts=$2
1690
2cf48300 1691 $TESTDIR/../src/bin/lttng/$LTTNG_BIN save $sess_name $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
34ab15c5 1692 ok $? "Session saved"
e02b109b
DG
1693}
1694
1695function lttng_load()
1696{
192ac418
JR
1697 local expected_to_fail=$1
1698 local opts=$2
e02b109b 1699
2cf48300 1700 $TESTDIR/../src/bin/lttng/$LTTNG_BIN load $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
192ac418
JR
1701 ret=$?
1702 if [[ $expected_to_fail -eq "1" ]]; then
1703 test $ret -ne "0"
1704 ok $? "Load command failed as expected with opts: $opts"
1705 else
1706 ok $ret "Load command with opts: $opts"
1707 fi
1708}
1709
1710function lttng_load_ok()
1711{
1712 lttng_load 0 "$@"
1713}
1714
1715function lttng_load_fail()
1716{
1717 lttng_load 1 "$@"
e02b109b
DG
1718}
1719
e83a8bdb
JR
1720function lttng_track()
1721{
ba5e8d0a 1722 local expected_to_fail="$1"
c47a705b 1723 shift 1
ba5e8d0a 1724 local opts="$@"
e83a8bdb
JR
1725 $TESTDIR/../src/bin/lttng/$LTTNG_BIN track $opts >$OUTPUT_DEST
1726 ret=$?
1727 if [[ $expected_to_fail -eq "1" ]]; then
1728 test $ret -ne "0"
1729 ok $? "Track command failed as expected with opts: $opts"
1730 else
34ab15c5 1731 ok $ret "Track command with opts: $opts"
e83a8bdb
JR
1732 fi
1733}
1734
1735function lttng_track_ok()
1736{
1737 lttng_track 0 "$@"
1738}
1739
1740function lttng_track_fail()
1741{
1742 lttng_track 1 "$@"
1743}
1744
1745function lttng_untrack()
1746{
ba5e8d0a 1747 local expected_to_fail="$1"
c47a705b 1748 shift 1
ba5e8d0a 1749 local opts="$@"
e83a8bdb
JR
1750 $TESTDIR/../src/bin/lttng/$LTTNG_BIN untrack $opts >$OUTPUT_DEST
1751 ret=$?
1752 if [[ $expected_to_fail -eq "1" ]]; then
1753 test $ret -ne "0"
1754 ok $? "Untrack command failed as expected with opts: $opts"
1755 else
34ab15c5 1756 ok $ret "Untrack command with opts: $opts"
e83a8bdb
JR
1757 fi
1758}
1759
1760function lttng_untrack_ok()
1761{
1762 lttng_untrack 0 "$@"
1763}
1764
1765function lttng_untrack_fail()
1766{
1767 lttng_untrack 1 "$@"
1768}
1769
c8e51d15
FD
1770function lttng_track_pid_ok()
1771{
1772 PID=$1
1773 "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" track --kernel --pid=$PID 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1774 ok $? "Lttng track pid on the kernel domain"
1775}
1776
1777function lttng_untrack_kernel_all_ok()
1778{
1779 "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" untrack --kernel --pid --all 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1780 ok $? "Lttng untrack all pid on the kernel domain"
1781}
1782
ba5e8d0a
MD
1783function lttng_track_ust_ok()
1784{
1785 lttng_track_ok -u "$@"
1786}
1787
1788function lttng_track_ust_fail()
1789{
1790 lttng_track_fail -u "$@"
1791}
1792
1793function lttng_track_kernel_ok()
1794{
1795 lttng_track_ok -k "$@"
1796}
1797
1798function lttng_track_kernel_fail()
1799{
1800 lttng_track_fail -k "$@"
1801}
1802
1803function lttng_untrack_ust_ok()
1804{
1805 lttng_untrack_ok -u "$@"
1806}
1807
1808function lttng_untrack_ust_fail()
1809{
1810 lttng_untrack_fail -u "$@"
1811}
1812
1813function lttng_untrack_kernel_ok()
1814{
1815 lttng_untrack_ok -k "$@"
1816}
1817
1818function lttng_untrack_kernel_fail()
1819{
1820 lttng_untrack_fail -k "$@"
1821}
1822
59deec0c
JR
1823function lttng_add_context_list()
1824{
1825 $TESTDIR/../src/bin/lttng/$LTTNG_BIN add-context --list 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1826 ret=$?
1827 ok $ret "Context listing"
1828}
1829
8dcef147
JR
1830function add_context_lttng()
1831{
1832 local expected_to_fail="$1"
1833 local domain="$2"
1834 local session_name="$3"
1835 local channel_name="$4"
1836 local type="$5"
1837
1838 $TESTDIR/../src/bin/lttng/$LTTNG_BIN add-context -s $session_name -c $channel_name -t $type $domain 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1839 ret=$?
1840 if [[ $expected_to_fail -eq "1" ]]; then
1841 test $ret -ne "0"
1842 ok $? "Add context command failed as expected for type: $type"
1843 else
1844 ok $ret "Add context command for type: $type"
1845 fi
1846}
1847
1848function add_context_ust_ok()
1849{
1850 add_context_lttng 0 -u "$@"
1851}
1852
1853function add_context_ust_fail()
1854{
1855 add_context_lttng 1 -u "$@"
1856}
1857
1858function add_context_kernel_ok()
1859{
1860 add_context_lttng 0 -k "$@"
1861}
1862
1863function add_context_kernel_fail()
1864{
1865 add_context_lttng 1 -k "$@"
1866}
1867
c28fcefd
JR
1868function wait_live_trace_ready ()
1869{
1870 local url=$1
1871 local zero_client_match=0
1872
1873 diag "Waiting for live trace at url: $url"
1874 while [ $zero_client_match -eq 0 ]; do
1875 zero_client_match=$($BABELTRACE_BIN -i lttng-live $url | grep "0 client(s) connected" | wc -l)
1876 sleep 0.5
1877 done
1878 pass "Waiting for live trace at url: $url"
1879}
1880
1881function wait_live_viewer_connect ()
1882{
1883 local url=$1
1884 local one_client_match=0
1885
1886 diag "Waiting for live viewers on url: $url"
1887 while [ $one_client_match -eq 0 ]; do
1888 one_client_match=$($BABELTRACE_BIN -i lttng-live $url | grep "1 client(s) connected" | wc -l)
1889 sleep 0.5
1890 done
1891 pass "Waiting for live viewers on url: $url"
1892}
1893
7f6639c2
MJ
1894function bail_out_if_no_babeltrace()
1895{
1896 which "$BABELTRACE_BIN" >/dev/null
1897 if [ $? -ne 0 ]; then
1898 LTTNG_BAIL_OUT "\"$BABELTRACE_BIN\" binary not found. Skipping tests"
1899 fi
1900}
1901
c54b437e
FD
1902function validate_metadata_event ()
1903{
1904 local event_name=$1
1905 local nr_event_id=$2
1906 local trace_path=$3
1907
8ed76573 1908 local metadata_file=$(find $trace_path -name "metadata")
c54b437e
FD
1909 local metadata_path=$(dirname $metadata_file)
1910
1911 which $BABELTRACE_BIN >/dev/null
1912 skip $? -ne 0 "Babeltrace binary not found. Skipping trace matches"
1913
1914 local count=$($BABELTRACE_BIN --output-format=ctf-metadata $metadata_path | grep $event_name | wc -l)
1915
1916 if [ "$count" -ne "$nr_event_id" ]; then
1917 fail "Metadata match with the metadata of $count event(s) named $event_name"
1918 diag "$count matching event id found in metadata"
1919 else
1920 pass "Metadata match with the metadata of $count event(s) named $event_name"
1921 fi
1922
1923}
1924
d3e8f6bb
DG
1925function trace_matches ()
1926{
7d0ad314
JRJ
1927 local event_name=$1
1928 local nr_iter=$2
1929 local trace_path=$3
d3e8f6bb 1930
317eef93 1931 which $BABELTRACE_BIN >/dev/null
29655db7 1932 skip $? -ne 0 "Babeltrace binary not found. Skipping trace matches"
d3e8f6bb 1933
7d0ad314 1934 local count=$($BABELTRACE_BIN $trace_path | grep $event_name | wc -l)
29655db7 1935
d3e8f6bb 1936 if [ "$count" -ne "$nr_iter" ]; then
29655db7 1937 fail "Trace match"
af91abc9 1938 diag "$count matching events found in trace"
d3e8f6bb 1939 else
29655db7 1940 pass "Trace match"
d3e8f6bb
DG
1941 fi
1942}
f4e40ab6 1943
d53addeb
DG
1944function trace_match_only()
1945{
1946 local event_name=$1
1947 local nr_iter=$2
1948 local trace_path=$3
1949
1950 which $BABELTRACE_BIN >/dev/null
1951 skip $? -ne 0 "Babeltrace binary not found. Skipping trace matches"
1952
1953 local count=$($BABELTRACE_BIN $trace_path | grep $event_name | wc -l)
1954 local total=$($BABELTRACE_BIN $trace_path | wc -l)
1955
08f96a38
JG
1956 if [ "$nr_iter" -eq "$count" ] && [ "$total" -eq "$nr_iter" ]; then
1957 pass "Trace match with $total event $event_name"
1958 else
1959 fail "Trace match"
1960 diag "$total event(s) found, expecting $nr_iter of event $event_name and only found $count"
1961 fi
d53addeb
DG
1962}
1963
f4e40ab6
DG
1964function validate_trace
1965{
7d0ad314
JRJ
1966 local event_name=$1
1967 local trace_path=$2
f4e40ab6
DG
1968
1969 which $BABELTRACE_BIN >/dev/null
29655db7
CB
1970 if [ $? -ne 0 ]; then
1971 skip 0 "Babeltrace binary not found. Skipping trace validation"
f4e40ab6
DG
1972 fi
1973
07b86b52
JD
1974 OLDIFS=$IFS
1975 IFS=","
1976 for i in $event_name; do
1977 traced=$($BABELTRACE_BIN $trace_path 2>/dev/null | grep $i | wc -l)
1978 if [ "$traced" -ne 0 ]; then
ebaaaf5e 1979 pass "Validate trace for event $i, $traced events"
07b86b52
JD
1980 else
1981 fail "Validate trace for event $i"
1a299778 1982 diag "Found $traced occurrences of $i"
07b86b52
JD
1983 fi
1984 done
1985 ret=$?
1986 IFS=$OLDIFS
1987 return $ret
f4e40ab6 1988}
8cfcd41c 1989
54cd6107
JD
1990function validate_trace_count
1991{
1992 local event_name=$1
1993 local trace_path=$2
1994 local expected_count=$3
1995
1996 which $BABELTRACE_BIN >/dev/null
1997 if [ $? -ne 0 ]; then
1998 skip 0 "Babeltrace binary not found. Skipping trace validation"
1999 fi
2000
2001 cnt=0
2002 OLDIFS=$IFS
2003 IFS=","
2004 for i in $event_name; do
2005 traced=$($BABELTRACE_BIN $trace_path 2>/dev/null | grep $i | wc -l)
2006 if [ "$traced" -ne 0 ]; then
2007 pass "Validate trace for event $i, $traced events"
2008 else
2009 fail "Validate trace for event $i"
1a299778 2010 diag "Found $traced occurrences of $i"
54cd6107
JD
2011 fi
2012 cnt=$(($cnt + $traced))
2013 done
2014 IFS=$OLDIFS
2015 test $cnt -eq $expected_count
2016 ok $? "Read a total of $cnt events, expected $expected_count"
2017}
2018
c28fcefd
JR
2019function validate_trace_count_range_incl_min_excl_max
2020{
2021 local event_name=$1
2022 local trace_path=$2
2023 local expected_min=$3
2024 local expected_max=$4
2025
2026 which $BABELTRACE_BIN >/dev/null
2027 if [ $? -ne 0 ]; then
2028 skip 0 "Babeltrace binary not found. Skipping trace validation"
2029 fi
2030
2031 cnt=0
2032 OLDIFS=$IFS
2033 IFS=","
2034 for i in $event_name; do
2035 traced=$($BABELTRACE_BIN $trace_path 2>/dev/null | grep $i | wc -l)
2036 if [ "$traced" -ge $expected_min ]; then
2037 pass "Validate trace for event $i, $traced events"
2038 else
2039 fail "Validate trace for event $i"
1a299778 2040 diag "Found $traced occurrences of $i"
c28fcefd
JR
2041 fi
2042 cnt=$(($cnt + $traced))
2043 done
2044 IFS=$OLDIFS
2045 test $cnt -lt $expected_max
2046 ok $? "Read a total of $cnt events, expected between [$expected_min, $expected_max["
2047}
2048
086e6add
MD
2049function trace_first_line
2050{
2051 local trace_path=$1
2052
2053 which $BABELTRACE_BIN >/dev/null
2054 if [ $? -ne 0 ]; then
2055 skip 0 "Babeltrace binary not found. Skipping trace validation"
2056 fi
2057
2058 $BABELTRACE_BIN $trace_path 2>/dev/null | head -n 1
2059}
2060
8cfcd41c
MD
2061function validate_trace_exp()
2062{
2063 local event_exp=$1
2064 local trace_path=$2
2065
2066 which $BABELTRACE_BIN >/dev/null
2067 skip $? -ne 0 "Babeltrace binary not found. Skipping trace validation"
2068
49538c32 2069 traced=$($BABELTRACE_BIN $trace_path 2>/dev/null | grep --extended-regexp ${event_exp} | wc -l)
8cfcd41c
MD
2070 if [ "$traced" -ne 0 ]; then
2071 pass "Validate trace for expression '${event_exp}', $traced events"
2072 else
2073 fail "Validate trace for expression '${event_exp}'"
1a299778 2074 diag "Found $traced occurrences of '${event_exp}'"
8cfcd41c
MD
2075 fi
2076 ret=$?
2077 return $ret
2078}
2079
2080function validate_trace_only_exp()
2081{
2082 local event_exp=$1
2083 local trace_path=$2
2084
2085 which $BABELTRACE_BIN >/dev/null
2086 skip $? -ne 0 "Babeltrace binary not found. Skipping trace matches"
2087
49538c32 2088 local count=$($BABELTRACE_BIN $trace_path | grep --extended-regexp ${event_exp} | wc -l)
8cfcd41c
MD
2089 local total=$($BABELTRACE_BIN $trace_path | wc -l)
2090
2091 if [ "$count" -ne 0 ] && [ "$total" -eq "$count" ]; then
ab95d85d 2092 pass "Trace match with $total for expression '${event_exp}'"
8cfcd41c
MD
2093 else
2094 fail "Trace match"
2095 diag "$total syscall event(s) found, only syscalls matching expression '${event_exp}' ($count occurrences) are expected"
2096 fi
2097 ret=$?
2098 return $ret
2099}
2100
2101function validate_trace_empty()
2102{
2103 local trace_path=$1
2104
2105 which $BABELTRACE_BIN >/dev/null
2106 if [ $? -ne 0 ]; then
2107 skip 0 "Babeltrace binary not found. Skipping trace validation"
2108 fi
2109
2462eee7
JD
2110 events=$($BABELTRACE_BIN $trace_path 2>/dev/null)
2111 ret=$?
2112 if [ $ret -ne 0 ]; then
2113 fail "Failed to parse trace"
2114 return $ret
2115 fi
2116
2117 traced=$(echo -n "$events" | wc -l)
8cfcd41c
MD
2118 if [ "$traced" -eq 0 ]; then
2119 pass "Validate empty trace"
2120 else
2121 fail "Validate empty trace"
2122 diag "Found $traced events in trace"
2123 fi
2124 ret=$?
2125 return $ret
2126}
801236b0 2127
94360c17 2128function validate_directory_empty ()
ba5e8d0a 2129{
94360c17
FD
2130 local trace_path="$1"
2131
c8e000ef
FD
2132 # Do not double quote `$trace_path` below as we want wildcards to be
2133 # expanded.
2134 files="$(ls -A $trace_path)"
94360c17
FD
2135 ret=$?
2136 if [ $ret -ne 0 ]; then
2137 fail "Failed to list content of directory \"$trace_path\""
2138 return $ret
2139 fi
ba5e8d0a 2140
94360c17
FD
2141 nb_files="$(echo -n "$files" | wc -l)"
2142 ok $nb_files "Directory \"$trace_path\" is empty"
ba5e8d0a
MD
2143}
2144
2145function validate_trace_session_ust_empty()
2146{
94360c17 2147 validate_directory_empty "$1"/ust
ba5e8d0a
MD
2148}
2149
2150function validate_trace_session_kernel_empty()
2151{
2152 validate_trace_empty "$1"/kernel
2153}
2154
eded6438 2155function regenerate_metadata ()
801236b0
JD
2156{
2157 local expected_to_fail=$1
2158 local sess_name=$2
2159
eded6438 2160 $TESTDIR/../src/bin/lttng/$LTTNG_BIN regenerate metadata -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
801236b0
JD
2161 ret=$?
2162 if [[ $expected_to_fail -eq "1" ]]; then
2163 test "$ret" -ne "0"
eded6438 2164 ok $? "Expected fail on regenerate metadata $sess_name"
801236b0
JD
2165 else
2166 ok $ret "Metadata regenerate $sess_name"
2167 fi
2168}
2169
eded6438 2170function regenerate_metadata_ok ()
801236b0 2171{
eded6438 2172 regenerate_metadata 0 "$@"
801236b0
JD
2173}
2174
eded6438 2175function regenerate_metadata_fail ()
801236b0 2176{
eded6438 2177 regenerate_metadata 1 "$@"
801236b0 2178}
512eb148 2179
54cd6107
JD
2180function regenerate_statedump ()
2181{
2182 local expected_to_fail=$1
2183 local sess_name=$2
2184
2185 $TESTDIR/../src/bin/lttng/$LTTNG_BIN regenerate statedump -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
2186 ret=$?
2187 if [[ $expected_to_fail -eq "1" ]]; then
2188 test "$ret" -ne "0"
2189 ok $? "Expected fail on regenerate statedump $sess_name"
2190 else
5ebb1a9f 2191 ok $ret "Statedump regenerate $sess_name"
54cd6107
JD
2192 fi
2193}
2194
2195function regenerate_statedump_ok ()
2196{
2197 regenerate_statedump 0 "$@"
2198}
2199
2200function regenerate_statedump_fail ()
2201{
2202 regenerate_statedump 1 "$@"
2203}
2204
e7716c6a
JD
2205function rotate_session ()
2206{
2207 local expected_to_fail=$1
2208 local sess_name=$2
2209
2210 $TESTDIR/../src/bin/lttng/$LTTNG_BIN rotate $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
2211 ret=$?
2212 if [[ $expected_to_fail -eq "1" ]]; then
2213 test "$ret" -ne "0"
2214 ok $? "Expected fail on rotate session $sess_name"
2215 else
2216 ok $ret "Rotate session $sess_name"
2217 fi
2218}
2219
2220function rotate_session_ok ()
2221{
2222 rotate_session 0 "$@"
2223}
2224
2225function rotate_session_fail ()
2226{
2227 rotate_session 1 "$@"
2228}
2229
512eb148
JD
2230function destructive_tests_enabled ()
2231{
167c84b7 2232 if [ "$LTTNG_ENABLE_DESTRUCTIVE_TESTS" = "will-break-my-system" ]; then
512eb148
JD
2233 return 0
2234 else
2235 return 1
2236 fi
2237}
e7716c6a
JD
2238
2239function lttng_enable_rotation_timer ()
2240{
2241 local expected_to_fail=$1
2242 local sess_name=$2
2243 local period=$3
2244
2245 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-rotation -s $sess_name --timer $period 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
2246 ret=$?
2247 if [[ $expected_to_fail -eq "1" ]]; then
2248 test "$ret" -ne "0"
9498e289 2249 ok $? "Expected fail when setting periodic rotation ($period) of session $sess_name"
e7716c6a 2250 else
795f9063 2251 ok $ret "Set periodic rotation ($period) of session $sess_name"
e7716c6a
JD
2252 fi
2253}
2254
2255function lttng_enable_rotation_timer_ok ()
2256{
2257 lttng_enable_rotation_timer 0 $@
2258}
2259
2260function lttng_enable_rotation_timer_fail ()
2261{
2262 lttng_enable_rotation_timer 1 $@
2263}
2264
2265function lttng_enable_rotation_size ()
2266{
2267 local expected_to_fail=$1
2268 local sess_name=$2
2269 local size=$3
2270
2271 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-rotation -s $sess_name --size $size 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
2272 ret=$?
2273 if [[ $expected_to_fail -eq "1" ]]; then
2274 test "$ret" -ne "0"
2275 ok $? "Expected fail on rotate session $sess_name"
2276 else
2277 ok $ret "Rotate session $sess_name"
2278 fi
2279}
2280
2281function lttng_enable_rotation_size_ok ()
2282{
2283 lttng_enable_rotation_size 0 $@
2284}
2285
2286function lttng_enable_rotation_size_fail ()
2287{
2288 lttng_enable_rotation_size 1 $@
2289}
c28fcefd
JR
2290
2291function lttng_clear_session ()
2292{
2293 local expected_to_fail=$1
2294 local sess_name=$2
2295
2296 $TESTDIR/../src/bin/lttng/$LTTNG_BIN clear $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
2297 ret=$?
2298 if [[ $expected_to_fail -eq "1" ]]; then
2299 test "$ret" -ne "0"
2300 ok $? "Expected fail on clear session $sess_name"
2301 else
2302 ok $ret "Clear session $sess_name"
2303 fi
2304}
2305
2306function lttng_clear_session_ok ()
2307{
2308 lttng_clear_session 0 $@
2309}
2310
2311function lttng_clear_session_fail ()
2312{
2313 lttng_clear_session 1 $@
2314}
5ee26199
JR
2315
2316function lttng_clear_all ()
2317{
2318 $TESTDIR/../src/bin/lttng/$LTTNG_BIN clear --all 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
2319 ok $? "Clear all lttng sessions"
2320}
70c766ac
FD
2321
2322function lttng_add_trigger()
2323{
2324 local expected_to_fail="$1"
2325 local trigger_name="$2"
2326 shift 2
50ad0862 2327 local args=("$@")
70c766ac 2328
50ad0862
SM
2329 diag "$TESTDIR/../src/bin/lttng/$LTTNG_BIN add-trigger --name $trigger_name ${args[*]}"
2330 $TESTDIR/../src/bin/lttng/$LTTNG_BIN add-trigger --name "$trigger_name" "${args[@]}" 1> /dev/null 2> /dev/null
70c766ac
FD
2331 ret=$?
2332 if [[ $expected_to_fail -eq "1" ]]; then
2333 test "$ret" -ne "0"
2334 ok $? "Add trigger $trigger_name failed as expected"
2335 else
2336 ok $ret "Add trigger $trigger_name"
2337 fi
2338}
2339
2340function lttng_remove_trigger()
2341{
2342 local expected_to_fail="$1"
2343 local trigger_name="$2"
96bb1ae8 2344 shift 2
70c766ac 2345
cd46061a
JR
2346 diag "$TESTDIR/../src/bin/lttng/$LTTNG_BIN remove-trigger $trigger_name $*"
2347 "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" remove-trigger "$trigger_name" "$@" 1> /dev/null 2> /dev/null
70c766ac
FD
2348 ret=$?
2349 if [[ $expected_to_fail -eq "1" ]]; then
2350 test "$ret" -ne "0"
2351 ok $? "Remove trigger $trigger_name failed as expected"
2352 else
2353 ok $ret "Remove trigger $trigger_name"
2354 fi
2355}
2356
2357function lttng_add_trigger_ok()
2358{
2359 lttng_add_trigger 0 "$@"
2360}
2361
38eb8a68
FD
2362function lttng_add_trigger_fail()
2363{
2364 lttng_add_trigger 1 "$@"
2365}
2366
70c766ac
FD
2367function lttng_remove_trigger_ok()
2368{
2369 lttng_remove_trigger 0 "$@"
2370}
e4061179 2371
98af972a
FD
2372function list_triggers_matches_ok ()
2373{
7539dcec
FD
2374 local tmp_stdout=$(mktemp --tmpdir -t "tmp.${FUNCNAME[0]}_stdout.XXXXXX")
2375 local tmp_stderr=$(mktemp --tmpdir -t "tmp.${FUNCNAME[0]}_stderr.XXXXXX")
98af972a
FD
2376
2377 local test_name="$1"
2378 local expected_stdout_file="$2"
2379
2380 diag "$TESTDIR/../src/bin/lttng/$LTTNG_BIN list-triggers"
2381
2382 "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" list-triggers > "${tmp_stdout}" 2> "${tmp_stderr}"
2383 ok $? "${test_name}: exit code is 0"
2384
2385 diff -u "${expected_stdout_file}" "${tmp_stdout}"
2386 ok $? "${test_name}: expected stdout"
2387
2388 diff -u /dev/null "${tmp_stderr}"
2389 ok $? "${test_name}: expected stderr"
2390
2391 rm -f "${tmp_stdout}"
2392 rm -f "${tmp_stderr}"
2393}
2394
831f8599
JR
2395function list_triggers_matches_mi_ok ()
2396{
2397 local tmp_stdout
2398 local tmp_stdout_raw
2399 local tmp_stderr
2400
2401 local test_name="$1"
2402 local expected_stdout_file="$2"
2403
2404 tmp_stdout_raw=$(mktemp --tmpdir -t "tmp.${FUNCNAME[0]}_stdout.XXXXXX")
2405 tmp_stdout=$(mktemp --tmpdir -t "tmp.${FUNCNAME[0]}_stdout.XXXXXX")
2406 tmp_stderr=$(mktemp --tmpdir -t "tmp.${FUNCNAME[0]}_stderr.XXXXXX")
2407
2408 diag "$TESTDIR/../src/bin/lttng/$LTTNG_BIN --mi xml list-triggers"
2409
2410 "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" --mi=xml list-triggers > "${tmp_stdout_raw}" 2> "${tmp_stderr}"
2411 ok $? "${test_name}: exit code is 0"
2412
2413 # Pretty-fy xml before further test.
045ce78b 2414 $XML_PRETTY < "${tmp_stdout_raw}" > "${tmp_stdout}"
831f8599 2415
045ce78b 2416 $MI_VALIDATE "${tmp_stdout}"
831f8599
JR
2417 ok $? "list-trigger mi is valid"
2418
2419 diff -u "${expected_stdout_file}" "${tmp_stdout}"
2420 ok $? "${test_name}: expected stdout"
2421
2422 diff -u /dev/null "${tmp_stderr}"
2423 ok $? "${test_name}: expected stderr"
2424
2425 rm -f "${tmp_stdout}"
2426 rm -f "${tmp_stdout_raw}"
2427 rm -f "${tmp_stderr}"
2428}
2429
e4061179
JR
2430function validate_path_pattern ()
2431{
2432 local message=$1
2433 local pattern=$2
2434 # Base path is only used in error case and is used to list the content
2435 # of the base path.
2436 local base_path=$3
2437
2438
2439 [ -f $pattern ]
2440 ret=$?
2441 ok $ret "$message"
2442
2443 if [ "$ret" -ne "0" ]; then
2444 diag "Path pattern expected: $pattern"
2445 # List the tracepath for more info. We use find as a recursive
2446 # directory lister.
2447 diag "The base path content:"
2448 find "$base_path" -print
2449 fi
2450}
2451
2452function validate_trace_path_ust_uid ()
2453{
2454 local trace_path=$1
2455 local session_name=$2
2456 local uid=$UID
2457 local pattern="$trace_path/$session_name-$date_time_pattern/ust/uid/$uid/${system_long_bit_size}-bit/metadata"
2458
2459 validate_path_pattern "UST per-uid trace path is valid" "$pattern" "$trace_path"
2460}
2461
2462function validate_trace_path_ust_uid_network ()
2463{
2464 local trace_path=$1
2465 local session_name=$2
2466 local base_path=$3
2467 local uid=$UID
2468 local hostname=$HOSTNAME
2469 local pattern
2470 local ret
2471
2472 # If the session was given a network base path (e.g
2473 # 127.0.0.1/my/custom/path on creation, there is no session name
2474 # component to the path on the relayd side. Caller can simply not pass a
2475 # session name for this scenario.
2476 if [ -n "$session_name" ]; then
2477 session_name="$session_name-$date_time_pattern"
2478 if [ -n "$base_path" ]; then
2479 fail "Session name and base path are mutually exclusive"
2480 return
2481 fi
2482 fi
2483
2484 pattern="$trace_path/$hostname/$base_path/$session_name/ust/uid/$uid/${system_long_bit_size}-bit/metadata"
2485
2486 validate_path_pattern "UST per-uid network trace path is valid" "$pattern" "$trace_path"
2487}
2488
2489function validate_trace_path_ust_uid_snapshot_network ()
2490{
2491 local trace_path=$1
2492 local session_name=$2
2493 local snapshot_name=$3
2494 local snapshot_number=$4
2495 local base_path=$5
2496 local hostname=$HOSTNAME
2497 local uid=$UID
2498 local pattern
2499 local ret
2500
2501 # If the session/output was given a network base path (e.g
2502 # 127.0.0.1/my/custom/path on creation, there is no session name
2503 # component to the path on the relayd side. Caller can simply not pass a
2504 # session name for this scenario.
2505 if [ -n "$session_name" ]; then
2506 session_name="$session_name-$date_time_pattern"
2507 if [ -n "$base_path" ]; then
2508 fail "Session name and base path are mutually exclusive"
2509 return
2510 fi
2511 fi
2512
2513 pattern="$trace_path/$hostname/$base_path/$session_name/$snapshot_name-$date_time_pattern-$snapshot_number/ust/uid/$uid/${system_long_bit_size}-bit/metadata"
2514
2515 validate_path_pattern "UST per-uid network snapshot trace path is valid" "$pattern" "$trace_path"
2516}
2517
2518function validate_trace_path_ust_uid_snapshot ()
2519{
2520 local trace_path=$1
2521 local session_name=$2
2522 local snapshot_name=$3
2523 local snapshot_number=$4
2524 local base_path=$5
2525 local uid=$UID
2526 local pattern
2527 local ret
2528
2529 # If the session/output was given a network base path (e.g
2530 # 127.0.0.1/my/custom/path) on creation, there is no session name
2531 # component to the path on the relayd side. Caller can simply not pass a
2532 # session name for this scenario.
2533 if [ -n "$session_name" ]; then
2534 session_name="$session_name-$date_time_pattern"
2535 if [ -n "$base_path" ]; then
2536 fail "Session name and base path are mutually exclusive"
2537 return
2538 fi
2539 fi
2540
2541 pattern="$trace_path/$base_path/$session_name/$snapshot_name-$date_time_pattern-$snapshot_number/ust/uid/$uid/${system_long_bit_size}-bit/metadata"
2542
2543 validate_path_pattern "UST per-uid snapshot trace path is valid" "$pattern" "$trace_path"
2544}
2545
2546function validate_trace_path_ust_pid ()
2547{
2548 local trace_path=$1
2549 local session_name=$2
2550 local app_string=$3
2551 local pid=$4
2552 local pattern
2553 local ret
2554
2555 # If the session was given a trace path on creation, there is no session
2556 # name component to the path. Caller can simply not pass a session name
2557 # for this scenario.
2558 if [ -n "$session_name" ]; then
2559 session_name="$session_name-$date_time_pattern"
2560 fi
2561
2562 pattern="$trace_path/$session_name/ust/pid/$pid/$app_string-*-$date_time_pattern/metadata"
2563
2564 validate_path_pattern "UST per-pid trace path is valid" "$pattern" "$trace_path"
2565}
2566
2567function validate_trace_path_kernel ()
2568{
2569 local trace_path=$1
2570 local session_name=$2
2571 local pattern
2572
2573 # If the session was given a trace path on creation, there is no session
2574 # name component to the path. Caller can simply not pass a session name
2575 # for this scenario.
2576 if [ -n "$session_name" ]; then
2577 session_name="$session_name-$date_time_pattern"
2578 fi
2579
2580 pattern="$trace_path/$session_name/kernel/metadata"
2581
2582 validate_path_pattern "Kernel trace path is valid" "$pattern" "$trace_path"
2583}
2584
2585function validate_trace_path_kernel_network ()
2586{
2587 local trace_path=$1
2588 local session_name=$2
2589 local hostname=$HOSTNAME
2590 local pattern="$trace_path/$hostname/$session_name-$date_time_pattern/kernel/metadata"
2591
2592 validate_path_pattern "Kernel network trace path is valid" "$pattern" "$trace_path"
2593}
2594
2595function validate_trace_path_kernel_snapshot ()
2596{
2597 local trace_path=$1
2598 local session_name=$2
2599 local snapshot_name=$3
2600 local snapshot_number=$4
2601 local base_path=$5
2602 local pattern
2603 local ret
2604
2605 # If the session/output was given a network base path (e.g
2606 # 127.0.0.1/my/custom/path on creation, there is no session name
2607 # component to the path on the relayd side. Caller can simply not pass a
2608 # session name for this scenario.
2609 if [ -n "$session_name" ]; then
2610 session_name="$session_name-$date_time_pattern"
2611 if [ -n "$base_path" ]; then
2612 fail "Session name and base path are mutually exclusive"
2613 return
2614 fi
2615 fi
2616
2617 pattern="$trace_path/$base_path/$session_name/$snapshot_name-$date_time_pattern-$snapshot_number/kernel/metadata"
2618
2619 validate_path_pattern "Kernel snapshot trace path is valid" "$pattern" "$trace_path"
2620}
2621
2622function validate_trace_path_kernel_snapshot_network ()
2623{
2624 local trace_path=$1
2625 local session_name=$2
2626 local snapshot_name=$3
2627 local snapshot_number=$4
2628 local base_path=$5
2629 local hostname=$HOSTNAME
2630 local pattern
2631 local ret
2632
2633 # If the session/output was given a network base path (e.g
2634 # 127.0.0.1/my/custom/path on creation, there is no session name
2635 # component to the path on the relayd side. Caller can simply not pass a
2636 # session name for this scenario.
2637 if [ -n "$session_name" ]; then
2638 session_name="$session_name-$date_time_pattern"
2639 if [ -n "$base_path" ]; then
2640 fail "Session name and base path are mutually exclusive"
2641 return
2642 fi
2643 fi
2644
2645 pattern="$trace_path/$hostname/$base_path/$session_name/$snapshot_name-$date_time_pattern-$snapshot_number/kernel/metadata"
2646
2647 validate_path_pattern "Kernel network snapshot trace path is valid" "$pattern" "$trace_path"
2648}
This page took 0.183129 seconds and 4 git commands to generate.