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