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 # Run the lttng binary.
164 # The first two arguments are stdout and stderr redirect paths, respectively.
165 # The rest of the arguments are forwarded to the lttng binary
166 function _run_lttng_cmd
168 local stdout_dest
="$1"
169 local stderr_dest
="$2"
172 diag
"$TESTDIR/../src/bin/lttng/$LTTNG_BIN $*"
173 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN "$@" 1> "$stdout_dest" 2> "$stderr_dest"
176 function enable_kernel_lttng_event
179 local expected_to_fail
="$2"
181 local event_name
="$4"
182 local channel_name
="$5"
184 if [ -z "$event_name" ]; then
185 # Enable all event if no event name specified
189 if [ -z "$channel_name" ]; then
190 # default channel if none specified
193 chan
="-c $channel_name"
196 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-event
"$event_name" $chan -s $sess_name -k 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
198 if [[ $expected_to_fail -eq "1" ]]; then
201 if [ $withtap -eq "1" ]; then
202 ok
$ret "Enable kernel event $event_name for session $session_name on channel $channel_name failed as expected"
205 if [ $withtap -eq "1" ]; then
206 ok
$ret "Enable kernel event $event_name for session $sess_name"
211 function enable_kernel_lttng_event_ok
()
213 enable_kernel_lttng_event
1 0 "$@"
216 function enable_kernel_lttng_event_fail
()
218 enable_kernel_lttng_event
1 1 "$@"
221 function enable_kernel_lttng_event_notap
()
223 enable_kernel_lttng_event
0 0 "$@"
227 function lttng_enable_kernel_event
229 enable_kernel_lttng_event_ok
"$@"
232 function lttng_enable_kernel_syscall
()
234 local expected_to_fail
=$1
236 local syscall_name
=$3
237 local channel_name
=$4
239 if [ -z $syscall_name ]; then
240 # Enable all event if no syscall name specified
244 if [ -z $channel_name ]; then
245 # default channel if none specified
248 chan
="-c $channel_name"
251 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-event
--syscall "$syscall_name" $chan -s $sess_name -k 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
253 if [[ $expected_to_fail -eq "1" ]]; then
255 ok $?
"Enable kernel syscall $syscall_name for session $sess_name on channel $channel_name fail as expected"
257 ok
$ret "Enable kernel syscall $syscall_name for session $sess_name on channel $channel_name"
261 function lttng_enable_kernel_syscall_ok
()
263 lttng_enable_kernel_syscall
0 "$@"
266 function lttng_enable_kernel_syscall_fail
()
268 lttng_enable_kernel_syscall
1 "$@"
271 function lttng_disable_kernel_syscall
()
273 local expected_to_fail
=$1
275 local syscall_name
=$3
276 local channel_name
=$4
278 if [ -z $syscall_name ]; then
279 # Enable all event if no syscall name specified
283 if [ -z $channel_name ]; then
284 # default channel if none specified
287 chan
="-c $channel_name"
290 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN disable-event
--syscall "$syscall_name" $chan -s $sess_name -k 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
293 if [[ $expected_to_fail -eq "1" ]]; then
295 ok $?
"Disable kernel syscall $syscall_name for session $sess_name on channel $channel_name failed as expected"
297 ok
$ret "Disable kernel syscall $syscall_name for session $sess_name on channel $channel_name"
301 function lttng_disable_kernel_syscall_ok
()
303 lttng_disable_kernel_syscall
0 "$@"
306 function lttng_disable_kernel_syscall_fail
()
308 lttng_disable_kernel_syscall
1 "$@"
311 function lttng_enable_kernel_userspace_probe_event
()
313 local expected_to_fail
="$1"
316 local event_name
="$4"
318 "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" enable-event
--kernel --userspace-probe="$target" "$event_name" -s "$sess_name" > "$OUTPUT_DEST" 2> "$ERROR_OUTPUT_DEST"
320 if [[ $expected_to_fail -eq "1" ]]; then
322 ok $?
"Enable kernel userspace probe event for session $sess_name failed as expected"
324 ok
$ret "Enable kernel userspace probe event for session $sess_name"
328 function lttng_enable_kernel_userspace_probe_event_fail
()
330 lttng_enable_kernel_userspace_probe_event
1 "$@"
333 function lttng_enable_kernel_userspace_probe_event_ok
()
335 lttng_enable_kernel_userspace_probe_event
0 "$@"
338 function disable_kernel_lttng_userspace_probe_event_ok
()
341 local event_name
="$2"
343 "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" disable-event
--kernel "$event_name" -s "$sess_name" > "$OUTPUT_DEST" 2> "$ERROR_OUTPUT_DEST"
344 ok $?
"Disable kernel event $target for session $sess_name"
346 function lttng_enable_kernel_channel
()
349 local expected_to_fail
=$2
351 local channel_name
=$4
354 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-channel
-k $channel_name -s $sess_name $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
356 if [[ $expected_to_fail -eq "1" ]]; then
359 if [ $withtap -eq "1" ]; then
360 ok
$ret "Enable channel $channel_name for session $sess_name failed as expected"
363 if [ $withtap -eq "1" ]; then
364 ok
$ret "Enable channel $channel_name for session $sess_name"
369 function lttng_enable_kernel_channel_ok
()
371 lttng_enable_kernel_channel
1 0 "$@"
374 function lttng_enable_kernel_channel_fail
()
376 lttng_enable_kernel_channel
1 1 "$@"
379 function lttng_enable_kernel_channel_notap
()
381 lttng_enable_kernel_channel
0 0 "$@"
384 function enable_kernel_lttng_channel_ok
()
386 lttng_enable_kernel_channel
1 0 "$@"
389 function lttng_disable_kernel_channel
()
391 local expected_to_fail
=$1
393 local channel_name
=$3
395 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN disable-channel
-k $channel_name -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
397 if [[ $expected_to_fail -eq "1" ]]; then
399 ok $?
"Disable channel $channel_name for session $sess_name failed as expected"
401 ok
$ret "Disable channel $channel_name for session $sess_name"
405 function lttng_disable_kernel_channel_ok
()
407 lttng_disable_kernel_channel
0 "$@"
410 function lttng_disable_kernel_channel_fail
()
412 lttng_disable_kernel_channel
1 "$@"
415 function start_lttng_relayd_opt
()
418 local process_mode
=$2
421 DIR
=$
(readlink
-f "$TESTDIR")
423 if [ -z $
(pgrep
$RELAYD_MATCH) ]; then
424 # shellcheck disable=SC2086
425 $DIR/..
/src
/bin
/lttng-relayd
/$RELAYD_BIN $process_mode $opt 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
426 #$DIR/../src/bin/lttng-relayd/$RELAYD_BIN $opt -vvv >>/tmp/relayd.log 2>&1 &
427 if [ $?
-eq 1 ]; then
428 if [ $withtap -eq "1" ]; then
429 fail
"Start lttng-relayd (process mode: $process_mode opt: $opt)"
433 if [ $withtap -eq "1" ]; then
434 pass
"Start lttng-relayd (process mode: $process_mode opt: $opt)"
438 pass
"Start lttng-relayd (opt: $opt)"
442 function start_lttng_relayd
()
444 start_lttng_relayd_opt
1 "-b" "$@"
447 function start_lttng_relayd_notap
()
449 start_lttng_relayd_opt
0 "-b" "$@"
452 function stop_lttng_relayd_opt
()
457 if [ -z "$signal" ]; then
464 # Multiply time by 2 to simplify integer arithmetic
465 if [ -n "$timeout_s" ]; then
466 dtimeleft_s
=$
((timeout_s
* 2))
472 pids
=$
(pgrep
"$RELAYD_MATCH")
473 if [ -z "$pids" ]; then
474 if [ "$withtap" -eq "1" ]; then
475 pass
"No relay daemon to kill"
480 diag
"Killing (signal $signal) lttng-relayd (pid: $pids)"
482 # shellcheck disable=SC2086
483 if ! kill -s $signal $pids 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST; then
485 if [ "$withtap" -eq "1" ]; then
486 fail
"Kill relay daemon"
490 while [ -n "$out" ]; do
491 out
=$
(pgrep
"$RELAYD_MATCH")
492 if [ -n "$dtimeleft_s" ]; then
493 if [ $dtimeleft_s -lt 0 ]; then
497 dtimeleft_s
=$
((dtimeleft_s
- 1))
501 if [ "$withtap" -eq "1" ]; then
502 if [ "$retval" -eq "0" ]; then
503 pass
"Wait after kill relay daemon"
505 fail
"Wait after kill relay daemon"
512 function stop_lttng_relayd
()
514 stop_lttng_relayd_opt
1 "$@"
517 function stop_lttng_relayd_notap
()
519 stop_lttng_relayd_opt
0 "$@"
522 #First arg: show tap output
523 #Second argument: load path for automatic loading
524 function start_lttng_sessiond_opt
()
532 local long_bit_value
=
533 long_bit_value
=$
(getconf LONG_BIT
)
535 if [ -n "$TEST_NO_SESSIOND" ] && [ "$TEST_NO_SESSIOND" == "1" ]; then
536 # Env variable requested no session daemon
540 DIR
=$
(readlink
-f "$TESTDIR")
542 # Get long_bit value for 32/64 consumerd
543 case "$long_bit_value" in
545 consumerd
="--consumerd32-path=$DIR/../src/bin/lttng-consumerd/lttng-consumerd"
548 consumerd
="--consumerd64-path=$DIR/../src/bin/lttng-consumerd/lttng-consumerd"
555 # Check for env. variable. Allow the use of LD_PRELOAD etc.
556 if [[ "x${LTTNG_SESSIOND_ENV_VARS}" != "x" ]]; then
557 env_vars
="${LTTNG_SESSIOND_ENV_VARS} "
559 env_vars
="${env_vars}$DIR/../src/bin/lttng-sessiond/$SESSIOND_BIN"
561 if ! validate_kernel_version
; then
562 fail
"Start session daemon"
563 BAIL_OUT
"*** Kernel too old for session daemon tests ***"
566 : "${LTTNG_SESSION_CONFIG_XSD_PATH="${DIR}/../src/common/config/"}"
567 export LTTNG_SESSION_CONFIG_XSD_PATH
569 if [ -z "$(pgrep "${SESSIOND_MATCH}")" ]; then
571 if [ -n "$load_path" ]; then
572 # shellcheck disable=SC2086
573 env
$env_vars --load "$load_path" --background "$consumerd"
575 # shellcheck disable=SC2086
576 env
$env_vars --background "$consumerd"
578 #$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
580 if [ "$withtap" -eq "1" ]; then
581 ok
$status "Start session daemon"
586 function start_lttng_sessiond
()
588 start_lttng_sessiond_opt
1 "$@"
591 function start_lttng_sessiond_notap
()
593 start_lttng_sessiond_opt
0 "$@"
596 function stop_lttng_sessiond_opt
()
601 if [ -z "$signal" ]; then
608 # Multiply time by 2 to simplify integer arithmetic
609 if [ -n "$timeout_s" ]; then
610 dtimeleft_s
=$
((timeout_s
* 2))
613 if [ -n "$TEST_NO_SESSIOND" ] && [ "$TEST_NO_SESSIOND" == "1" ]; then
614 # Env variable requested no session daemon
621 runas_pids
=$
(pgrep
"$RUNAS_MATCH")
624 pids
=$
(pgrep
"$SESSIOND_MATCH")
626 if [ -n "$runas_pids" ]; then
627 pids
="$pids $runas_pids"
630 if [ -z "$pids" ]; then
631 if [ "$withtap" -eq "1" ]; then
632 pass
"No session daemon to kill"
637 diag
"Killing (signal $signal) $SESSIOND_BIN and lt-$SESSIOND_BIN pids: $(echo "$pids" | tr '\n' ' ')"
639 # shellcheck disable=SC2086
640 if ! kill -s $signal $pids 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST; then
642 if [ "$withtap" -eq "1" ]; then
643 fail
"Kill sessions daemon"
647 while [ -n "$out" ]; do
648 out
=$
(pgrep
"${SESSIOND_MATCH}")
649 if [ -n "$dtimeleft_s" ]; then
650 if [ $dtimeleft_s -lt 0 ]; then
654 dtimeleft_s
=$
((dtimeleft_s
- 1))
659 while [ -n "$out" ]; do
660 out
=$
(pgrep
"$CONSUMERD_MATCH")
661 if [ -n "$dtimeleft_s" ]; then
662 if [ $dtimeleft_s -lt 0 ]; then
666 dtimeleft_s
=$
((dtimeleft_s
- 1))
671 if [ "$withtap" -eq "1" ]; then
672 if [ "$retval" -eq "0" ]; then
673 pass
"Wait after kill session daemon"
675 fail
"Wait after kill session daemon"
679 if [ "$signal" = "SIGKILL" ]; then
680 if [ "$(id -u)" -eq "0" ]; then
682 modules
="$(lsmod | grep ^lttng | awk '{print $1}')"
684 if [ -n "$modules" ]; then
685 diag
"Unloading all LTTng modules"
686 modprobe
--remove "$modules"
694 function stop_lttng_sessiond
()
696 stop_lttng_sessiond_opt
1 "$@"
699 function stop_lttng_sessiond_notap
()
701 stop_lttng_sessiond_opt
0 "$@"
704 function sigstop_lttng_sessiond_opt
()
709 if [ -n "$TEST_NO_SESSIOND" ] && [ "$TEST_NO_SESSIOND" == "1" ]; then
710 # Env variable requested no session daemon
714 PID_SESSIOND
="$(pgrep "${SESSIOND_MATCH}") $(pgrep "$RUNAS_MATCH")"
716 if [ "$withtap" -eq "1" ]; then
717 diag
"Sending SIGSTOP to lt-$SESSIOND_BIN and $SESSIOND_BIN pids: $(echo "$PID_SESSIOND" | tr '\n' ' ')"
720 # shellcheck disable=SC2086
721 if ! kill -s $signal $PID_SESSIOND 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST; then
722 if [ "$withtap" -eq "1" ]; then
723 fail
"Sending SIGSTOP to session daemon"
727 while [ $out -ne 0 ]; do
728 pid
="$(pgrep "$SESSIOND_MATCH")"
730 # Wait until state becomes stopped for session
733 for sessiond_pid
in $pid; do
734 state
="$(ps -p "$sessiond_pid" -o state= )"
735 if [[ -n "$state" && "$state" != "T" ]]; then
741 if [ "$withtap" -eq "1" ]; then
742 pass
"Sending SIGSTOP to session daemon"
747 function sigstop_lttng_sessiond
()
749 sigstop_lttng_sessiond_opt
1 "$@"
752 function sigstop_lttng_sessiond_notap
()
754 sigstop_lttng_sessiond_opt
0 "$@"
757 function stop_lttng_consumerd_opt
()
762 if [ -z "$signal" ]; then
769 # Multiply time by 2 to simplify integer arithmetic
770 if [ -n "$timeout_s" ]; then
771 dtimeleft_s
=$
((timeout_s
* 2))
776 PID_CONSUMERD
="$(pgrep "$CONSUMERD_MATCH")"
778 if [ -z "$PID_CONSUMERD" ]; then
779 if [ "$withtap" -eq "1" ]; then
780 pass
"No consumer daemon to kill"
785 diag
"Killing (signal $signal) $CONSUMERD_BIN pids: $(echo "$PID_CONSUMERD" | tr '\n' ' ')"
787 # shellcheck disable=SC2086
788 if ! kill -s $signal $PID_CONSUMERD 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST; then
790 if [ "$withtap" -eq "1" ]; then
791 fail
"Kill consumer daemon"
795 while [ $out -ne 0 ]; do
796 pid
="$(pgrep "$CONSUMERD_MATCH")"
798 # If consumerds are still present check their status.
799 # A zombie status qualifies the consumerd as *killed*
801 for consumer_pid
in $pid; do
802 state
="$(ps -p "$consumer_pid" -o state= )"
803 if [[ -n "$state" && "$state" != "Z" ]]; then
807 if [ -n "$dtimeleft_s" ]; then
808 if [ $dtimeleft_s -lt 0 ]; then
812 dtimeleft_s
=$
((dtimeleft_s
- 1))
816 if [ "$withtap" -eq "1" ]; then
817 if [ "$retval" -eq "0" ]; then
818 pass
"Wait after kill consumer daemon"
820 fail
"Wait after kill consumer daemon"
828 function stop_lttng_consumerd
()
830 stop_lttng_consumerd_opt
1 "$@"
833 function stop_lttng_consumerd_notap
()
835 stop_lttng_consumerd_opt
0 "$@"
838 function sigstop_lttng_consumerd_opt
()
843 PID_CONSUMERD
="$(pgrep "$CONSUMERD_MATCH")"
845 diag
"Sending SIGSTOP to $CONSUMERD_BIN pids: $(echo "$PID_CONSUMERD" | tr '\n' ' ')"
847 # shellcheck disable=SC2086
848 kill -s $signal $PID_CONSUMERD 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
851 if [ $retval -eq 1 ]; then
852 if [ "$withtap" -eq "1" ]; then
853 fail
"Sending SIGSTOP to consumer daemon"
858 while [ $out -ne 0 ]; do
859 pid
="$(pgrep "$CONSUMERD_MATCH")"
861 # Wait until state becomes stopped for all
864 for consumer_pid
in $pid; do
865 state
="$(ps -p "$consumer_pid" -o state= )"
866 if [[ -n "$state" && "$state" != "T" ]]; then
872 if [ "$withtap" -eq "1" ]; then
873 pass
"Sending SIGSTOP to consumer daemon"
879 function sigstop_lttng_consumerd
()
881 sigstop_lttng_consumerd_opt
1 "$@"
884 function sigstop_lttng_consumerd_notap
()
886 sigstop_lttng_consumerd_opt
0 "$@"
889 function list_lttng_with_opts
()
892 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN list
$opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
893 ok $?
"Lttng-tool list command with option $opts"
896 function create_lttng_session_no_output
()
901 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN create
$sess_name --no-output $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
902 ok $?
"Create session $sess_name in no-output mode"
905 function create_lttng_session_uri
() {
910 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN create
$sess_name -U $uri $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
911 ok $?
"Create session $sess_name with uri:$uri and opts: $opts"
914 function create_lttng_session
()
917 local expected_to_fail
=$2
922 if [ -z "$trace_path" ]; then
923 # Use lttng-sessiond default output.
926 trace_path
="-o $trace_path"
929 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN create
"$sess_name" $trace_path $opt 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
931 if [ $expected_to_fail -eq "1" ]; then
934 if [ $withtap -eq "1" ]; then
935 ok
$ret "Create session $sess_name in $trace_path failed as expected"
938 if [ $withtap -eq "1" ]; then
939 ok
$ret "Create session $sess_name in $trace_path"
945 function create_lttng_session_ok
()
947 create_lttng_session
1 0 "$@"
950 function create_lttng_session_fail
()
952 create_lttng_session
1 1 "$@"
955 function create_lttng_session_notap
()
957 create_lttng_session
0 0 "$@"
961 function enable_ust_lttng_channel
()
964 local expected_to_fail
=$2
966 local channel_name
=$4
969 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-channel
-u $channel_name -s $sess_name $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
971 if [[ $expected_to_fail -eq "1" ]]; then
974 if [ $withtap -eq "1" ]; then
975 ok
$ret "Enable channel $channel_name for session $sess_name failed as expected"
978 if [ $withtap -eq "1" ]; then
979 ok
$ret "Enable channel $channel_name for session $sess_name"
985 function enable_ust_lttng_channel_ok
()
987 enable_ust_lttng_channel
1 0 "$@"
990 function enable_ust_lttng_channel_fail
()
992 enable_ust_lttng_channel
1 1 "$@"
995 function enable_ust_lttng_channel_notap
()
997 enable_ust_lttng_channel
0 0 "$@"
1000 function disable_ust_lttng_channel
()
1003 local channel_name
=$2
1005 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN disable-channel
-u $channel_name -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1006 ok $?
"Disable channel $channel_name for session $sess_name"
1009 function enable_lttng_mmap_overwrite_kernel_channel
()
1012 local channel_name
=$2
1014 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-channel
-s $sess_name $channel_name -k --output mmap
--overwrite 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1015 ok $?
"Enable channel $channel_name for session $sess_name"
1018 function enable_lttng_mmap_discard_small_kernel_channel
()
1021 local channel_name
=$2
1023 $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
1024 ok $?
"Enable small discard channel $channel_name for session $sess_name"
1027 function enable_lttng_mmap_overwrite_small_kernel_channel
()
1030 local channel_name
=$2
1032 $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
1033 ok $?
"Enable small discard channel $channel_name for session $sess_name"
1036 function enable_lttng_mmap_overwrite_ust_channel
()
1039 local channel_name
=$2
1041 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-channel
-s $sess_name $channel_name -u --output mmap
--overwrite 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1042 ok $?
"Enable channel $channel_name for session $sess_name"
1045 function enable_ust_lttng_event
()
1048 local expected_to_fail
=$2
1050 local event_name
="$4"
1051 local channel_name
=$5
1053 if [ -z $channel_name ]; then
1054 # default channel if none specified
1057 chan
="-c $channel_name"
1060 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-event
"$event_name" $chan -s $sess_name -u 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1062 if [[ $expected_to_fail -eq "1" ]]; then
1065 if [[ $withtap -eq "1" ]]; then
1066 ok
$ret "Enable ust event $event_name for session $session_name failed as expected"
1069 if [[ $withtap -eq "1" ]]; then
1070 ok
$ret "Enable ust event $event_name for session $sess_name"
1076 function enable_ust_lttng_event_ok
()
1078 enable_ust_lttng_event
1 0 "$@"
1081 function enable_ust_lttng_event_fail
()
1083 enable_ust_lttng_event
1 1 "$@"
1086 function enable_ust_lttng_event_notap
()
1088 enable_ust_lttng_event
0 0 "$@"
1091 function enable_jul_lttng_event
()
1097 if [ -z $channel_name ]; then
1098 # default channel if none specified
1101 chan
="-c $channel_name"
1104 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-event
"$event_name" $chan -s $sess_name -j 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1105 ok $?
"Enable JUL event $event_name for session $sess_name"
1108 function enable_jul_lttng_event_loglevel
()
1111 local event_name
="$2"
1113 local channel_name
=$4
1115 if [ -z $channel_name ]; then
1116 # default channel if none specified
1119 chan
="-c $channel_name"
1122 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-event
--loglevel $loglevel "$event_name" $chan -s $sess_name -j 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1123 ok $?
"Enable JUL event $event_name for session $sess_name with loglevel $loglevel"
1126 function enable_log4j_lttng_event
()
1130 local channel_name
=$3
1134 # default channel if none specified
1135 if [ -n "$channel_name" ]; then
1136 chan_opt
=("-c" "$channel_name")
1139 _run_lttng_cmd
"$OUTPUT_DEST" "$ERROR_OUTPUT_DEST" \
1140 enable-event
"$event_name" "${chan_opt[@]}" -s "$sess_name" --log4j
1141 ok $?
"Enable LOG4J event '$event_name' for session '$sess_name'"
1144 function enable_log4j_lttng_event_filter
()
1150 _run_lttng_cmd
"$OUTPUT_DEST" "$ERROR_OUTPUT_DEST" \
1151 enable-event
"$event_name" -s "$sess_name" --log4j --filter "$filter"
1152 ok $?
"Enable LOG4J event '$event_name' with filter '$filter' for session '$sess_name'"
1155 function enable_log4j_lttng_event_filter_loglevel_only
()
1162 _run_lttng_cmd
"$OUTPUT_DEST" "$ERROR_OUTPUT_DEST" \
1163 enable-event
--loglevel-only "$loglevel" "$event_name" -s "$sess_name" -l --filter "$filter"
1164 ok $?
"Enable LOG4J event '$event_name' with filter '$filter' and loglevel-only '$loglevel' for session '$sess_name'"
1167 function enable_log4j_lttng_event_loglevel
()
1172 local channel_name
=$4
1175 # default channel if none specified
1176 if [ -n "$channel_name" ]; then
1177 chan_opt
=("-c" "$channel_name")
1180 _run_lttng_cmd
"$OUTPUT_DEST" "$ERROR_OUTPUT_DEST" \
1181 enable-event
--loglevel "$loglevel" "$event_name" "${chan_opt[@]}" -s "$sess_name" --log4j
1182 ok $?
"Enable LOG4J event '$event_name' for session '$sess_name' with loglevel '$loglevel'"
1185 function enable_log4j_lttng_event_loglevel_only
()
1190 local channel_name
=$4
1194 # default channel if none specified
1195 if [ -n "$channel_name" ]; then
1196 chan_opt
=("-c" "$channel_name")
1199 _run_lttng_cmd
"$OUTPUT_DEST" "$ERROR_OUTPUT_DEST" \
1200 enable-event
--loglevel-only "$loglevel" "$event_name" "${chan_opt[@]}" -s "$sess_name" --log4j
1201 ok $?
"Enable LOG4J event '$event_name' for session '$sess_name' with loglevel-only '$loglevel'"
1204 function enable_python_lttng_event
()
1210 if [ -z $channel_name ]; then
1211 # default channel if none specified
1214 chan
="-c $channel_name"
1217 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-event
"$event_name" $chan -s $sess_name -p 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1218 ok $?
"Enable Python event $event_name for session $sess_name"
1221 function enable_python_lttng_event_loglevel
()
1224 local event_name
="$2"
1226 local channel_name
=$4
1228 if [ -z $channel_name ]; then
1229 # default channel if none specified
1232 chan
="-c $channel_name"
1235 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-event
--loglevel $loglevel "$event_name" $chan -s $sess_name -p 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1236 ok $?
"Enable Python event $event_name for session $sess_name with loglevel $loglevel"
1239 function enable_ust_lttng_event_filter
()
1241 local sess_name
="$1"
1242 local event_name
="$2"
1244 local channel_name
=$4
1246 if [ -z $channel_name ]; then
1247 # default channel if none specified
1250 chan
="-c $channel_name"
1253 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-event
$chan "$event_name" -s $sess_name -u --filter "$filter" 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1254 ok $?
"Enable event $event_name with filtering for session $sess_name"
1257 function enable_ust_lttng_event_loglevel
()
1259 local sess_name
="$1"
1260 local event_name
="$2"
1263 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-event
"$event_name" -s $sess_name -u --loglevel $loglevel 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1264 ok $?
"Enable event $event_name with loglevel $loglevel"
1267 function enable_ust_lttng_event_loglevel_only
()
1269 local sess_name
="$1"
1270 local event_name
="$2"
1273 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-event
"$event_name" -s $sess_name -u --loglevel-only $loglevel 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1274 ok $?
"Enable event $event_name with loglevel-only $loglevel"
1277 function disable_ust_lttng_event
()
1279 local sess_name
="$1"
1280 local event_name
="$2"
1281 local channel_name
="$3"
1283 if [ -z $channel_name ]; then
1284 # default channel if none specified
1287 chan
="-c $channel_name"
1290 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN disable-event
"$event_name" -s $sess_name $chan -u 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1291 ok $?
"Disable event $event_name for session $sess_name"
1294 function disable_jul_lttng_event
()
1296 local sess_name
="$1"
1297 local event_name
="$2"
1299 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN disable-event
"$event_name" -s $sess_name -j >/dev
/null
2>&1
1300 ok $?
"Disable JUL event $event_name for session $sess_name"
1303 function disable_log4j_lttng_event
()
1305 local sess_name
="$1"
1306 local event_name
="$2"
1308 _run_lttng_cmd
"$OUTPUT_DEST" "$ERROR_OUTPUT_DEST" \
1309 disable-event
"$event_name" -s "$sess_name" --log4j
1310 ok $?
"Disable LOG4J event '$event_name' for session '$sess_name'"
1313 function disable_python_lttng_event
()
1315 local sess_name
="$1"
1316 local event_name
="$2"
1318 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN disable-event
"$event_name" -s $sess_name -p 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1319 ok $?
"Disable Python event $event_name for session $sess_name"
1322 function start_lttng_tracing_opt
()
1325 local expected_to_fail
=$2
1328 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN start
$sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1330 if [[ $expected_to_fail -eq "1" ]]; then
1333 if [ $withtap -eq "1" ]; then
1334 ok $?
"Start tracing for session $sess_name failed as expected"
1337 if [ $withtap -eq "1" ]; then
1338 ok
$ret "Start tracing for session $sess_name"
1343 function start_lttng_tracing_ok
()
1345 start_lttng_tracing_opt
1 0 "$@"
1348 function start_lttng_tracing_fail
()
1350 start_lttng_tracing_opt
1 1 "$@"
1353 function start_lttng_tracing_notap
()
1355 start_lttng_tracing_opt
0 1 "$@"
1358 function stop_lttng_tracing_opt
()
1361 local expected_to_fail
=$2
1364 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN stop
$sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1366 if [[ $expected_to_fail -eq "1" ]]; then
1369 if [ $withtap -eq "1" ]; then
1370 ok $?
"Stop lttng tracing for session $sess_name failed as expected"
1373 if [ $withtap -eq "1" ]; then
1374 ok
$ret "Stop lttng tracing for session $sess_name"
1379 function stop_lttng_tracing_ok
()
1381 stop_lttng_tracing_opt
1 0 "$@"
1384 function stop_lttng_tracing_fail
()
1386 stop_lttng_tracing_opt
1 1 "$@"
1389 function stop_lttng_tracing_notap
()
1391 stop_lttng_tracing_opt
0 0 "$@"
1394 function destroy_lttng_session
()
1397 local expected_to_fail
=$2
1400 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN destroy
$sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1402 if [[ $expected_to_fail -eq "1" ]]; then
1405 if [ $withtap -eq "1" ]; then
1406 ok
$ret "Destroy session $sess_name failed as expected"
1409 if [ $withtap -eq "1" ]; then
1410 ok
$ret "Destroy session $sess_name"
1415 function destroy_lttng_session_ok
()
1417 destroy_lttng_session
1 0 "$@"
1421 function destroy_lttng_session_fail
()
1423 destroy_lttng_session
1 1 "$@"
1426 function destroy_lttng_session_notap
()
1428 destroy_lttng_session
0 0 "$@"
1431 function destroy_lttng_sessions
()
1433 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN destroy
--all 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1434 ok $?
"Destroy all lttng sessions"
1437 function lttng_snapshot_add_output
()
1439 local expected_to_fail
=$1
1444 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN snapshot add-output
-s $sess_name $trace_path $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1446 if [[ $expected_to_fail -eq 1 ]]; then
1448 ok $?
"Added snapshot output $trace_path failed as expected"
1450 ok
$ret "Added snapshot output $trace_path"
1454 function lttng_snapshot_add_output_ok
()
1456 lttng_snapshot_add_output
0 "$@"
1459 function lttng_snapshot_add_output_fail
()
1461 lttng_snapshot_add_output
1 "$@"
1464 function lttng_snapshot_del_output
()
1466 local expected_to_fail
=$1
1470 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN snapshot del-output
-s $sess_name $id 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1472 if [[ $expected_to_fail -eq "1" ]]; then
1474 ok $?
"Deleted snapshot output id $id failed as expected"
1476 ok
$ret "Deleted snapshot output id $id"
1480 function lttng_snapshot_del_output_ok
()
1482 lttng_snapshot_del_output
0 "$@"
1485 function lttng_snapshot_del_output_fail
()
1487 lttng_snapshot_del_output
1 "$@"
1490 function lttng_snapshot_record
()
1495 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN snapshot record
-s "$sess_name" "$trace_path" 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1496 ok $?
"Snapshot recorded"
1499 function lttng_snapshot_list
()
1502 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN snapshot list-output
-s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1503 ok $?
"Snapshot list"
1506 function lttng_save
()
1511 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN save
$sess_name $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1512 ok $?
"Session saved"
1515 function lttng_load
()
1517 local expected_to_fail
=$1
1520 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN load
$opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1522 if [[ $expected_to_fail -eq "1" ]]; then
1524 ok $?
"Load command failed as expected with opts: $opts"
1526 ok
$ret "Load command with opts: $opts"
1530 function lttng_load_ok
()
1535 function lttng_load_fail
()
1540 function lttng_track
()
1542 local expected_to_fail
="$1"
1545 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN track
$opts >$OUTPUT_DEST
1547 if [[ $expected_to_fail -eq "1" ]]; then
1549 ok $?
"Track command failed as expected with opts: $opts"
1551 ok
$ret "Track command with opts: $opts"
1555 function lttng_track_ok
()
1560 function lttng_track_fail
()
1565 function lttng_untrack
()
1567 local expected_to_fail
="$1"
1570 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN untrack
$opts >$OUTPUT_DEST
1572 if [[ $expected_to_fail -eq "1" ]]; then
1574 ok $?
"Untrack command failed as expected with opts: $opts"
1576 ok
$ret "Untrack command with opts: $opts"
1580 function lttng_untrack_ok
()
1582 lttng_untrack
0 "$@"
1585 function lttng_untrack_fail
()
1587 lttng_untrack
1 "$@"
1590 function lttng_track_pid_ok
()
1593 "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" track
--kernel --pid=$PID 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1594 ok $?
"Lttng track pid on the kernel domain"
1597 function lttng_untrack_kernel_all_ok
()
1599 "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" untrack
--kernel --pid --all 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1600 ok $?
"Lttng untrack all pid on the kernel domain"
1603 function lttng_track_ust_ok
()
1605 lttng_track_ok
-u "$@"
1608 function lttng_track_ust_fail
()
1610 lttng_track_fail
-u "$@"
1613 function lttng_track_kernel_ok
()
1615 lttng_track_ok
-k "$@"
1618 function lttng_track_kernel_fail
()
1620 lttng_track_fail
-k "$@"
1623 function lttng_untrack_ust_ok
()
1625 lttng_untrack_ok
-u "$@"
1628 function lttng_untrack_ust_fail
()
1630 lttng_untrack_fail
-u "$@"
1633 function lttng_untrack_kernel_ok
()
1635 lttng_untrack_ok
-k "$@"
1638 function lttng_untrack_kernel_fail
()
1640 lttng_untrack_fail
-k "$@"
1643 function lttng_add_context_list
()
1645 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN add-context
--list 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1647 ok
$ret "Context listing"
1650 function add_context_lttng
()
1652 local expected_to_fail
="$1"
1654 local session_name
="$3"
1655 local channel_name
="$4"
1658 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN add-context
-s $session_name -c $channel_name -t $type $domain 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1660 if [[ $expected_to_fail -eq "1" ]]; then
1662 ok $?
"Add context command failed as expected for type: $type"
1664 ok
$ret "Add context command for type: $type"
1668 function add_context_ust_ok
()
1670 add_context_lttng
0 -u "$@"
1673 function add_context_ust_fail
()
1675 add_context_lttng
1 -u "$@"
1678 function add_context_kernel_ok
()
1680 add_context_lttng
0 -k "$@"
1683 function add_context_kernel_fail
()
1685 add_context_lttng
1 -k "$@"
1688 function wait_live_trace_ready
()
1691 local zero_client_match
=0
1693 diag
"Waiting for live trace at url: $url"
1694 while [ $zero_client_match -eq 0 ]; do
1695 zero_client_match
=$
($BABELTRACE_BIN -i lttng-live
$url |
grep "0 client(s) connected" |
wc -l)
1698 pass
"Waiting for live trace at url: $url"
1701 function wait_live_viewer_connect
()
1704 local one_client_match
=0
1706 diag
"Waiting for live viewers on url: $url"
1707 while [ $one_client_match -eq 0 ]; do
1708 one_client_match
=$
($BABELTRACE_BIN -i lttng-live
$url |
grep "1 client(s) connected" |
wc -l)
1711 pass
"Waiting for live viewers on url: $url"
1714 function bail_out_if_no_babeltrace
()
1716 which "$BABELTRACE_BIN" >/dev
/null
1717 if [ $?
-ne 0 ]; then
1718 LTTNG_BAIL_OUT
"\"$BABELTRACE_BIN\" binary not found. Skipping tests"
1722 function validate_metadata_event
()
1725 local nr_event_id
=$2
1728 local metadata_file
=$
(find $trace_path |
grep metadata
)
1729 local metadata_path
=$
(dirname $metadata_file)
1731 which $BABELTRACE_BIN >/dev
/null
1732 skip $?
-ne 0 "Babeltrace binary not found. Skipping trace matches"
1734 local count
=$
($BABELTRACE_BIN --output-format=ctf-metadata
$metadata_path |
grep $event_name |
wc -l)
1736 if [ "$count" -ne "$nr_event_id" ]; then
1737 fail
"Metadata match with the metadata of $count event(s) named $event_name"
1738 diag
"$count matching event id found in metadata"
1740 pass
"Metadata match with the metadata of $count event(s) named $event_name"
1745 function trace_matches
()
1751 which $BABELTRACE_BIN >/dev
/null
1752 skip $?
-ne 0 "Babeltrace binary not found. Skipping trace matches"
1754 local count
=$
($BABELTRACE_BIN $trace_path |
grep $event_name |
wc -l)
1756 if [ "$count" -ne "$nr_iter" ]; then
1758 diag
"$count matching events found in trace"
1764 function trace_match_only
()
1770 which $BABELTRACE_BIN >/dev
/null
1771 skip $?
-ne 0 "Babeltrace binary not found. Skipping trace matches"
1773 local count
=$
($BABELTRACE_BIN $trace_path |
grep $event_name |
wc -l)
1774 local total
=$
($BABELTRACE_BIN $trace_path |
wc -l)
1776 if [ "$nr_iter" -eq "$count" ] && [ "$total" -eq "$nr_iter" ]; then
1777 pass
"Trace match with $total event $event_name"
1780 diag
"$total event(s) found, expecting $nr_iter of event $event_name and only found $count"
1784 function validate_trace
1789 which $BABELTRACE_BIN >/dev
/null
1790 if [ $?
-ne 0 ]; then
1791 skip
0 "Babeltrace binary not found. Skipping trace validation"
1796 for i
in $event_name; do
1797 traced
=$
($BABELTRACE_BIN $trace_path 2>/dev
/null |
grep $i |
wc -l)
1798 if [ "$traced" -ne 0 ]; then
1799 pass
"Validate trace for event $i, $traced events"
1801 fail
"Validate trace for event $i"
1802 diag
"Found $traced occurences of $i"
1810 function validate_trace_count
1814 local expected_count
=$3
1816 which $BABELTRACE_BIN >/dev
/null
1817 if [ $?
-ne 0 ]; then
1818 skip
0 "Babeltrace binary not found. Skipping trace validation"
1824 for i
in $event_name; do
1825 traced
=$
($BABELTRACE_BIN $trace_path 2>/dev
/null |
grep $i |
wc -l)
1826 if [ "$traced" -ne 0 ]; then
1827 pass
"Validate trace for event $i, $traced events"
1829 fail
"Validate trace for event $i"
1830 diag
"Found $traced occurences of $i"
1832 cnt
=$
(($cnt + $traced))
1835 test $cnt -eq $expected_count
1836 ok $?
"Read a total of $cnt events, expected $expected_count"
1839 function validate_trace_count_range_incl_min_excl_max
1843 local expected_min
=$3
1844 local expected_max
=$4
1846 which $BABELTRACE_BIN >/dev
/null
1847 if [ $?
-ne 0 ]; then
1848 skip
0 "Babeltrace binary not found. Skipping trace validation"
1854 for i
in $event_name; do
1855 traced
=$
($BABELTRACE_BIN $trace_path 2>/dev
/null |
grep $i |
wc -l)
1856 if [ "$traced" -ge $expected_min ]; then
1857 pass
"Validate trace for event $i, $traced events"
1859 fail
"Validate trace for event $i"
1860 diag
"Found $traced occurences of $i"
1862 cnt
=$
(($cnt + $traced))
1865 test $cnt -lt $expected_max
1866 ok $?
"Read a total of $cnt events, expected between [$expected_min, $expected_max["
1869 function trace_first_line
1873 which $BABELTRACE_BIN >/dev
/null
1874 if [ $?
-ne 0 ]; then
1875 skip
0 "Babeltrace binary not found. Skipping trace validation"
1878 $BABELTRACE_BIN $trace_path 2>/dev
/null |
head -n 1
1881 function validate_trace_exp
()
1886 which $BABELTRACE_BIN >/dev
/null
1887 skip $?
-ne 0 "Babeltrace binary not found. Skipping trace validation"
1889 traced
=$
($BABELTRACE_BIN $trace_path 2>/dev
/null |
grep --extended-regexp ${event_exp} |
wc -l)
1890 if [ "$traced" -ne 0 ]; then
1891 pass
"Validate trace for expression '${event_exp}', $traced events"
1893 fail
"Validate trace for expression '${event_exp}'"
1894 diag
"Found $traced occurences of '${event_exp}'"
1900 function validate_trace_only_exp
()
1905 which $BABELTRACE_BIN >/dev
/null
1906 skip $?
-ne 0 "Babeltrace binary not found. Skipping trace matches"
1908 local count
=$
($BABELTRACE_BIN $trace_path |
grep --extended-regexp ${event_exp} |
wc -l)
1909 local total
=$
($BABELTRACE_BIN $trace_path |
wc -l)
1911 if [ "$count" -ne 0 ] && [ "$total" -eq "$count" ]; then
1912 pass
"Trace match with $total for expression '${event_exp}'"
1915 diag
"$total syscall event(s) found, only syscalls matching expression '${event_exp}' ($count occurrences) are expected"
1921 function validate_trace_empty
()
1925 which $BABELTRACE_BIN >/dev
/null
1926 if [ $?
-ne 0 ]; then
1927 skip
0 "Babeltrace binary not found. Skipping trace validation"
1930 events
=$
($BABELTRACE_BIN $trace_path 2>/dev
/null
)
1932 if [ $ret -ne 0 ]; then
1933 fail
"Failed to parse trace"
1937 traced
=$
(echo -n "$events" |
wc -l)
1938 if [ "$traced" -eq 0 ]; then
1939 pass
"Validate empty trace"
1941 fail
"Validate empty trace"
1942 diag
"Found $traced events in trace"
1948 function validate_directory_empty
()
1950 local trace_path
="$1"
1952 # Do not double quote `$trace_path` below as we want wildcards to be
1954 files
="$(ls -A $trace_path)"
1956 if [ $ret -ne 0 ]; then
1957 fail
"Failed to list content of directory \"$trace_path\""
1961 nb_files
="$(echo -n "$files" | wc -l)"
1962 ok
$nb_files "Directory \"$trace_path\" is empty"
1965 function validate_trace_session_ust_empty
()
1967 validate_directory_empty
"$1"/ust
1970 function validate_trace_session_kernel_empty
()
1972 validate_trace_empty
"$1"/kernel
1975 function regenerate_metadata
()
1977 local expected_to_fail
=$1
1980 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN regenerate metadata
-s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1982 if [[ $expected_to_fail -eq "1" ]]; then
1984 ok $?
"Expected fail on regenerate metadata $sess_name"
1986 ok
$ret "Metadata regenerate $sess_name"
1990 function regenerate_metadata_ok
()
1992 regenerate_metadata
0 "$@"
1995 function regenerate_metadata_fail
()
1997 regenerate_metadata
1 "$@"
2000 function regenerate_statedump
()
2002 local expected_to_fail
=$1
2005 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN regenerate statedump
-s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
2007 if [[ $expected_to_fail -eq "1" ]]; then
2009 ok $?
"Expected fail on regenerate statedump $sess_name"
2011 ok
$ret "Statedump regenerate $sess_name"
2015 function regenerate_statedump_ok
()
2017 regenerate_statedump
0 "$@"
2020 function regenerate_statedump_fail
()
2022 regenerate_statedump
1 "$@"
2025 function rotate_session
()
2027 local expected_to_fail
=$1
2030 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN rotate
$sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
2032 if [[ $expected_to_fail -eq "1" ]]; then
2034 ok $?
"Expected fail on rotate session $sess_name"
2036 ok
$ret "Rotate session $sess_name"
2040 function rotate_session_ok
()
2042 rotate_session
0 "$@"
2045 function rotate_session_fail
()
2047 rotate_session
1 "$@"
2050 function destructive_tests_enabled
()
2052 if [ "$LTTNG_ENABLE_DESTRUCTIVE_TESTS" = "will-break-my-system" ]; then
2059 function lttng_enable_rotation_timer
()
2061 local expected_to_fail
=$1
2065 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-rotation
-s $sess_name --timer $period 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
2067 if [[ $expected_to_fail -eq "1" ]]; then
2069 ok $?
"Expected fail when setting periodic rotation ($period) of session $sess_name"
2071 ok
$ret "Set periodic rotation ($period) of session $sess_name"
2075 function lttng_enable_rotation_timer_ok
()
2077 lttng_enable_rotation_timer
0 $@
2080 function lttng_enable_rotation_timer_fail
()
2082 lttng_enable_rotation_timer
1 $@
2085 function lttng_enable_rotation_size
()
2087 local expected_to_fail
=$1
2091 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-rotation
-s $sess_name --size $size 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
2093 if [[ $expected_to_fail -eq "1" ]]; then
2095 ok $?
"Expected fail on rotate session $sess_name"
2097 ok
$ret "Rotate session $sess_name"
2101 function lttng_enable_rotation_size_ok
()
2103 lttng_enable_rotation_size
0 $@
2106 function lttng_enable_rotation_size_fail
()
2108 lttng_enable_rotation_size
1 $@
2111 function lttng_clear_session
()
2113 local expected_to_fail
=$1
2116 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN clear $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
2118 if [[ $expected_to_fail -eq "1" ]]; then
2120 ok $?
"Expected fail on clear session $sess_name"
2122 ok
$ret "Clear session $sess_name"
2126 function lttng_clear_session_ok
()
2128 lttng_clear_session
0 $@
2131 function lttng_clear_session_fail
()
2133 lttng_clear_session
1 $@
2136 function lttng_clear_all
()
2138 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN clear --all 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
2139 ok $?
"Clear all lttng sessions"
2142 function validate_path_pattern
()
2146 # Base path is only used in error case and is used to list the content
2155 if [ "$ret" -ne "0" ]; then
2156 diag
"Path pattern expected: $pattern"
2157 # List the tracepath for more info. We use find as a recursive
2159 diag
"The base path content:"
2160 find "$base_path" -print
2164 function validate_trace_path_ust_uid
()
2167 local session_name
=$2
2169 local pattern
="$trace_path/$session_name-$date_time_pattern/ust/uid/$uid/${system_long_bit_size}-bit/metadata"
2171 validate_path_pattern
"UST per-uid trace path is valid" "$pattern" "$trace_path"
2174 function validate_trace_path_ust_uid_network
()
2177 local session_name
=$2
2180 local hostname
=$HOSTNAME
2184 # If the session was given a network base path (e.g
2185 # 127.0.0.1/my/custom/path on creation, there is no session name
2186 # component to the path on the relayd side. Caller can simply not pass a
2187 # session name for this scenario.
2188 if [ -n "$session_name" ]; then
2189 session_name
="$session_name-$date_time_pattern"
2190 if [ -n "$base_path" ]; then
2191 fail
"Session name and base path are mutually exclusive"
2196 pattern
="$trace_path/$hostname/$base_path/$session_name/ust/uid/$uid/${system_long_bit_size}-bit/metadata"
2198 validate_path_pattern
"UST per-uid network trace path is valid" "$pattern" "$trace_path"
2201 function validate_trace_path_ust_uid_snapshot_network
()
2204 local session_name
=$2
2205 local snapshot_name
=$3
2206 local snapshot_number
=$4
2208 local hostname
=$HOSTNAME
2213 # If the session/output was given a network base path (e.g
2214 # 127.0.0.1/my/custom/path on creation, there is no session name
2215 # component to the path on the relayd side. Caller can simply not pass a
2216 # session name for this scenario.
2217 if [ -n "$session_name" ]; then
2218 session_name
="$session_name-$date_time_pattern"
2219 if [ -n "$base_path" ]; then
2220 fail
"Session name and base path are mutually exclusive"
2225 pattern
="$trace_path/$hostname/$base_path/$session_name/$snapshot_name-$date_time_pattern-$snapshot_number/ust/uid/$uid/${system_long_bit_size}-bit/metadata"
2227 validate_path_pattern
"UST per-uid network snapshot trace path is valid" "$pattern" "$trace_path"
2230 function validate_trace_path_ust_uid_snapshot
()
2233 local session_name
=$2
2234 local snapshot_name
=$3
2235 local snapshot_number
=$4
2241 # If the session/output was given a network base path (e.g
2242 # 127.0.0.1/my/custom/path) on creation, there is no session name
2243 # component to the path on the relayd side. Caller can simply not pass a
2244 # session name for this scenario.
2245 if [ -n "$session_name" ]; then
2246 session_name
="$session_name-$date_time_pattern"
2247 if [ -n "$base_path" ]; then
2248 fail
"Session name and base path are mutually exclusive"
2253 pattern
="$trace_path/$base_path/$session_name/$snapshot_name-$date_time_pattern-$snapshot_number/ust/uid/$uid/${system_long_bit_size}-bit/metadata"
2255 validate_path_pattern
"UST per-uid snapshot trace path is valid" "$pattern" "$trace_path"
2258 function validate_trace_path_ust_pid
()
2261 local session_name
=$2
2267 # If the session was given a trace path on creation, there is no session
2268 # name component to the path. Caller can simply not pass a session name
2269 # for this scenario.
2270 if [ -n "$session_name" ]; then
2271 session_name
="$session_name-$date_time_pattern"
2274 pattern
="$trace_path/$session_name/ust/pid/$pid/$app_string-*-$date_time_pattern/metadata"
2276 validate_path_pattern
"UST per-pid trace path is valid" "$pattern" "$trace_path"
2279 function validate_trace_path_kernel
()
2282 local session_name
=$2
2285 # If the session was given a trace path on creation, there is no session
2286 # name component to the path. Caller can simply not pass a session name
2287 # for this scenario.
2288 if [ -n "$session_name" ]; then
2289 session_name
="$session_name-$date_time_pattern"
2292 pattern
="$trace_path/$session_name/kernel/metadata"
2294 validate_path_pattern
"Kernel trace path is valid" "$pattern" "$trace_path"
2297 function validate_trace_path_kernel_network
()
2300 local session_name
=$2
2301 local hostname
=$HOSTNAME
2302 local pattern
="$trace_path/$hostname/$session_name-$date_time_pattern/kernel/metadata"
2304 validate_path_pattern
"Kernel network trace path is valid" "$pattern" "$trace_path"
2307 function validate_trace_path_kernel_snapshot
()
2310 local session_name
=$2
2311 local snapshot_name
=$3
2312 local snapshot_number
=$4
2317 # If the session/output was given a network base path (e.g
2318 # 127.0.0.1/my/custom/path on creation, there is no session name
2319 # component to the path on the relayd side. Caller can simply not pass a
2320 # session name for this scenario.
2321 if [ -n "$session_name" ]; then
2322 session_name
="$session_name-$date_time_pattern"
2323 if [ -n "$base_path" ]; then
2324 fail
"Session name and base path are mutually exclusive"
2329 pattern
="$trace_path/$base_path/$session_name/$snapshot_name-$date_time_pattern-$snapshot_number/kernel/metadata"
2331 validate_path_pattern
"Kernel snapshot trace path is valid" "$pattern" "$trace_path"
2334 function validate_trace_path_kernel_snapshot_network
()
2337 local session_name
=$2
2338 local snapshot_name
=$3
2339 local snapshot_number
=$4
2341 local hostname
=$HOSTNAME
2345 # If the session/output was given a network base path (e.g
2346 # 127.0.0.1/my/custom/path on creation, there is no session name
2347 # component to the path on the relayd side. Caller can simply not pass a
2348 # session name for this scenario.
2349 if [ -n "$session_name" ]; then
2350 session_name
="$session_name-$date_time_pattern"
2351 if [ -n "$base_path" ]; then
2352 fail
"Session name and base path are mutually exclusive"
2357 pattern
="$trace_path/$hostname/$base_path/$session_name/$snapshot_name-$date_time_pattern-$snapshot_number/kernel/metadata"
2359 validate_path_pattern
"Kernel network snapshot trace path is valid" "$pattern" "$trace_path"