1 # Copyright (C) 2012 David Goulet <dgoulet@efficios.com>
3 # SPDX-License-Identifier: LGPL-2.1-only
6 SESSIOND_BIN
="lttng-sessiond"
7 SESSIOND_MATCH
=".*lttng-sess.*"
8 RUNAS_BIN
="lttng-runas"
9 RUNAS_MATCH
=".*lttng-runas.*"
10 CONSUMERD_BIN
="lttng-consumerd"
11 CONSUMERD_MATCH
=".*lttng-consumerd.*"
12 RELAYD_BIN
="lttng-relayd"
13 RELAYD_MATCH
=".*lttng-relayd.*"
15 BABELTRACE_BIN
="babeltrace"
17 ERROR_OUTPUT_DEST
=/dev
/null
19 # To match 20201127-175802
20 date_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]"
21 # The size of a long on this system
22 system_long_bit_size
=$
(getconf LONG_BIT
)
24 # Minimal kernel version supported for session daemon tests
25 KERNEL_MAJOR_VERSION
=2
26 KERNEL_MINOR_VERSION
=6
27 KERNEL_PATCHLEVEL_VERSION
=27
29 # We set the default UST register timeout and network and app socket timeout to
30 # "wait forever", so that basic tests don't have to worry about hitting
31 # timeouts on busy systems. Specialized tests should test those corner-cases.
32 export LTTNG_UST_REGISTER_TIMEOUT
=-1
33 export LTTNG_NETWORK_SOCKET_TIMEOUT
=-1
34 export LTTNG_APP_SOCKET_TIMEOUT
=-1
36 # We set the default lttng-sessiond path to /bin/true to prevent the spawning
37 # of a daemonized sessiond. This is necessary since 'lttng create' will spawn
38 # its own sessiond if none is running. It also ensures that 'lttng create'
39 # fails when no sessiond is running.
40 export LTTNG_SESSIOND_PATH
="/bin/true"
42 source $TESTDIR/utils
/tap
/tap.sh
44 if [ -z ${LTTNG_TEST_TEARDOWN_TIMEOUT+x} ]; then
45 LTTNG_TEST_TEARDOWN_TIMEOUT
=60
48 function full_cleanup
()
50 # Try to kill daemons gracefully
51 stop_lttng_relayd_notap SIGTERM
$LTTNG_TEST_TEARDOWN_TIMEOUT
52 stop_lttng_sessiond_notap SIGTERM
$LTTNG_TEST_TEARDOWN_TIMEOUT
54 # If daemons are still present, forcibly kill them
55 stop_lttng_relayd_notap SIGKILL
$LTTNG_TEST_TEARDOWN_TIMEOUT
56 stop_lttng_sessiond_notap SIGKILL
$LTTNG_TEST_TEARDOWN_TIMEOUT
57 stop_lttng_consumerd_notap SIGKILL
$LTTNG_TEST_TEARDOWN_TIMEOUT
59 # Disable trap for SIGTERM since the following kill to the
60 # pidgroup will be SIGTERM. Otherwise it loops.
61 # The '-' before the pid number ($$) indicates 'kill' to signal the
62 # whole process group.
63 trap - SIGTERM
&& kill -- -$$
67 function null_pipes
()
74 trap full_cleanup SIGINT SIGTERM
76 # perl prove closes its child pipes before giving it a chance to run its
77 # signal trap handlers. Redirect pipes to /dev/null if SIGPIPE is caught
78 # to allow those trap handlers to proceed.
80 trap null_pipes SIGPIPE
84 # Check if we are a terminal
86 echo -e "\e[1;32mOK\e[0m"
92 function print_fail
()
94 # Check if we are a terminal
96 echo -e "\e[1;31mFAIL\e[0m"
102 function print_test_banner
()
108 function validate_kernel_version
()
110 local kern_version
=($
(uname
-r |
awk -F.
'{ printf("%d.%d.%d\n",$1,$2,$3); }' |
tr '.' '\n'))
111 if [ ${kern_version[0]} -gt $KERNEL_MAJOR_VERSION ]; then
114 if [ ${kern_version[1]} -gt $KERNEL_MINOR_VERSION ]; then
117 if [ ${kern_version[2]} -ge $KERNEL_PATCHLEVEL_VERSION ]; then
123 # Generate a random string
124 # $1 = number of characters; defaults to 16
125 # $2 = include special characters; 1 = yes, 0 = no; defaults to yes
126 function randstring
()
128 [ "$2" == "0" ] && CHAR
="[:alnum:]" || CHAR
="[:graph:]"
129 cat /dev
/urandom
2>/dev
/null |
tr -cd "$CHAR" 2>/dev
/null |
head -c ${1:-16} 2>/dev
/null
133 # Return the number of _configured_ CPUs.
134 function conf_proc_count
()
136 getconf _NPROCESSORS_CONF
137 if [ $?
-ne 0 ]; then
138 diag
"Failed to get the number of configured CPUs"
143 # Check if base lttng-modules are present.
144 # Bail out on failure
145 function validate_lttng_modules_present
()
147 # Check for loadable modules.
148 modprobe
-n lttng-tracer
2>/dev
/null
149 if [ $?
-eq 0 ]; then
153 # Check for builtin modules.
154 ls /proc
/lttng
> /dev
/null
2>&1
155 if [ $?
-eq 0 ]; then
159 BAIL_OUT
"LTTng modules not detected."
162 function enable_kernel_lttng_event
165 local expected_to_fail
="$2"
167 local event_name
="$4"
168 local channel_name
="$5"
170 if [ -z "$event_name" ]; then
171 # Enable all event if no event name specified
175 if [ -z "$channel_name" ]; then
176 # default channel if none specified
179 chan
="-c $channel_name"
182 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-event
"$event_name" $chan -s $sess_name -k 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
184 if [[ $expected_to_fail -eq "1" ]]; then
187 if [ $withtap -eq "1" ]; then
188 ok
$ret "Enable kernel event $event_name for session $session_name on channel $channel_name failed as expected"
191 if [ $withtap -eq "1" ]; then
192 ok
$ret "Enable kernel event $event_name for session $sess_name"
197 function enable_kernel_lttng_event_ok
()
199 enable_kernel_lttng_event
1 0 "$@"
202 function enable_kernel_lttng_event_fail
()
204 enable_kernel_lttng_event
1 1 "$@"
207 function enable_kernel_lttng_event_notap
()
209 enable_kernel_lttng_event
0 0 "$@"
213 function lttng_enable_kernel_event
215 enable_kernel_lttng_event_ok
"$@"
218 function lttng_enable_kernel_syscall
()
220 local expected_to_fail
=$1
222 local syscall_name
=$3
223 local channel_name
=$4
225 if [ -z $syscall_name ]; then
226 # Enable all event if no syscall name specified
230 if [ -z $channel_name ]; then
231 # default channel if none specified
234 chan
="-c $channel_name"
237 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-event
--syscall "$syscall_name" $chan -s $sess_name -k 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
239 if [[ $expected_to_fail -eq "1" ]]; then
241 ok $?
"Enable kernel syscall $syscall_name for session $sess_name on channel $channel_name fail as expected"
243 ok
$ret "Enable kernel syscall $syscall_name for session $sess_name on channel $channel_name"
247 function lttng_enable_kernel_syscall_ok
()
249 lttng_enable_kernel_syscall
0 "$@"
252 function lttng_enable_kernel_syscall_fail
()
254 lttng_enable_kernel_syscall
1 "$@"
257 function lttng_disable_kernel_syscall
()
259 local expected_to_fail
=$1
261 local syscall_name
=$3
262 local channel_name
=$4
264 if [ -z $syscall_name ]; then
265 # Enable all event if no syscall name specified
269 if [ -z $channel_name ]; then
270 # default channel if none specified
273 chan
="-c $channel_name"
276 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN disable-event
--syscall "$syscall_name" $chan -s $sess_name -k 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
279 if [[ $expected_to_fail -eq "1" ]]; then
281 ok $?
"Disable kernel syscall $syscall_name for session $sess_name on channel $channel_name failed as expected"
283 ok
$ret "Disable kernel syscall $syscall_name for session $sess_name on channel $channel_name"
287 function lttng_disable_kernel_syscall_ok
()
289 lttng_disable_kernel_syscall
0 "$@"
292 function lttng_disable_kernel_syscall_fail
()
294 lttng_disable_kernel_syscall
1 "$@"
297 function lttng_enable_kernel_userspace_probe_event
()
299 local expected_to_fail
="$1"
302 local event_name
="$4"
304 "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" enable-event
--kernel --userspace-probe="$target" "$event_name" -s "$sess_name" > "$OUTPUT_DEST" 2> "$ERROR_OUTPUT_DEST"
306 if [[ $expected_to_fail -eq "1" ]]; then
308 ok $?
"Enable kernel userspace probe event for session $sess_name failed as expected"
310 ok
$ret "Enable kernel userspace probe event for session $sess_name"
314 function lttng_enable_kernel_userspace_probe_event_fail
()
316 lttng_enable_kernel_userspace_probe_event
1 "$@"
319 function lttng_enable_kernel_userspace_probe_event_ok
()
321 lttng_enable_kernel_userspace_probe_event
0 "$@"
324 function disable_kernel_lttng_userspace_probe_event_ok
()
327 local event_name
="$2"
329 "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" disable-event
--kernel "$event_name" -s "$sess_name" > "$OUTPUT_DEST" 2> "$ERROR_OUTPUT_DEST"
330 ok $?
"Disable kernel event $target for session $sess_name"
332 function lttng_enable_kernel_channel
()
335 local expected_to_fail
=$2
337 local channel_name
=$4
340 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-channel
-k $channel_name -s $sess_name $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
342 if [[ $expected_to_fail -eq "1" ]]; then
345 if [ $withtap -eq "1" ]; then
346 ok
$ret "Enable channel $channel_name for session $sess_name failed as expected"
349 if [ $withtap -eq "1" ]; then
350 ok
$ret "Enable channel $channel_name for session $sess_name"
355 function lttng_enable_kernel_channel_ok
()
357 lttng_enable_kernel_channel
1 0 "$@"
360 function lttng_enable_kernel_channel_fail
()
362 lttng_enable_kernel_channel
1 1 "$@"
365 function lttng_enable_kernel_channel_notap
()
367 lttng_enable_kernel_channel
0 0 "$@"
370 function enable_kernel_lttng_channel_ok
()
372 lttng_enable_kernel_channel
1 0 "$@"
375 function lttng_disable_kernel_channel
()
377 local expected_to_fail
=$1
379 local channel_name
=$3
381 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN disable-channel
-k $channel_name -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
383 if [[ $expected_to_fail -eq "1" ]]; then
385 ok $?
"Disable channel $channel_name for session $sess_name failed as expected"
387 ok
$ret "Disable channel $channel_name for session $sess_name"
391 function lttng_disable_kernel_channel_ok
()
393 lttng_disable_kernel_channel
0 "$@"
396 function lttng_disable_kernel_channel_fail
()
398 lttng_disable_kernel_channel
1 "$@"
401 function start_lttng_relayd_opt
()
404 local process_mode
=$2
407 DIR
=$
(readlink
-f "$TESTDIR")
409 if [ -z $
(pgrep
$RELAYD_MATCH) ]; then
410 # shellcheck disable=SC2086
411 $DIR/..
/src
/bin
/lttng-relayd
/$RELAYD_BIN $process_mode $opt 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
412 #$DIR/../src/bin/lttng-relayd/$RELAYD_BIN $opt -vvv >>/tmp/relayd.log 2>&1 &
413 if [ $?
-eq 1 ]; then
414 if [ $withtap -eq "1" ]; then
415 fail
"Start lttng-relayd (process mode: $process_mode opt: $opt)"
419 if [ $withtap -eq "1" ]; then
420 pass
"Start lttng-relayd (process mode: $process_mode opt: $opt)"
424 pass
"Start lttng-relayd (opt: $opt)"
428 function start_lttng_relayd
()
430 start_lttng_relayd_opt
1 "-b" "$@"
433 function start_lttng_relayd_notap
()
435 start_lttng_relayd_opt
0 "-b" "$@"
438 function stop_lttng_relayd_opt
()
443 if [ -z "$signal" ]; then
450 # Multiply time by 2 to simplify integer arithmetic
451 if [ -n "$timeout_s" ]; then
452 dtimeleft_s
=$
((timeout_s
* 2))
458 pids
=$
(pgrep
"$RELAYD_MATCH")
459 if [ -z "$pids" ]; then
460 if [ "$withtap" -eq "1" ]; then
461 pass
"No relay daemon to kill"
466 diag
"Killing (signal $signal) lttng-relayd (pid: $pids)"
468 # shellcheck disable=SC2086
469 if ! kill -s $signal $pids 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST; then
471 if [ "$withtap" -eq "1" ]; then
472 fail
"Kill relay daemon"
476 while [ -n "$out" ]; do
477 out
=$
(pgrep
"$RELAYD_MATCH")
478 if [ -n "$dtimeleft_s" ]; then
479 if [ $dtimeleft_s -lt 0 ]; then
483 dtimeleft_s
=$
((dtimeleft_s
- 1))
487 if [ "$withtap" -eq "1" ]; then
488 if [ "$retval" -eq "0" ]; then
489 pass
"Wait after kill relay daemon"
491 fail
"Wait after kill relay daemon"
498 function stop_lttng_relayd
()
500 stop_lttng_relayd_opt
1 "$@"
503 function stop_lttng_relayd_notap
()
505 stop_lttng_relayd_opt
0 "$@"
508 #First arg: show tap output
509 #Second argument: load path for automatic loading
510 function start_lttng_sessiond_opt
()
518 local long_bit_value
=
519 long_bit_value
=$
(getconf LONG_BIT
)
521 if [ -n "$TEST_NO_SESSIOND" ] && [ "$TEST_NO_SESSIOND" == "1" ]; then
522 # Env variable requested no session daemon
526 DIR
=$
(readlink
-f "$TESTDIR")
528 # Get long_bit value for 32/64 consumerd
529 case "$long_bit_value" in
531 consumerd
="--consumerd32-path=$DIR/../src/bin/lttng-consumerd/lttng-consumerd"
534 consumerd
="--consumerd64-path=$DIR/../src/bin/lttng-consumerd/lttng-consumerd"
541 # Check for env. variable. Allow the use of LD_PRELOAD etc.
542 if [[ "x${LTTNG_SESSIOND_ENV_VARS}" != "x" ]]; then
543 env_vars
="${LTTNG_SESSIOND_ENV_VARS} "
545 env_vars
="${env_vars}$DIR/../src/bin/lttng-sessiond/$SESSIOND_BIN"
547 if ! validate_kernel_version
; then
548 fail
"Start session daemon"
549 BAIL_OUT
"*** Kernel too old for session daemon tests ***"
552 : "${LTTNG_SESSION_CONFIG_XSD_PATH="${DIR}/../src/common/config/"}"
553 export LTTNG_SESSION_CONFIG_XSD_PATH
555 if [ -z "$(pgrep "${SESSIOND_MATCH}")" ]; then
557 if [ -n "$load_path" ]; then
558 # shellcheck disable=SC2086
559 env
$env_vars --load "$load_path" --background "$consumerd"
561 # shellcheck disable=SC2086
562 env
$env_vars --background "$consumerd"
564 #$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
566 if [ "$withtap" -eq "1" ]; then
567 ok
$status "Start session daemon"
572 function start_lttng_sessiond
()
574 start_lttng_sessiond_opt
1 "$@"
577 function start_lttng_sessiond_notap
()
579 start_lttng_sessiond_opt
0 "$@"
582 function stop_lttng_sessiond_opt
()
587 if [ -z "$signal" ]; then
594 # Multiply time by 2 to simplify integer arithmetic
595 if [ -n "$timeout_s" ]; then
596 dtimeleft_s
=$
((timeout_s
* 2))
599 if [ -n "$TEST_NO_SESSIOND" ] && [ "$TEST_NO_SESSIOND" == "1" ]; then
600 # Env variable requested no session daemon
607 runas_pids
=$
(pgrep
"$RUNAS_MATCH")
610 pids
=$
(pgrep
"$SESSIOND_MATCH")
612 if [ -n "$runas_pids" ]; then
613 pids
="$pids $runas_pids"
616 if [ -z "$pids" ]; then
617 if [ "$withtap" -eq "1" ]; then
618 pass
"No session daemon to kill"
623 diag
"Killing (signal $signal) $SESSIOND_BIN and lt-$SESSIOND_BIN pids: $(echo "$pids" | tr '\n' ' ')"
625 # shellcheck disable=SC2086
626 if ! kill -s $signal $pids 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST; then
628 if [ "$withtap" -eq "1" ]; then
629 fail
"Kill sessions daemon"
633 while [ -n "$out" ]; do
634 out
=$
(pgrep
"${SESSIOND_MATCH}")
635 if [ -n "$dtimeleft_s" ]; then
636 if [ $dtimeleft_s -lt 0 ]; then
640 dtimeleft_s
=$
((dtimeleft_s
- 1))
645 while [ -n "$out" ]; do
646 out
=$
(pgrep
"$CONSUMERD_MATCH")
647 if [ -n "$dtimeleft_s" ]; then
648 if [ $dtimeleft_s -lt 0 ]; then
652 dtimeleft_s
=$
((dtimeleft_s
- 1))
657 if [ "$withtap" -eq "1" ]; then
658 if [ "$retval" -eq "0" ]; then
659 pass
"Wait after kill session daemon"
661 fail
"Wait after kill session daemon"
665 if [ "$signal" = "SIGKILL" ]; then
666 if [ "$(id -u)" -eq "0" ]; then
668 modules
="$(lsmod | grep ^lttng | awk '{print $1}')"
670 if [ -n "$modules" ]; then
671 diag
"Unloading all LTTng modules"
672 modprobe
--remove "$modules"
680 function stop_lttng_sessiond
()
682 stop_lttng_sessiond_opt
1 "$@"
685 function stop_lttng_sessiond_notap
()
687 stop_lttng_sessiond_opt
0 "$@"
690 function sigstop_lttng_sessiond_opt
()
695 if [ -n "$TEST_NO_SESSIOND" ] && [ "$TEST_NO_SESSIOND" == "1" ]; then
696 # Env variable requested no session daemon
700 PID_SESSIOND
="$(pgrep "${SESSIOND_MATCH}") $(pgrep "$RUNAS_MATCH")"
702 if [ "$withtap" -eq "1" ]; then
703 diag
"Sending SIGSTOP to lt-$SESSIOND_BIN and $SESSIOND_BIN pids: $(echo "$PID_SESSIOND" | tr '\n' ' ')"
706 # shellcheck disable=SC2086
707 if ! kill -s $signal $PID_SESSIOND 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST; then
708 if [ "$withtap" -eq "1" ]; then
709 fail
"Sending SIGSTOP to session daemon"
713 while [ $out -ne 0 ]; do
714 pid
="$(pgrep "$SESSIOND_MATCH")"
716 # Wait until state becomes stopped for session
719 for sessiond_pid
in $pid; do
720 state
="$(ps -p "$sessiond_pid" -o state= )"
721 if [[ -n "$state" && "$state" != "T" ]]; then
727 if [ "$withtap" -eq "1" ]; then
728 pass
"Sending SIGSTOP to session daemon"
733 function sigstop_lttng_sessiond
()
735 sigstop_lttng_sessiond_opt
1 "$@"
738 function sigstop_lttng_sessiond_notap
()
740 sigstop_lttng_sessiond_opt
0 "$@"
743 function stop_lttng_consumerd_opt
()
748 if [ -z "$signal" ]; then
755 # Multiply time by 2 to simplify integer arithmetic
756 if [ -n "$timeout_s" ]; then
757 dtimeleft_s
=$
((timeout_s
* 2))
762 PID_CONSUMERD
="$(pgrep "$CONSUMERD_MATCH")"
764 if [ -z "$PID_CONSUMERD" ]; then
765 if [ "$withtap" -eq "1" ]; then
766 pass
"No consumer daemon to kill"
771 diag
"Killing (signal $signal) $CONSUMERD_BIN pids: $(echo "$PID_CONSUMERD" | tr '\n' ' ')"
773 # shellcheck disable=SC2086
774 if ! kill -s $signal $PID_CONSUMERD 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST; then
776 if [ "$withtap" -eq "1" ]; then
777 fail
"Kill consumer daemon"
781 while [ $out -ne 0 ]; do
782 pid
="$(pgrep "$CONSUMERD_MATCH")"
784 # If consumerds are still present check their status.
785 # A zombie status qualifies the consumerd as *killed*
787 for consumer_pid
in $pid; do
788 state
="$(ps -p "$consumer_pid" -o state= )"
789 if [[ -n "$state" && "$state" != "Z" ]]; then
793 if [ -n "$dtimeleft_s" ]; then
794 if [ $dtimeleft_s -lt 0 ]; then
798 dtimeleft_s
=$
((dtimeleft_s
- 1))
802 if [ "$withtap" -eq "1" ]; then
803 if [ "$retval" -eq "0" ]; then
804 pass
"Wait after kill consumer daemon"
806 fail
"Wait after kill consumer daemon"
814 function stop_lttng_consumerd
()
816 stop_lttng_consumerd_opt
1 "$@"
819 function stop_lttng_consumerd_notap
()
821 stop_lttng_consumerd_opt
0 "$@"
824 function sigstop_lttng_consumerd_opt
()
829 PID_CONSUMERD
="$(pgrep "$CONSUMERD_MATCH")"
831 diag
"Sending SIGSTOP to $CONSUMERD_BIN pids: $(echo "$PID_CONSUMERD" | tr '\n' ' ')"
833 # shellcheck disable=SC2086
834 kill -s $signal $PID_CONSUMERD 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
837 if [ $retval -eq 1 ]; then
838 if [ "$withtap" -eq "1" ]; then
839 fail
"Sending SIGSTOP to consumer daemon"
844 while [ $out -ne 0 ]; do
845 pid
="$(pgrep "$CONSUMERD_MATCH")"
847 # Wait until state becomes stopped for all
850 for consumer_pid
in $pid; do
851 state
="$(ps -p "$consumer_pid" -o state= )"
852 if [[ -n "$state" && "$state" != "T" ]]; then
858 if [ "$withtap" -eq "1" ]; then
859 pass
"Sending SIGSTOP to consumer daemon"
865 function sigstop_lttng_consumerd
()
867 sigstop_lttng_consumerd_opt
1 "$@"
870 function sigstop_lttng_consumerd_notap
()
872 sigstop_lttng_consumerd_opt
0 "$@"
875 function list_lttng_with_opts
()
878 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN list
$opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
879 ok $?
"Lttng-tool list command with option $opts"
882 function create_lttng_session_no_output
()
887 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN create
$sess_name --no-output $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
888 ok $?
"Create session $sess_name in no-output mode"
891 function create_lttng_session_uri
() {
896 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN create
$sess_name -U $uri $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
897 ok $?
"Create session $sess_name with uri:$uri and opts: $opts"
900 function create_lttng_session
()
903 local expected_to_fail
=$2
908 if [ -z "$trace_path" ]; then
909 # Use lttng-sessiond default output.
912 trace_path
="-o $trace_path"
915 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN create
"$sess_name" $trace_path $opt 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
917 if [ $expected_to_fail -eq "1" ]; then
920 if [ $withtap -eq "1" ]; then
921 ok
$ret "Create session $sess_name in $trace_path failed as expected"
924 if [ $withtap -eq "1" ]; then
925 ok
$ret "Create session $sess_name in $trace_path"
931 function create_lttng_session_ok
()
933 create_lttng_session
1 0 "$@"
936 function create_lttng_session_fail
()
938 create_lttng_session
1 1 "$@"
941 function create_lttng_session_notap
()
943 create_lttng_session
0 0 "$@"
947 function enable_ust_lttng_channel
()
950 local expected_to_fail
=$2
952 local channel_name
=$4
955 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-channel
-u $channel_name -s $sess_name $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
957 if [[ $expected_to_fail -eq "1" ]]; then
960 if [ $withtap -eq "1" ]; then
961 ok
$ret "Enable channel $channel_name for session $sess_name failed as expected"
964 if [ $withtap -eq "1" ]; then
965 ok
$ret "Enable channel $channel_name for session $sess_name"
971 function enable_ust_lttng_channel_ok
()
973 enable_ust_lttng_channel
1 0 "$@"
976 function enable_ust_lttng_channel_fail
()
978 enable_ust_lttng_channel
1 1 "$@"
981 function enable_ust_lttng_channel_notap
()
983 enable_ust_lttng_channel
0 0 "$@"
986 function disable_ust_lttng_channel
()
989 local channel_name
=$2
991 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN disable-channel
-u $channel_name -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
992 ok $?
"Disable channel $channel_name for session $sess_name"
995 function enable_lttng_mmap_overwrite_kernel_channel
()
998 local channel_name
=$2
1000 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-channel
-s $sess_name $channel_name -k --output mmap
--overwrite 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1001 ok $?
"Enable channel $channel_name for session $sess_name"
1004 function enable_lttng_mmap_discard_small_kernel_channel
()
1007 local channel_name
=$2
1009 $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
1010 ok $?
"Enable small discard channel $channel_name for session $sess_name"
1013 function enable_lttng_mmap_overwrite_small_kernel_channel
()
1016 local channel_name
=$2
1018 $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
1019 ok $?
"Enable small discard channel $channel_name for session $sess_name"
1022 function enable_lttng_mmap_overwrite_ust_channel
()
1025 local channel_name
=$2
1027 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-channel
-s $sess_name $channel_name -u --output mmap
--overwrite 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1028 ok $?
"Enable channel $channel_name for session $sess_name"
1031 function enable_ust_lttng_event
()
1034 local expected_to_fail
=$2
1036 local event_name
="$4"
1037 local channel_name
=$5
1039 if [ -z $channel_name ]; then
1040 # default channel if none specified
1043 chan
="-c $channel_name"
1046 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-event
"$event_name" $chan -s $sess_name -u 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1048 if [[ $expected_to_fail -eq "1" ]]; then
1051 if [[ $withtap -eq "1" ]]; then
1052 ok
$ret "Enable ust event $event_name for session $session_name failed as expected"
1055 if [[ $withtap -eq "1" ]]; then
1056 ok
$ret "Enable ust event $event_name for session $sess_name"
1062 function enable_ust_lttng_event_ok
()
1064 enable_ust_lttng_event
1 0 "$@"
1067 function enable_ust_lttng_event_fail
()
1069 enable_ust_lttng_event
1 1 "$@"
1072 function enable_ust_lttng_event_notap
()
1074 enable_ust_lttng_event
0 0 "$@"
1077 function enable_jul_lttng_event
()
1083 if [ -z $channel_name ]; then
1084 # default channel if none specified
1087 chan
="-c $channel_name"
1090 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-event
"$event_name" $chan -s $sess_name -j 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1091 ok $?
"Enable JUL event $event_name for session $sess_name"
1094 function enable_jul_lttng_event_loglevel
()
1097 local event_name
="$2"
1099 local channel_name
=$4
1101 if [ -z $channel_name ]; then
1102 # default channel if none specified
1105 chan
="-c $channel_name"
1108 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-event
--loglevel $loglevel "$event_name" $chan -s $sess_name -j 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1109 ok $?
"Enable JUL event $event_name for session $sess_name with loglevel $loglevel"
1112 function enable_log4j_lttng_event
()
1118 if [ -z $channel_name ]; then
1119 # default channel if none specified
1122 chan
="-c $channel_name"
1125 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-event
"$event_name" $chan -s $sess_name -l 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1126 ok $?
"Enable LOG4J event $event_name for session $sess_name"
1129 function enable_log4j_lttng_event_loglevel
()
1132 local event_name
="$2"
1134 local channel_name
=$4
1136 if [ -z $channel_name ]; then
1137 # default channel if none specified
1140 chan
="-c $channel_name"
1143 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-event
--loglevel $loglevel "$event_name" $chan -s $sess_name -l 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1144 ok $?
"Enable LOG4J event $event_name for session $sess_name with loglevel $loglevel"
1147 function enable_python_lttng_event
()
1153 if [ -z $channel_name ]; then
1154 # default channel if none specified
1157 chan
="-c $channel_name"
1160 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-event
"$event_name" $chan -s $sess_name -p 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1161 ok $?
"Enable Python event $event_name for session $sess_name"
1164 function enable_python_lttng_event_loglevel
()
1167 local event_name
="$2"
1169 local channel_name
=$4
1171 if [ -z $channel_name ]; then
1172 # default channel if none specified
1175 chan
="-c $channel_name"
1178 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-event
--loglevel $loglevel "$event_name" $chan -s $sess_name -p 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1179 ok $?
"Enable Python event $event_name for session $sess_name with loglevel $loglevel"
1182 function enable_ust_lttng_event_filter
()
1184 local sess_name
="$1"
1185 local event_name
="$2"
1187 local channel_name
=$4
1189 if [ -z $channel_name ]; then
1190 # default channel if none specified
1193 chan
="-c $channel_name"
1196 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-event
$chan "$event_name" -s $sess_name -u --filter "$filter" 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1197 ok $?
"Enable event $event_name with filtering for session $sess_name"
1200 function enable_ust_lttng_event_loglevel
()
1202 local sess_name
="$1"
1203 local event_name
="$2"
1206 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-event
"$event_name" -s $sess_name -u --loglevel $loglevel 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1207 ok $?
"Enable event $event_name with loglevel $loglevel"
1210 function enable_ust_lttng_event_loglevel_only
()
1212 local sess_name
="$1"
1213 local event_name
="$2"
1216 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-event
"$event_name" -s $sess_name -u --loglevel-only $loglevel 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1217 ok $?
"Enable event $event_name with loglevel-only $loglevel"
1220 function disable_ust_lttng_event
()
1222 local sess_name
="$1"
1223 local event_name
="$2"
1224 local channel_name
="$3"
1226 if [ -z $channel_name ]; then
1227 # default channel if none specified
1230 chan
="-c $channel_name"
1233 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN disable-event
"$event_name" -s $sess_name $chan -u 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1234 ok $?
"Disable event $event_name for session $sess_name"
1237 function disable_jul_lttng_event
()
1239 local sess_name
="$1"
1240 local event_name
="$2"
1242 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN disable-event
"$event_name" -s $sess_name -j >/dev
/null
2>&1
1243 ok $?
"Disable JUL event $event_name for session $sess_name"
1246 function disable_log4j_lttng_event
()
1248 local sess_name
="$1"
1249 local event_name
="$2"
1251 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN disable-event
"$event_name" -s $sess_name -l >/dev
/null
2>&1
1252 ok $?
"Disable LOG4J event $event_name for session $sess_name"
1255 function disable_python_lttng_event
()
1257 local sess_name
="$1"
1258 local event_name
="$2"
1260 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN disable-event
"$event_name" -s $sess_name -p 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1261 ok $?
"Disable Python event $event_name for session $sess_name"
1264 function start_lttng_tracing_opt
()
1267 local expected_to_fail
=$2
1270 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN start
$sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1272 if [[ $expected_to_fail -eq "1" ]]; then
1275 if [ $withtap -eq "1" ]; then
1276 ok $?
"Start tracing for session $sess_name failed as expected"
1279 if [ $withtap -eq "1" ]; then
1280 ok
$ret "Start tracing for session $sess_name"
1285 function start_lttng_tracing_ok
()
1287 start_lttng_tracing_opt
1 0 "$@"
1290 function start_lttng_tracing_fail
()
1292 start_lttng_tracing_opt
1 1 "$@"
1295 function start_lttng_tracing_notap
()
1297 start_lttng_tracing_opt
0 1 "$@"
1300 function stop_lttng_tracing_opt
()
1303 local expected_to_fail
=$2
1306 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN stop
$sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1308 if [[ $expected_to_fail -eq "1" ]]; then
1311 if [ $withtap -eq "1" ]; then
1312 ok $?
"Stop lttng tracing for session $sess_name failed as expected"
1315 if [ $withtap -eq "1" ]; then
1316 ok
$ret "Stop lttng tracing for session $sess_name"
1321 function stop_lttng_tracing_ok
()
1323 stop_lttng_tracing_opt
1 0 "$@"
1326 function stop_lttng_tracing_fail
()
1328 stop_lttng_tracing_opt
1 1 "$@"
1331 function stop_lttng_tracing_notap
()
1333 stop_lttng_tracing_opt
0 0 "$@"
1336 function destroy_lttng_session
()
1339 local expected_to_fail
=$2
1342 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN destroy
$sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1344 if [[ $expected_to_fail -eq "1" ]]; then
1347 if [ $withtap -eq "1" ]; then
1348 ok
$ret "Destroy session $sess_name failed as expected"
1351 if [ $withtap -eq "1" ]; then
1352 ok
$ret "Destroy session $sess_name"
1357 function destroy_lttng_session_ok
()
1359 destroy_lttng_session
1 0 "$@"
1363 function destroy_lttng_session_fail
()
1365 destroy_lttng_session
1 1 "$@"
1368 function destroy_lttng_session_notap
()
1370 destroy_lttng_session
0 0 "$@"
1373 function destroy_lttng_sessions
()
1375 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN destroy
--all 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1376 ok $?
"Destroy all lttng sessions"
1379 function lttng_snapshot_add_output
()
1381 local expected_to_fail
=$1
1386 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN snapshot add-output
-s $sess_name $trace_path $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1388 if [[ $expected_to_fail -eq 1 ]]; then
1390 ok $?
"Added snapshot output $trace_path failed as expected"
1392 ok
$ret "Added snapshot output $trace_path"
1396 function lttng_snapshot_add_output_ok
()
1398 lttng_snapshot_add_output
0 "$@"
1401 function lttng_snapshot_add_output_fail
()
1403 lttng_snapshot_add_output
1 "$@"
1406 function lttng_snapshot_del_output
()
1408 local expected_to_fail
=$1
1412 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN snapshot del-output
-s $sess_name $id 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1414 if [[ $expected_to_fail -eq "1" ]]; then
1416 ok $?
"Deleted snapshot output id $id failed as expected"
1418 ok
$ret "Deleted snapshot output id $id"
1422 function lttng_snapshot_del_output_ok
()
1424 lttng_snapshot_del_output
0 "$@"
1427 function lttng_snapshot_del_output_fail
()
1429 lttng_snapshot_del_output
1 "$@"
1432 function lttng_snapshot_record
()
1437 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN snapshot record
-s "$sess_name" "$trace_path" 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1438 ok $?
"Snapshot recorded"
1441 function lttng_snapshot_list
()
1444 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN snapshot list-output
-s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1445 ok $?
"Snapshot list"
1448 function lttng_save
()
1453 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN save
$sess_name $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1454 ok $?
"Session saved"
1457 function lttng_load
()
1459 local expected_to_fail
=$1
1462 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN load
$opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1464 if [[ $expected_to_fail -eq "1" ]]; then
1466 ok $?
"Load command failed as expected with opts: $opts"
1468 ok
$ret "Load command with opts: $opts"
1472 function lttng_load_ok
()
1477 function lttng_load_fail
()
1482 function lttng_track
()
1484 local expected_to_fail
="$1"
1487 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN track
$opts >$OUTPUT_DEST
1489 if [[ $expected_to_fail -eq "1" ]]; then
1491 ok $?
"Track command failed as expected with opts: $opts"
1493 ok
$ret "Track command with opts: $opts"
1497 function lttng_track_ok
()
1502 function lttng_track_fail
()
1507 function lttng_untrack
()
1509 local expected_to_fail
="$1"
1512 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN untrack
$opts >$OUTPUT_DEST
1514 if [[ $expected_to_fail -eq "1" ]]; then
1516 ok $?
"Untrack command failed as expected with opts: $opts"
1518 ok
$ret "Untrack command with opts: $opts"
1522 function lttng_untrack_ok
()
1524 lttng_untrack
0 "$@"
1527 function lttng_untrack_fail
()
1529 lttng_untrack
1 "$@"
1532 function lttng_track_pid_ok
()
1535 "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" track
--kernel --pid=$PID 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1536 ok $?
"Lttng track pid on the kernel domain"
1539 function lttng_untrack_kernel_all_ok
()
1541 "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" untrack
--kernel --pid --all 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1542 ok $?
"Lttng untrack all pid on the kernel domain"
1545 function lttng_track_ust_ok
()
1547 lttng_track_ok
-u "$@"
1550 function lttng_track_ust_fail
()
1552 lttng_track_fail
-u "$@"
1555 function lttng_track_kernel_ok
()
1557 lttng_track_ok
-k "$@"
1560 function lttng_track_kernel_fail
()
1562 lttng_track_fail
-k "$@"
1565 function lttng_untrack_ust_ok
()
1567 lttng_untrack_ok
-u "$@"
1570 function lttng_untrack_ust_fail
()
1572 lttng_untrack_fail
-u "$@"
1575 function lttng_untrack_kernel_ok
()
1577 lttng_untrack_ok
-k "$@"
1580 function lttng_untrack_kernel_fail
()
1582 lttng_untrack_fail
-k "$@"
1585 function lttng_add_context_list
()
1587 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN add-context
--list 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1589 ok
$ret "Context listing"
1592 function add_context_lttng
()
1594 local expected_to_fail
="$1"
1596 local session_name
="$3"
1597 local channel_name
="$4"
1600 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN add-context
-s $session_name -c $channel_name -t $type $domain 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1602 if [[ $expected_to_fail -eq "1" ]]; then
1604 ok $?
"Add context command failed as expected for type: $type"
1606 ok
$ret "Add context command for type: $type"
1610 function add_context_ust_ok
()
1612 add_context_lttng
0 -u "$@"
1615 function add_context_ust_fail
()
1617 add_context_lttng
1 -u "$@"
1620 function add_context_kernel_ok
()
1622 add_context_lttng
0 -k "$@"
1625 function add_context_kernel_fail
()
1627 add_context_lttng
1 -k "$@"
1630 function wait_live_trace_ready
()
1633 local zero_client_match
=0
1635 diag
"Waiting for live trace at url: $url"
1636 while [ $zero_client_match -eq 0 ]; do
1637 zero_client_match
=$
($BABELTRACE_BIN -i lttng-live
$url |
grep "0 client(s) connected" |
wc -l)
1640 pass
"Waiting for live trace at url: $url"
1643 function wait_live_viewer_connect
()
1646 local one_client_match
=0
1648 diag
"Waiting for live viewers on url: $url"
1649 while [ $one_client_match -eq 0 ]; do
1650 one_client_match
=$
($BABELTRACE_BIN -i lttng-live
$url |
grep "1 client(s) connected" |
wc -l)
1653 pass
"Waiting for live viewers on url: $url"
1656 function validate_metadata_event
()
1659 local nr_event_id
=$2
1662 local metadata_file
=$
(find $trace_path |
grep metadata
)
1663 local metadata_path
=$
(dirname $metadata_file)
1665 which $BABELTRACE_BIN >/dev
/null
1666 skip $?
-ne 0 "Babeltrace binary not found. Skipping trace matches"
1668 local count
=$
($BABELTRACE_BIN --output-format=ctf-metadata
$metadata_path |
grep $event_name |
wc -l)
1670 if [ "$count" -ne "$nr_event_id" ]; then
1671 fail
"Metadata match with the metadata of $count event(s) named $event_name"
1672 diag
"$count matching event id found in metadata"
1674 pass
"Metadata match with the metadata of $count event(s) named $event_name"
1679 function trace_matches
()
1685 which $BABELTRACE_BIN >/dev
/null
1686 skip $?
-ne 0 "Babeltrace binary not found. Skipping trace matches"
1688 local count
=$
($BABELTRACE_BIN $trace_path |
grep $event_name |
wc -l)
1690 if [ "$count" -ne "$nr_iter" ]; then
1692 diag
"$count matching events found in trace"
1698 function trace_match_only
()
1704 which $BABELTRACE_BIN >/dev
/null
1705 skip $?
-ne 0 "Babeltrace binary not found. Skipping trace matches"
1707 local count
=$
($BABELTRACE_BIN $trace_path |
grep $event_name |
wc -l)
1708 local total
=$
($BABELTRACE_BIN $trace_path |
wc -l)
1710 if [ "$nr_iter" -eq "$count" ] && [ "$total" -eq "$nr_iter" ]; then
1711 pass
"Trace match with $total event $event_name"
1714 diag
"$total event(s) found, expecting $nr_iter of event $event_name and only found $count"
1718 function validate_trace
1723 which $BABELTRACE_BIN >/dev
/null
1724 if [ $?
-ne 0 ]; then
1725 skip
0 "Babeltrace binary not found. Skipping trace validation"
1730 for i
in $event_name; do
1731 traced
=$
($BABELTRACE_BIN $trace_path 2>/dev
/null |
grep $i |
wc -l)
1732 if [ "$traced" -ne 0 ]; then
1733 pass
"Validate trace for event $i, $traced events"
1735 fail
"Validate trace for event $i"
1736 diag
"Found $traced occurences of $i"
1744 function validate_trace_count
1748 local expected_count
=$3
1750 which $BABELTRACE_BIN >/dev
/null
1751 if [ $?
-ne 0 ]; then
1752 skip
0 "Babeltrace binary not found. Skipping trace validation"
1758 for i
in $event_name; do
1759 traced
=$
($BABELTRACE_BIN $trace_path 2>/dev
/null |
grep $i |
wc -l)
1760 if [ "$traced" -ne 0 ]; then
1761 pass
"Validate trace for event $i, $traced events"
1763 fail
"Validate trace for event $i"
1764 diag
"Found $traced occurences of $i"
1766 cnt
=$
(($cnt + $traced))
1769 test $cnt -eq $expected_count
1770 ok $?
"Read a total of $cnt events, expected $expected_count"
1773 function validate_trace_count_range_incl_min_excl_max
1777 local expected_min
=$3
1778 local expected_max
=$4
1780 which $BABELTRACE_BIN >/dev
/null
1781 if [ $?
-ne 0 ]; then
1782 skip
0 "Babeltrace binary not found. Skipping trace validation"
1788 for i
in $event_name; do
1789 traced
=$
($BABELTRACE_BIN $trace_path 2>/dev
/null |
grep $i |
wc -l)
1790 if [ "$traced" -ge $expected_min ]; then
1791 pass
"Validate trace for event $i, $traced events"
1793 fail
"Validate trace for event $i"
1794 diag
"Found $traced occurences of $i"
1796 cnt
=$
(($cnt + $traced))
1799 test $cnt -lt $expected_max
1800 ok $?
"Read a total of $cnt events, expected between [$expected_min, $expected_max["
1803 function trace_first_line
1807 which $BABELTRACE_BIN >/dev
/null
1808 if [ $?
-ne 0 ]; then
1809 skip
0 "Babeltrace binary not found. Skipping trace validation"
1812 $BABELTRACE_BIN $trace_path 2>/dev
/null |
head -n 1
1815 function validate_trace_exp
()
1820 which $BABELTRACE_BIN >/dev
/null
1821 skip $?
-ne 0 "Babeltrace binary not found. Skipping trace validation"
1823 traced
=$
($BABELTRACE_BIN $trace_path 2>/dev
/null |
grep --extended-regexp ${event_exp} |
wc -l)
1824 if [ "$traced" -ne 0 ]; then
1825 pass
"Validate trace for expression '${event_exp}', $traced events"
1827 fail
"Validate trace for expression '${event_exp}'"
1828 diag
"Found $traced occurences of '${event_exp}'"
1834 function validate_trace_only_exp
()
1839 which $BABELTRACE_BIN >/dev
/null
1840 skip $?
-ne 0 "Babeltrace binary not found. Skipping trace matches"
1842 local count
=$
($BABELTRACE_BIN $trace_path |
grep --extended-regexp ${event_exp} |
wc -l)
1843 local total
=$
($BABELTRACE_BIN $trace_path |
wc -l)
1845 if [ "$count" -ne 0 ] && [ "$total" -eq "$count" ]; then
1846 pass
"Trace match with $total for expression '${event_exp}'"
1849 diag
"$total syscall event(s) found, only syscalls matching expression '${event_exp}' ($count occurrences) are expected"
1855 function validate_trace_empty
()
1859 which $BABELTRACE_BIN >/dev
/null
1860 if [ $?
-ne 0 ]; then
1861 skip
0 "Babeltrace binary not found. Skipping trace validation"
1864 events
=$
($BABELTRACE_BIN $trace_path 2>/dev
/null
)
1866 if [ $ret -ne 0 ]; then
1867 fail
"Failed to parse trace"
1871 traced
=$
(echo -n "$events" |
wc -l)
1872 if [ "$traced" -eq 0 ]; then
1873 pass
"Validate empty trace"
1875 fail
"Validate empty trace"
1876 diag
"Found $traced events in trace"
1882 function validate_directory_empty
()
1884 local trace_path
="$1"
1886 # Do not double quote `$trace_path` below as we want wildcards to be
1888 files
="$(ls -A $trace_path)"
1890 if [ $ret -ne 0 ]; then
1891 fail
"Failed to list content of directory \"$trace_path\""
1895 nb_files
="$(echo -n "$files" | wc -l)"
1896 ok
$nb_files "Directory \"$trace_path\" is empty"
1899 function validate_trace_session_ust_empty
()
1901 validate_directory_empty
"$1"/ust
1904 function validate_trace_session_kernel_empty
()
1906 validate_trace_empty
"$1"/kernel
1909 function regenerate_metadata
()
1911 local expected_to_fail
=$1
1914 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN regenerate metadata
-s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1916 if [[ $expected_to_fail -eq "1" ]]; then
1918 ok $?
"Expected fail on regenerate metadata $sess_name"
1920 ok
$ret "Metadata regenerate $sess_name"
1924 function regenerate_metadata_ok
()
1926 regenerate_metadata
0 "$@"
1929 function regenerate_metadata_fail
()
1931 regenerate_metadata
1 "$@"
1934 function regenerate_statedump
()
1936 local expected_to_fail
=$1
1939 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN regenerate statedump
-s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1941 if [[ $expected_to_fail -eq "1" ]]; then
1943 ok $?
"Expected fail on regenerate statedump $sess_name"
1945 ok
$ret "Statedump regenerate $sess_name"
1949 function regenerate_statedump_ok
()
1951 regenerate_statedump
0 "$@"
1954 function regenerate_statedump_fail
()
1956 regenerate_statedump
1 "$@"
1959 function rotate_session
()
1961 local expected_to_fail
=$1
1964 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN rotate
$sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1966 if [[ $expected_to_fail -eq "1" ]]; then
1968 ok $?
"Expected fail on rotate session $sess_name"
1970 ok
$ret "Rotate session $sess_name"
1974 function rotate_session_ok
()
1976 rotate_session
0 "$@"
1979 function rotate_session_fail
()
1981 rotate_session
1 "$@"
1984 function destructive_tests_enabled
()
1986 if [ "$LTTNG_ENABLE_DESTRUCTIVE_TESTS" = "will-break-my-system" ]; then
1993 function lttng_enable_rotation_timer
()
1995 local expected_to_fail
=$1
1999 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-rotation
-s $sess_name --timer $period 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
2001 if [[ $expected_to_fail -eq "1" ]]; then
2003 ok $?
"Expected fail when setting periodic rotation ($period) of session $sess_name"
2005 ok
$ret "Set periodic rotation ($period) of session $sess_name"
2009 function lttng_enable_rotation_timer_ok
()
2011 lttng_enable_rotation_timer
0 $@
2014 function lttng_enable_rotation_timer_fail
()
2016 lttng_enable_rotation_timer
1 $@
2019 function lttng_enable_rotation_size
()
2021 local expected_to_fail
=$1
2025 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-rotation
-s $sess_name --size $size 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
2027 if [[ $expected_to_fail -eq "1" ]]; then
2029 ok $?
"Expected fail on rotate session $sess_name"
2031 ok
$ret "Rotate session $sess_name"
2035 function lttng_enable_rotation_size_ok
()
2037 lttng_enable_rotation_size
0 $@
2040 function lttng_enable_rotation_size_fail
()
2042 lttng_enable_rotation_size
1 $@
2045 function lttng_clear_session
()
2047 local expected_to_fail
=$1
2050 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN clear $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
2052 if [[ $expected_to_fail -eq "1" ]]; then
2054 ok $?
"Expected fail on clear session $sess_name"
2056 ok
$ret "Clear session $sess_name"
2060 function lttng_clear_session_ok
()
2062 lttng_clear_session
0 $@
2065 function lttng_clear_session_fail
()
2067 lttng_clear_session
1 $@
2070 function lttng_clear_all
()
2072 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN clear --all 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
2073 ok $?
"Clear all lttng sessions"
2076 function validate_path_pattern
()
2080 # Base path is only used in error case and is used to list the content
2089 if [ "$ret" -ne "0" ]; then
2090 diag
"Path pattern expected: $pattern"
2091 # List the tracepath for more info. We use find as a recursive
2093 diag
"The base path content:"
2094 find "$base_path" -print
2098 function validate_trace_path_ust_uid
()
2101 local session_name
=$2
2103 local pattern
="$trace_path/$session_name-$date_time_pattern/ust/uid/$uid/${system_long_bit_size}-bit/metadata"
2105 validate_path_pattern
"UST per-uid trace path is valid" "$pattern" "$trace_path"
2108 function validate_trace_path_ust_uid_network
()
2111 local session_name
=$2
2114 local hostname
=$HOSTNAME
2118 # If the session was given a network base path (e.g
2119 # 127.0.0.1/my/custom/path on creation, there is no session name
2120 # component to the path on the relayd side. Caller can simply not pass a
2121 # session name for this scenario.
2122 if [ -n "$session_name" ]; then
2123 session_name
="$session_name-$date_time_pattern"
2124 if [ -n "$base_path" ]; then
2125 fail
"Session name and base path are mutually exclusive"
2130 pattern
="$trace_path/$hostname/$base_path/$session_name/ust/uid/$uid/${system_long_bit_size}-bit/metadata"
2132 validate_path_pattern
"UST per-uid network trace path is valid" "$pattern" "$trace_path"
2135 function validate_trace_path_ust_uid_snapshot_network
()
2138 local session_name
=$2
2139 local snapshot_name
=$3
2140 local snapshot_number
=$4
2142 local hostname
=$HOSTNAME
2147 # If the session/output was given a network base path (e.g
2148 # 127.0.0.1/my/custom/path on creation, there is no session name
2149 # component to the path on the relayd side. Caller can simply not pass a
2150 # session name for this scenario.
2151 if [ -n "$session_name" ]; then
2152 session_name
="$session_name-$date_time_pattern"
2153 if [ -n "$base_path" ]; then
2154 fail
"Session name and base path are mutually exclusive"
2159 pattern
="$trace_path/$hostname/$base_path/$session_name/$snapshot_name-$date_time_pattern-$snapshot_number/ust/uid/$uid/${system_long_bit_size}-bit/metadata"
2161 validate_path_pattern
"UST per-uid network snapshot trace path is valid" "$pattern" "$trace_path"
2164 function validate_trace_path_ust_uid_snapshot
()
2167 local session_name
=$2
2168 local snapshot_name
=$3
2169 local snapshot_number
=$4
2175 # If the session/output was given a network base path (e.g
2176 # 127.0.0.1/my/custom/path) on creation, there is no session name
2177 # component to the path on the relayd side. Caller can simply not pass a
2178 # session name for this scenario.
2179 if [ -n "$session_name" ]; then
2180 session_name
="$session_name-$date_time_pattern"
2181 if [ -n "$base_path" ]; then
2182 fail
"Session name and base path are mutually exclusive"
2187 pattern
="$trace_path/$base_path/$session_name/$snapshot_name-$date_time_pattern-$snapshot_number/ust/uid/$uid/${system_long_bit_size}-bit/metadata"
2189 validate_path_pattern
"UST per-uid snapshot trace path is valid" "$pattern" "$trace_path"
2192 function validate_trace_path_ust_pid
()
2195 local session_name
=$2
2201 # If the session was given a trace path on creation, there is no session
2202 # name component to the path. Caller can simply not pass a session name
2203 # for this scenario.
2204 if [ -n "$session_name" ]; then
2205 session_name
="$session_name-$date_time_pattern"
2208 pattern
="$trace_path/$session_name/ust/pid/$pid/$app_string-*-$date_time_pattern/metadata"
2210 validate_path_pattern
"UST per-pid trace path is valid" "$pattern" "$trace_path"
2213 function validate_trace_path_kernel
()
2216 local session_name
=$2
2219 # If the session was given a trace path on creation, there is no session
2220 # name component to the path. Caller can simply not pass a session name
2221 # for this scenario.
2222 if [ -n "$session_name" ]; then
2223 session_name
="$session_name-$date_time_pattern"
2226 pattern
="$trace_path/$session_name/kernel/metadata"
2228 validate_path_pattern
"Kernel trace path is valid" "$pattern" "$trace_path"
2231 function validate_trace_path_kernel_network
()
2234 local session_name
=$2
2235 local hostname
=$HOSTNAME
2236 local pattern
="$trace_path/$hostname/$session_name-$date_time_pattern/kernel/metadata"
2238 validate_path_pattern
"Kernel network trace path is valid" "$pattern" "$trace_path"
2241 function validate_trace_path_kernel_snapshot
()
2244 local session_name
=$2
2245 local snapshot_name
=$3
2246 local snapshot_number
=$4
2251 # If the session/output was given a network base path (e.g
2252 # 127.0.0.1/my/custom/path on creation, there is no session name
2253 # component to the path on the relayd side. Caller can simply not pass a
2254 # session name for this scenario.
2255 if [ -n "$session_name" ]; then
2256 session_name
="$session_name-$date_time_pattern"
2257 if [ -n "$base_path" ]; then
2258 fail
"Session name and base path are mutually exclusive"
2263 pattern
="$trace_path/$base_path/$session_name/$snapshot_name-$date_time_pattern-$snapshot_number/kernel/metadata"
2265 validate_path_pattern
"Kernel snapshot trace path is valid" "$pattern" "$trace_path"
2268 function validate_trace_path_kernel_snapshot_network
()
2271 local session_name
=$2
2272 local snapshot_name
=$3
2273 local snapshot_number
=$4
2275 local hostname
=$HOSTNAME
2279 # If the session/output was given a network base path (e.g
2280 # 127.0.0.1/my/custom/path on creation, there is no session name
2281 # component to the path on the relayd side. Caller can simply not pass a
2282 # session name for this scenario.
2283 if [ -n "$session_name" ]; then
2284 session_name
="$session_name-$date_time_pattern"
2285 if [ -n "$base_path" ]; then
2286 fail
"Session name and base path are mutually exclusive"
2291 pattern
="$trace_path/$hostname/$base_path/$session_name/$snapshot_name-$date_time_pattern-$snapshot_number/kernel/metadata"
2293 validate_path_pattern
"Kernel network snapshot trace path is valid" "$pattern" "$trace_path"