Improve handling of test SIGTERM/SIGINT (v2)
[lttng-tools.git] / tests / utils / utils.sh
CommitLineData
d3e8f6bb
DG
1# Copyright (C) - 2012 David Goulet <dgoulet@efficios.com>
2#
3# This library is free software; you can redistribute it and/or modify it under
4# the terms of the GNU Lesser General Public License as published by the Free
5# Software Foundation; version 2.1 of the License.
6#
7# This library is distributed in the hope that it will be useful, but WITHOUT
8# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
9# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
10# details.
11#
12# You should have received a copy of the GNU Lesser General Public License
13# along with this library; if not, write to the Free Software Foundation, Inc.,
14# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
15
16SESSIOND_BIN="lttng-sessiond"
725f658e 17SESSIOND_MATCH=".*lttng-sess.*"
19356f3a 18RUNAS_BIN="lttng-runas"
725f658e 19RUNAS_MATCH=".*lttng-runas.*"
f7613992 20CONSUMERD_BIN="lttng-consumerd"
725f658e 21CONSUMERD_MATCH=".*lttng-consumerd.*"
f4e40ab6 22RELAYD_BIN="lttng-relayd"
725f658e 23RELAYD_MATCH=".*lttng-relayd.*"
d3e8f6bb
DG
24LTTNG_BIN="lttng"
25BABELTRACE_BIN="babeltrace"
2cf48300
JR
26OUTPUT_DEST=/dev/null
27ERROR_OUTPUT_DEST=/dev/null
d3e8f6bb 28
fd4dfcec
DG
29# Minimal kernel version supported for session daemon tests
30KERNEL_MAJOR_VERSION=2
31KERNEL_MINOR_VERSION=6
32KERNEL_PATCHLEVEL_VERSION=27
33
651b8bb3
JG
34# We set the default UST register timeout and network and app socket timeout to
35# "wait forever", so that basic tests don't have to worry about hitting
36# timeouts on busy systems. Specialized tests should test those corner-cases.
629b9335 37export LTTNG_UST_REGISTER_TIMEOUT=-1
651b8bb3
JG
38export LTTNG_NETWORK_SOCKET_TIMEOUT=-1
39export LTTNG_APP_SOCKET_TIMEOUT=-1
629b9335 40
fd7fe1a8
JR
41# We set the default lttng-sessiond path to /bin/true to prevent the spawning
42# of a daemonized sessiond. This is necessary since 'lttng create' will spawn
43# its own sessiond if none is running. It also ensures that 'lttng create'
44# fails when no sessiond is running.
45export LTTNG_SESSIOND_PATH="/bin/true"
46
29655db7
CB
47source $TESTDIR/utils/tap/tap.sh
48
74a6c3f5
MD
49if [ -z $LTTNG_TEST_TEARDOWN_TIMEOUT ]; then
50 LTTNG_TEST_TEARDOWN_TIMEOUT=60
51fi
52
1c362dc7
JR
53function full_cleanup ()
54{
74a6c3f5
MD
55 # Try to kill daemons gracefully
56 stop_lttng_relayd_notap SIGTERM $LTTNG_TEST_TEARDOWN_TIMEOUT
57 stop_lttng_sessiond_notap SIGTERM $LTTNG_TEST_TEARDOWN_TIMEOUT
58
59 # If daemons are still present, forcibly kill them
60 stop_lttng_relayd_notap SIGKILL $LTTNG_TEST_TEARDOWN_TIMEOUT
61 stop_lttng_sessiond_notap SIGKILL $LTTNG_TEST_TEARDOWN_TIMEOUT
62 stop_lttng_consumerd_notap SIGKILL $LTTNG_TEST_TEARDOWN_TIMEOUT
1c362dc7
JR
63
64 # Disable trap for SIGTERM since the following kill to the
65 # pidgroup will be SIGTERM. Otherwise it loops.
66 # The '-' before the pid number ($$) indicates 'kill' to signal the
67 # whole process group.
68 trap - SIGTERM && kill -- -$$
69}
70
71
72trap full_cleanup SIGINT SIGTERM
73
fec81a7e
CB
74function print_ok ()
75{
76 # Check if we are a terminal
77 if [ -t 1 ]; then
78 echo -e "\e[1;32mOK\e[0m"
79 else
80 echo -e "OK"
81 fi
82}
83
84function print_fail ()
85{
86 # Check if we are a terminal
87 if [ -t 1 ]; then
88 echo -e "\e[1;31mFAIL\e[0m"
89 else
90 echo -e "FAIL"
91 fi
92}
93
94function print_test_banner ()
95{
7d0ad314 96 local desc="$1"
29655db7 97 diag "$desc"
fec81a7e
CB
98}
99
fd4dfcec
DG
100function validate_kernel_version ()
101{
7d0ad314 102 local kern_version=($(uname -r | awk -F. '{ printf("%d.%d.%d\n",$1,$2,$3); }' | tr '.' '\n'))
fd4dfcec
DG
103 if [ ${kern_version[0]} -gt $KERNEL_MAJOR_VERSION ]; then
104 return 0
105 fi
106 if [ ${kern_version[1]} -gt $KERNEL_MINOR_VERSION ]; then
107 return 0
108 fi
109 if [ ${kern_version[2]} -ge $KERNEL_PATCHLEVEL_VERSION ]; then
110 return 0
111 fi
112 return 1
113}
114
9ac429ef 115# Generate a random string
f4e40ab6
DG
116# $1 = number of characters; defaults to 16
117# $2 = include special characters; 1 = yes, 0 = no; defaults to yes
9ac429ef 118function randstring()
f4e40ab6
DG
119{
120 [ "$2" == "0" ] && CHAR="[:alnum:]" || CHAR="[:graph:]"
b89c3a68 121 cat /dev/urandom 2>/dev/null | tr -cd "$CHAR" 2>/dev/null | head -c ${1:-16} 2>/dev/null
f4e40ab6
DG
122 echo
123}
124
9e136324
JG
125# Return the number of _configured_ CPUs.
126function conf_proc_count()
127{
128 getconf _NPROCESSORS_CONF
129 if [ $? -ne 0 ]; then
130 diag "Failed to get the number of configured CPUs"
131 fi
132 echo
133}
134
f637036a
JR
135# Check if base lttng-modules are present.
136# Bail out on failure
137function validate_lttng_modules_present ()
138{
139 modprobe -n lttng-tracer 2>/dev/null
140 if [ $? -ne 0 ]; then
141 BAIL_OUT "LTTng modules not detected."
142 fi
143}
144
4a180d9f 145function enable_kernel_lttng_event
f4e40ab6 146{
60c78fd5
JR
147 local withtap="$1"
148 local expected_to_fail="$2"
149 local sess_name="$3"
150 local event_name="$4"
151 local channel_name="$5"
f4e40ab6 152
4a180d9f 153 if [ -z "$event_name" ]; then
f4e40ab6 154 # Enable all event if no event name specified
29655db7 155 event_name="-a"
f4e40ab6
DG
156 fi
157
4a180d9f 158 if [ -z "$channel_name" ]; then
07b86b52
JD
159 # default channel if none specified
160 chan=""
161 else
162 chan="-c $channel_name"
163 fi
164
2cf48300 165 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" $chan -s $sess_name -k 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
4a180d9f
MD
166 ret=$?
167 if [[ $expected_to_fail -eq "1" ]]; then
168 test $ret -ne "0"
60c78fd5
JR
169 ret=$?
170 if [ $withtap -eq "1" ]; then
171 ok $ret "Enable kernel event $event_name for session $session_name on channel $channel_name failed as expected"
172 fi
4a180d9f 173 else
60c78fd5
JR
174 if [ $withtap -eq "1" ]; then
175 ok $ret "Enable kernel event $event_name for session $sess_name"
176 fi
4a180d9f
MD
177 fi
178}
179
180function enable_kernel_lttng_event_ok ()
181{
60c78fd5 182 enable_kernel_lttng_event 1 0 "$@"
4a180d9f
MD
183}
184
185function enable_kernel_lttng_event_fail ()
186{
60c78fd5
JR
187 enable_kernel_lttng_event 1 1 "$@"
188}
189
190function enable_kernel_lttng_event_notap ()
191{
192 enable_kernel_lttng_event 0 0 "$@"
4a180d9f
MD
193}
194
195# Old interface
196function lttng_enable_kernel_event
197{
198 enable_kernel_lttng_event_ok "$@"
f4e40ab6
DG
199}
200
8cfcd41c
MD
201function lttng_enable_kernel_syscall()
202{
203 local expected_to_fail=$1
204 local sess_name=$2
205 local syscall_name=$3
206 local channel_name=$4
207
208 if [ -z $syscall_name ]; then
209 # Enable all event if no syscall name specified
210 syscall_name="-a"
211 fi
212
213 if [ -z $channel_name ]; then
214 # default channel if none specified
215 chan=""
216 else
217 chan="-c $channel_name"
218 fi
219
2cf48300 220 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event --syscall "$syscall_name" $chan -s $sess_name -k 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
8cfcd41c
MD
221 ret=$?
222 if [[ $expected_to_fail -eq "1" ]]; then
223 test $ret -ne "0"
224 ok $? "Enable kernel syscall $syscall_name for session $sess_name on channel $channel_name fail as expected"
225 else
226 ok $ret "Enable kernel syscall $syscall_name for session $sess_name on channel $channel_name"
227 fi
228}
229
230function lttng_enable_kernel_syscall_ok()
231{
421b83dc 232 lttng_enable_kernel_syscall 0 "$@"
8cfcd41c
MD
233}
234
235function lttng_enable_kernel_syscall_fail()
236{
421b83dc 237 lttng_enable_kernel_syscall 1 "$@"
8cfcd41c
MD
238}
239
240function lttng_disable_kernel_syscall()
241{
242 local expected_to_fail=$1
243 local sess_name=$2
244 local syscall_name=$3
245 local channel_name=$4
246
247 if [ -z $syscall_name ]; then
248 # Enable all event if no syscall name specified
249 syscall_name="-a"
250 fi
251
252 if [ -z $channel_name ]; then
253 # default channel if none specified
254 chan=""
255 else
256 chan="-c $channel_name"
257 fi
258
2cf48300 259 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-event --syscall "$syscall_name" $chan -s $sess_name -k 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
8cfcd41c
MD
260
261 ret=$?
262 if [[ $expected_to_fail -eq "1" ]]; then
263 test $ret -ne "0"
34ab15c5 264 ok $? "Disable kernel syscall $syscall_name for session $sess_name on channel $channel_name failed as expected"
8cfcd41c
MD
265 else
266 ok $ret "Disable kernel syscall $syscall_name for session $sess_name on channel $channel_name"
267 fi
268}
269
270function lttng_disable_kernel_syscall_ok()
271{
421b83dc 272 lttng_disable_kernel_syscall 0 "$@"
8cfcd41c
MD
273}
274
275function lttng_disable_kernel_syscall_fail()
276{
421b83dc 277 lttng_disable_kernel_syscall 1 "$@"
8cfcd41c
MD
278}
279
d96f6315
MD
280function lttng_enable_kernel_channel()
281{
60c78fd5
JR
282 local withtap=$1
283 local expected_to_fail=$2
284 local sess_name=$3
285 local channel_name=$4
286 local opt=$5
d96f6315 287
60c78fd5 288 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel -k $channel_name -s $sess_name $opt 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
d96f6315
MD
289 ret=$?
290 if [[ $expected_to_fail -eq "1" ]]; then
291 test "$ret" -ne "0"
60c78fd5
JR
292 ret=$?
293 if [ $withtap -eq "1" ]; then
294 ok $ret "Enable channel $channel_name for session $sess_name failed as expected"
295 fi
d96f6315 296 else
60c78fd5
JR
297 if [ $withtap -eq "1" ]; then
298 ok $ret "Enable channel $channel_name for session $sess_name"
299 fi
d96f6315
MD
300 fi
301}
302
303function lttng_enable_kernel_channel_ok()
304{
60c78fd5 305 lttng_enable_kernel_channel 1 0 "$@"
d96f6315
MD
306}
307
308function lttng_enable_kernel_channel_fail()
309{
60c78fd5
JR
310 lttng_enable_kernel_channel 1 1 "$@"
311}
312
313function lttng_enable_kernel_channel_notap()
314{
315 lttng_enable_kernel_channel 0 0 "$@"
316}
317
318function enable_kernel_lttng_channel_ok()
319{
320 lttng_enable_kernel_channel 1 0 "$@"
d96f6315
MD
321}
322
323function lttng_disable_kernel_channel()
324{
325 local expected_to_fail=$1
326 local sess_name=$2
327 local channel_name=$3
328
2cf48300 329 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-channel -k $channel_name -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
d96f6315
MD
330 ret=$?
331 if [[ $expected_to_fail -eq "1" ]]; then
332 test "$ret" -ne "0"
34ab15c5 333 ok $? "Disable channel $channel_name for session $sess_name failed as expected"
d96f6315 334 else
34ab15c5 335 ok $ret "Disable channel $channel_name for session $sess_name"
d96f6315
MD
336 fi
337}
338
339function lttng_disable_kernel_channel_ok()
340{
421b83dc 341 lttng_disable_kernel_channel 0 "$@"
d96f6315
MD
342}
343
344function lttng_disable_kernel_channel_fail()
345{
421b83dc 346 lttng_disable_kernel_channel 1 "$@"
d96f6315
MD
347}
348
05aa48da 349function start_lttng_relayd_opt()
f4e40ab6 350{
05aa48da
MD
351 local withtap=$1
352 local opt=$2
173af62f 353
74a6c3f5 354 DIR=$(readlink -f "$TESTDIR")
f4e40ab6 355
74a6c3f5
MD
356 if [ -z "$(pgrep "$RELAYD_MATCH")" ]; then
357 # shellcheck disable=SC2086
358 "$DIR/../src/bin/lttng-relayd/$RELAYD_BIN" -b $opt 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
359 #"$DIR/../src/bin/lttng-relayd/$RELAYD_BIN" $opt -vvv >>/tmp/relayd.log 2>&1 &
f4e40ab6 360 if [ $? -eq 1 ]; then
74a6c3f5 361 if [ "$withtap" -eq "1" ]; then
05aa48da
MD
362 fail "Start lttng-relayd (opt: $opt)"
363 fi
f4e40ab6
DG
364 return 1
365 else
74a6c3f5 366 if [ "$withtap" -eq "1" ]; then
05aa48da
MD
367 pass "Start lttng-relayd (opt: $opt)"
368 fi
f4e40ab6
DG
369 fi
370 else
29655db7 371 pass "Start lttng-relayd (opt: $opt)"
f4e40ab6
DG
372 fi
373}
374
05aa48da 375function start_lttng_relayd()
f4e40ab6 376{
05aa48da
MD
377 start_lttng_relayd_opt 1 "$@"
378}
379
380function start_lttng_relayd_notap()
381{
382 start_lttng_relayd_opt 0 "$@"
383}
384
385function stop_lttng_relayd_opt()
386{
387 local withtap=$1
74a6c3f5 388 local signal=$2
05aa48da 389
74a6c3f5
MD
390 if [ -z "$signal" ]; then
391 signal="SIGTERM"
05aa48da 392 fi
29655db7 393
74a6c3f5
MD
394 local timeout_s=$3
395 local dtimeleft_s=
396
397 # Multiply time by 2 to simplify integer arithmetic
398 if [ -n "$timeout_s" ]; then
399 dtimeleft_s=$((timeout_s * 2))
400 fi
401
402 local retval=0
403 local pids=
404
405 pids=$(pgrep "$RELAYD_MATCH")
406 if [ -z "$pids" ]; then
407 if [ "$withtap" -eq "1" ]; then
408 pass "No relay daemon to kill"
409 fi
410 return 0
411 fi
412
413 diag "Killing (signal $signal) lttng-relayd (pid: $pids)"
414
415 # shellcheck disable=SC2086
416 if ! kill -s $signal $pids 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST; then
417 retval=1
418 if [ "$withtap" -eq "1" ]; then
05aa48da
MD
419 fail "Kill relay daemon"
420 fi
05aa48da 421 else
f4e40ab6
DG
422 out=1
423 while [ -n "$out" ]; do
74a6c3f5
MD
424 out=$(pgrep "$RELAYD_MATCH")
425 if [ -n "$dtimeleft_s" ]; then
426 if [ $dtimeleft_s -lt 0 ]; then
427 out=
428 retval=1
429 fi
430 dtimeleft_s=$((dtimeleft_s - 1))
431 fi
f4e40ab6
DG
432 sleep 0.5
433 done
74a6c3f5
MD
434 if [ "$withtap" -eq "1" ]; then
435 if [ "$retval" -eq "0" ]; then
436 pass "Wait after kill relay daemon"
437 else
438 fail "Wait after kill relay daemon"
439 fi
05aa48da 440 fi
1fb23888
MD
441 fi
442 return $retval
443}
444
05aa48da 445function stop_lttng_relayd()
1fb23888 446{
05aa48da
MD
447 stop_lttng_relayd_opt 1 "$@"
448}
1fb23888 449
05aa48da
MD
450function stop_lttng_relayd_notap()
451{
452 stop_lttng_relayd_opt 0 "$@"
f4e40ab6
DG
453}
454
05aa48da
MD
455#First arg: show tap output
456#Second argument: load path for automatic loading
457function start_lttng_sessiond_opt()
355f483d 458{
05aa48da
MD
459 local withtap=$1
460 local load_path=$2
8d51ddbc 461
39c98949 462 local env_vars=""
85cfac2f 463 local consumerd=""
85cfac2f 464
74a6c3f5
MD
465 local long_bit_value=
466 long_bit_value=$(getconf LONG_BIT)
467
468 if [ -n "$TEST_NO_SESSIOND" ] && [ "$TEST_NO_SESSIOND" == "1" ]; then
355f483d
DG
469 # Env variable requested no session daemon
470 return
471 fi
472
74a6c3f5 473 DIR=$(readlink -f "$TESTDIR")
85cfac2f
JR
474
475 # Get long_bit value for 32/64 consumerd
476 case "$long_bit_value" in
477 32)
478 consumerd="--consumerd32-path=$DIR/../src/bin/lttng-consumerd/lttng-consumerd"
479 ;;
480 64)
481 consumerd="--consumerd64-path=$DIR/../src/bin/lttng-consumerd/lttng-consumerd"
482 ;;
483 *)
484 return
485 ;;
486 esac
487
39c98949
JR
488 # Check for env. variable. Allow the use of LD_PRELOAD etc.
489 if [[ "x${LTTNG_SESSIOND_ENV_VARS}" != "x" ]]; then
74a6c3f5 490 env_vars="${LTTNG_SESSIOND_ENV_VARS} "
39c98949 491 fi
74a6c3f5 492 env_vars="${env_vars}$DIR/../src/bin/lttng-sessiond/$SESSIOND_BIN"
39c98949 493
74a6c3f5 494 if ! validate_kernel_version; then
29655db7
CB
495 fail "Start session daemon"
496 BAIL_OUT "*** Kernel too old for session daemon tests ***"
355f483d
DG
497 fi
498
74a6c3f5 499 : "${LTTNG_SESSION_CONFIG_XSD_PATH="${DIR}/../src/common/config/"}"
d3d97763 500 export LTTNG_SESSION_CONFIG_XSD_PATH
29655db7 501
74a6c3f5 502 if [ -z "$(pgrep "${SESSIOND_MATCH}")" ]; then
8d51ddbc 503 # Have a load path ?
05aa48da 504 if [ -n "$load_path" ]; then
74a6c3f5
MD
505 # shellcheck disable=SC2086
506 env $env_vars --load "$load_path" --background "$consumerd"
8d51ddbc 507 else
74a6c3f5
MD
508 # shellcheck disable=SC2086
509 env $env_vars --background "$consumerd"
8d51ddbc 510 fi
0fc2834c 511 #$DIR/../src/bin/lttng-sessiond/$SESSIOND_BIN --background --consumerd32-path="$DIR/../src/bin/lttng-consumerd/lttng-consumerd" --consumerd64-path="$DIR/../src/bin/lttng-consumerd/lttng-consumerd" --verbose-consumer >>/tmp/sessiond.log 2>&1
29655db7 512 status=$?
74a6c3f5 513 if [ "$withtap" -eq "1" ]; then
05aa48da
MD
514 ok $status "Start session daemon"
515 fi
29655db7 516 fi
355f483d
DG
517}
518
05aa48da
MD
519function start_lttng_sessiond()
520{
521 start_lttng_sessiond_opt 1 "$@"
522}
523
524function start_lttng_sessiond_notap()
d3e8f6bb 525{
05aa48da
MD
526 start_lttng_sessiond_opt 0 "$@"
527}
528
529function stop_lttng_sessiond_opt()
530{
531 local withtap=$1
4c80129b 532 local signal=$2
05aa48da 533
74a6c3f5
MD
534 if [ -z "$signal" ]; then
535 signal=SIGTERM
536 fi
537
538 local timeout_s=$3
539 local dtimeleft_s=
540
541 # Multiply time by 2 to simplify integer arithmetic
542 if [ -n "$timeout_s" ]; then
543 dtimeleft_s=$((timeout_s * 2))
544 fi
545
546 if [ -n "$TEST_NO_SESSIOND" ] && [ "$TEST_NO_SESSIOND" == "1" ]; then
355f483d 547 # Env variable requested no session daemon
74a6c3f5 548 return 0
355f483d
DG
549 fi
550
74a6c3f5 551 local retval=0
d3e8f6bb 552
74a6c3f5
MD
553 local runas_pids=
554 runas_pids=$(pgrep "$RUNAS_MATCH")
555
556 local pids=
557 pids=$(pgrep "$SESSIOND_MATCH")
558
559 if [ -n "$runas_pids" ]; then
560 pids="$pids $runas_pids"
4c80129b 561 fi
74a6c3f5
MD
562
563 if [ -z "$pids" ]; then
564 if [ "$withtap" -eq "1" ]; then
565 pass "No session daemon to kill"
566 fi
567 return 0
8490897a 568 fi
29655db7 569
74a6c3f5
MD
570 diag "Killing (signal $signal) $SESSIOND_BIN and lt-$SESSIOND_BIN pids: $(echo "$pids" | tr '\n' ' ')"
571
572 # shellcheck disable=SC2086
573 if ! kill -s $signal $pids 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST; then
574 retval=1
575 if [ "$withtap" -eq "1" ]; then
05aa48da
MD
576 fail "Kill sessions daemon"
577 fi
d3e8f6bb 578 else
5fa32580
DG
579 out=1
580 while [ -n "$out" ]; do
74a6c3f5
MD
581 out=$(pgrep "${SESSIOND_MATCH}")
582 if [ -n "$dtimeleft_s" ]; then
583 if [ $dtimeleft_s -lt 0 ]; then
584 out=
585 retval=1
586 fi
587 dtimeleft_s=$((dtimeleft_s - 1))
588 fi
5fa32580
DG
589 sleep 0.5
590 done
f7613992
MD
591 out=1
592 while [ -n "$out" ]; do
74a6c3f5
MD
593 out=$(pgrep "$CONSUMERD_MATCH")
594 if [ -n "$dtimeleft_s" ]; then
595 if [ $dtimeleft_s -lt 0 ]; then
596 out=
597 retval=1
598 fi
599 dtimeleft_s=$((dtimeleft_s - 1))
600 fi
f7613992
MD
601 sleep 0.5
602 done
1c362dc7 603
74a6c3f5
MD
604 if [ "$withtap" -eq "1" ]; then
605 if [ "$retval" -eq "0" ]; then
606 pass "Wait after kill session daemon"
607 else
608 fail "Wait after kill session daemon"
609 fi
05aa48da 610 fi
d3e8f6bb 611 fi
74a6c3f5
MD
612 if [ "$signal" = "SIGKILL" ]; then
613 if [ "$(id -u)" -eq "0" ]; then
614 local modules=
615 modules="$(lsmod | grep ^lttng | awk '{print $1}')"
616
617 if [ -n "$modules" ]; then
618 diag "Unloading all LTTng modules"
619 modprobe -r "$modules"
620 fi
621 fi
622 fi
623
624 return $retval
d3e8f6bb
DG
625}
626
05aa48da
MD
627function stop_lttng_sessiond()
628{
629 stop_lttng_sessiond_opt 1 "$@"
630}
631
632function stop_lttng_sessiond_notap()
633{
634 stop_lttng_sessiond_opt 0 "$@"
635}
636
8490897a
MD
637function sigstop_lttng_sessiond_opt()
638{
639 local withtap=$1
640 local signal=SIGSTOP
8490897a 641
74a6c3f5 642 if [ -n "$TEST_NO_SESSIOND" ] && [ "$TEST_NO_SESSIOND" == "1" ]; then
8490897a
MD
643 # Env variable requested no session daemon
644 return
645 fi
646
74a6c3f5 647 PID_SESSIOND="$(pgrep "${SESSIOND_MATCH}") $(pgrep "$RUNAS_MATCH")"
8490897a 648
74a6c3f5
MD
649 if [ "$withtap" -eq "1" ]; then
650 diag "Sending SIGSTOP to lt-$SESSIOND_BIN and $SESSIOND_BIN pids: $(echo "$PID_SESSIOND" | tr '\n' ' ')"
8490897a 651 fi
8490897a 652
74a6c3f5
MD
653 # shellcheck disable=SC2086
654 if ! kill -s $signal $PID_SESSIOND 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST; then
655 if [ "$withtap" -eq "1" ]; then
8490897a
MD
656 fail "Sending SIGSTOP to session daemon"
657 fi
658 else
659 out=1
660 while [ $out -ne 0 ]; do
74a6c3f5 661 pid="$(pgrep "$SESSIOND_MATCH")"
8490897a
MD
662
663 # Wait until state becomes stopped for session
664 # daemon(s).
665 out=0
666 for sessiond_pid in $pid; do
74a6c3f5 667 state="$(ps -p "$sessiond_pid" -o state= )"
8490897a
MD
668 if [[ -n "$state" && "$state" != "T" ]]; then
669 out=1
670 fi
671 done
672 sleep 0.5
673 done
74a6c3f5 674 if [ "$withtap" -eq "1" ]; then
8490897a
MD
675 pass "Sending SIGSTOP to session daemon"
676 fi
677 fi
678}
679
680function sigstop_lttng_sessiond()
681{
682 sigstop_lttng_sessiond_opt 1 "$@"
683}
684
685function sigstop_lttng_sessiond_notap()
686{
687 sigstop_lttng_sessiond_opt 0 "$@"
688}
689
4c80129b
JR
690function stop_lttng_consumerd_opt()
691{
692 local withtap=$1
693 local signal=$2
4c80129b 694
74a6c3f5
MD
695 if [ -z "$signal" ]; then
696 signal=SIGTERM
697 fi
698
699 local timeout_s=$3
700 local dtimeleft_s=
4c80129b 701
74a6c3f5
MD
702 # Multiply time by 2 to simplify integer arithmetic
703 if [ -n "$timeout_s" ]; then
704 dtimeleft_s=$((timeout_s * 2))
4c80129b
JR
705 fi
706
74a6c3f5
MD
707 local retval=0
708
709 PID_CONSUMERD="$(pgrep "$CONSUMERD_MATCH")"
710
711 if [ -z "$PID_CONSUMERD" ]; then
712 if [ "$withtap" -eq "1" ]; then
713 pass "No consumer daemon to kill"
714 fi
715 return 0
4c80129b 716 fi
51dc0abb 717
74a6c3f5 718 diag "Killing (signal $signal) $CONSUMERD_BIN pids: $(echo "$PID_CONSUMERD" | tr '\n' ' ')"
4c80129b 719
74a6c3f5
MD
720 # shellcheck disable=SC2086
721 if ! kill -s $signal $PID_CONSUMERD 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST; then
722 retval=1
723 if [ "$withtap" -eq "1" ]; then
4c80129b
JR
724 fail "Kill consumer daemon"
725 fi
4c80129b
JR
726 else
727 out=1
728 while [ $out -ne 0 ]; do
74a6c3f5 729 pid="$(pgrep "$CONSUMERD_MATCH")"
4c80129b
JR
730
731 # If consumerds are still present check their status.
732 # A zombie status qualifies the consumerd as *killed*
733 out=0
734 for consumer_pid in $pid; do
74a6c3f5 735 state="$(ps -p "$consumer_pid" -o state= )"
4c80129b
JR
736 if [[ -n "$state" && "$state" != "Z" ]]; then
737 out=1
738 fi
739 done
74a6c3f5
MD
740 if [ -n "$dtimeleft_s" ]; then
741 if [ $dtimeleft_s -lt 0 ]; then
742 out=0
743 retval=1
744 fi
745 dtimeleft_s=$((dtimeleft_s - 1))
746 fi
4c80129b
JR
747 sleep 0.5
748 done
74a6c3f5
MD
749 if [ "$withtap" -eq "1" ]; then
750 if [ "$retval" -eq "0" ]; then
751 pass "Wait after kill consumer daemon"
752 else
753 fail "Wait after kill consumer daemon"
754 fi
4c80129b
JR
755 fi
756 fi
74a6c3f5 757
4c80129b
JR
758 return $retval
759}
760
761function stop_lttng_consumerd()
762{
763 stop_lttng_consumerd_opt 1 "$@"
764}
765
766function stop_lttng_consumerd_notap()
767{
768 stop_lttng_consumerd_opt 0 "$@"
769}
770
8490897a
MD
771function sigstop_lttng_consumerd_opt()
772{
773 local withtap=$1
774 local signal=SIGSTOP
8490897a 775
74a6c3f5 776 PID_CONSUMERD="$(pgrep "$CONSUMERD_MATCH")"
8490897a 777
74a6c3f5 778 diag "Sending SIGSTOP to $CONSUMERD_BIN pids: $(echo "$PID_CONSUMERD" | tr '\n' ' ')"
8490897a 779
74a6c3f5
MD
780 # shellcheck disable=SC2086
781 kill -s $signal $PID_CONSUMERD 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
8490897a 782 retval=$?
8490897a 783
74a6c3f5
MD
784 if [ $retval -eq 1 ]; then
785 if [ "$withtap" -eq "1" ]; then
8490897a
MD
786 fail "Sending SIGSTOP to consumer daemon"
787 fi
788 return 1
789 else
790 out=1
791 while [ $out -ne 0 ]; do
74a6c3f5 792 pid="$(pgrep "$CONSUMERD_MATCH")"
8490897a
MD
793
794 # Wait until state becomes stopped for all
795 # consumers.
796 out=0
797 for consumer_pid in $pid; do
74a6c3f5 798 state="$(ps -p "$consumer_pid" -o state= )"
8490897a
MD
799 if [[ -n "$state" && "$state" != "T" ]]; then
800 out=1
801 fi
802 done
803 sleep 0.5
804 done
74a6c3f5 805 if [ "$withtap" -eq "1" ]; then
8490897a
MD
806 pass "Sending SIGSTOP to consumer daemon"
807 fi
808 fi
809 return $retval
810}
811
812function sigstop_lttng_consumerd()
813{
814 sigstop_lttng_consumerd_opt 1 "$@"
815}
816
817function sigstop_lttng_consumerd_notap()
818{
819 sigstop_lttng_consumerd_opt 0 "$@"
820}
821
873c2aae
JRJ
822function list_lttng_with_opts ()
823{
7d0ad314 824 local opts=$1
2cf48300 825 $TESTDIR/../src/bin/lttng/$LTTNG_BIN list $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
873c2aae
JRJ
826 ok $? "Lttng-tool list command with option $opts"
827}
828
07b86b52
JD
829function create_lttng_session_no_output ()
830{
7d0ad314 831 local sess_name=$1
07b86b52 832
2cf48300 833 $TESTDIR/../src/bin/lttng/$LTTNG_BIN create $sess_name --no-output 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
07b86b52
JD
834 ok $? "Create session $sess_name in no-output mode"
835}
836
d3e8f6bb
DG
837function create_lttng_session ()
838{
dc890bff
JR
839 local withtap=$1
840 local expected_to_fail=$2
841 local sess_name=$3
842 local trace_path=$4
843 local opt=$5
d3e8f6bb 844
4c80129b 845 $TESTDIR/../src/bin/lttng/$LTTNG_BIN create $sess_name -o $trace_path $opt > $OUTPUT_DEST
873c2aae 846 ret=$?
dc890bff 847 if [ $expected_to_fail -eq "1" ]; then
01513c3e 848 test "$ret" -ne "0"
dc890bff
JR
849 ret=$?
850 if [ $withtap -eq "1" ]; then
851 ok $ret "Create session $sess_name in $trace_path failed as expected"
852 fi
873c2aae 853 else
dc890bff
JR
854 if [ $withtap -eq "1" ]; then
855 ok $ret "Create session $sess_name in $trace_path"
856 fi
873c2aae 857 fi
dc890bff 858 return $ret
d4018451
DG
859}
860
bf6ae429
JR
861function create_lttng_session_ok ()
862{
dc890bff 863 create_lttng_session 1 0 "$@"
bf6ae429
JR
864}
865
866function create_lttng_session_fail ()
867{
dc890bff
JR
868 create_lttng_session 1 1 "$@"
869}
870
871function create_lttng_session_notap ()
872{
873 create_lttng_session 0 0 "$@"
bf6ae429
JR
874}
875
876
827caf52 877function enable_ust_lttng_channel ()
d4018451 878{
dc890bff
JR
879 local withtap=$1
880 local expected_to_fail=$2
881 local sess_name=$3
882 local channel_name=$4
883 local opt=$5
d4018451 884
4c80129b 885 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel -u $channel_name -s $sess_name $opt 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
312dabc3 886 ret=$?
34ab15c5 887 if [[ $expected_to_fail -eq "1" ]]; then
01513c3e 888 test "$ret" -ne "0"
dc890bff
JR
889 ret=$?
890 if [ $withtap -eq "1" ]; then
891 ok $ret "Enable channel $channel_name for session $sess_name failed as expected"
892 fi
312dabc3 893 else
dc890bff
JR
894 if [ $withtap -eq "1" ]; then
895 ok $ret "Enable channel $channel_name for session $sess_name"
896 fi
312dabc3 897 fi
dc890bff 898 return $ret
d4018451
DG
899}
900
827caf52
JR
901function enable_ust_lttng_channel_ok ()
902{
dc890bff 903 enable_ust_lttng_channel 1 0 "$@"
827caf52
JR
904}
905
906function enable_ust_lttng_channel_fail ()
907{
dc890bff
JR
908 enable_ust_lttng_channel 1 1 "$@"
909}
910
911function enable_ust_lttng_channel_notap ()
912{
913 enable_ust_lttng_channel 0 0 "$@"
827caf52
JR
914}
915
29655db7 916function disable_ust_lttng_channel()
d4018451 917{
7d0ad314
JRJ
918 local sess_name=$1
919 local channel_name=$2
d4018451 920
2cf48300 921 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-channel -u $channel_name -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
29655db7 922 ok $? "Disable channel $channel_name for session $sess_name"
d3e8f6bb
DG
923}
924
07b86b52
JD
925function enable_lttng_mmap_overwrite_kernel_channel()
926{
7d0ad314
JRJ
927 local sess_name=$1
928 local channel_name=$2
07b86b52 929
2cf48300 930 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel -s $sess_name $channel_name -k --output mmap --overwrite 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
07b86b52
JD
931 ok $? "Enable channel $channel_name for session $sess_name"
932}
933
086e6add
MD
934function enable_lttng_mmap_discard_small_kernel_channel()
935{
936 local sess_name=$1
937 local channel_name=$2
938
939 $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
940 ok $? "Enable small discard channel $channel_name for session $sess_name"
941}
942
943function enable_lttng_mmap_overwrite_small_kernel_channel()
944{
945 local sess_name=$1
946 local channel_name=$2
947
948 $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
949 ok $? "Enable small discard channel $channel_name for session $sess_name"
950}
951
ebaaaf5e
JD
952function enable_lttng_mmap_overwrite_ust_channel()
953{
7d0ad314
JRJ
954 local sess_name=$1
955 local channel_name=$2
ebaaaf5e 956
2cf48300 957 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel -s $sess_name $channel_name -u --output mmap --overwrite 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
ebaaaf5e
JD
958 ok $? "Enable channel $channel_name for session $sess_name"
959}
960
d3e8f6bb
DG
961function enable_ust_lttng_event ()
962{
dc890bff
JR
963 local withtap=$1
964 local expected_to_fail=$2
965 local sess_name=$3
966 local event_name="$4"
967 local channel_name=$5
ebaaaf5e
JD
968
969 if [ -z $channel_name ]; then
970 # default channel if none specified
971 chan=""
972 else
973 chan="-c $channel_name"
974 fi
d3e8f6bb 975
2cf48300 976 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" $chan -s $sess_name -u 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
01513c3e 977 ret=$?
c4926bb5 978 if [[ $expected_to_fail -eq "1" ]]; then
01513c3e 979 test $ret -ne "0"
dc890bff
JR
980 ret=$?
981 if [[ $withtap -eq "1" ]]; then
982 ok $ret "Enable ust event $event_name for session $session_name failed as expected"
983 fi
01513c3e 984 else
dc890bff
JR
985 if [[ $withtap -eq "1" ]]; then
986 ok $ret "Enable ust event $event_name for session $sess_name"
987 fi
01513c3e 988 fi
dc890bff 989 return $ret
26b53d3b
DG
990}
991
c4926bb5
JR
992function enable_ust_lttng_event_ok ()
993{
dc890bff 994 enable_ust_lttng_event 1 0 "$@"
c4926bb5
JR
995}
996
997function enable_ust_lttng_event_fail ()
998{
dc890bff
JR
999 enable_ust_lttng_event 1 1 "$@"
1000}
1001
1002function enable_ust_lttng_event_notap ()
1003{
1004 enable_ust_lttng_event 0 0 "$@"
c4926bb5
JR
1005}
1006
37175ce4
DG
1007function enable_jul_lttng_event()
1008{
1009 sess_name=$1
1010 event_name="$2"
1011 channel_name=$3
1012
1013 if [ -z $channel_name ]; then
1014 # default channel if none specified
1015 chan=""
1016 else
1017 chan="-c $channel_name"
1018 fi
1019
2cf48300 1020 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" $chan -s $sess_name -j 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
37175ce4
DG
1021 ok $? "Enable JUL event $event_name for session $sess_name"
1022}
1023
b2064f54
DG
1024function enable_jul_lttng_event_loglevel()
1025{
7d0ad314
JRJ
1026 local sess_name=$1
1027 local event_name="$2"
1028 local loglevel=$3
1029 local channel_name=$4
b2064f54
DG
1030
1031 if [ -z $channel_name ]; then
1032 # default channel if none specified
1033 chan=""
1034 else
1035 chan="-c $channel_name"
1036 fi
1037
2cf48300 1038 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event --loglevel $loglevel "$event_name" $chan -s $sess_name -j 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
b2064f54
DG
1039 ok $? "Enable JUL event $event_name for session $sess_name with loglevel $loglevel"
1040}
1041
504d4ace
DG
1042function enable_log4j_lttng_event()
1043{
1044 sess_name=$1
1045 event_name="$2"
1046 channel_name=$3
1047
1048 if [ -z $channel_name ]; then
1049 # default channel if none specified
1050 chan=""
1051 else
1052 chan="-c $channel_name"
1053 fi
1054
2cf48300 1055 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" $chan -s $sess_name -l 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
504d4ace
DG
1056 ok $? "Enable LOG4J event $event_name for session $sess_name"
1057}
1058
1059function enable_log4j_lttng_event_loglevel()
1060{
1061 local sess_name=$1
1062 local event_name="$2"
1063 local loglevel=$3
1064 local channel_name=$4
1065
1066 if [ -z $channel_name ]; then
1067 # default channel if none specified
1068 chan=""
1069 else
1070 chan="-c $channel_name"
1071 fi
1072
2cf48300 1073 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event --loglevel $loglevel "$event_name" $chan -s $sess_name -l 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
504d4ace
DG
1074 ok $? "Enable LOG4J event $event_name for session $sess_name with loglevel $loglevel"
1075}
1076
0e115563
DG
1077function enable_python_lttng_event()
1078{
1079 sess_name=$1
1080 event_name="$2"
1081 channel_name=$3
1082
1083 if [ -z $channel_name ]; then
1084 # default channel if none specified
1085 chan=""
1086 else
1087 chan="-c $channel_name"
1088 fi
1089
2cf48300 1090 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" $chan -s $sess_name -p 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
0e115563
DG
1091 ok $? "Enable Python event $event_name for session $sess_name"
1092}
1093
1094function enable_python_lttng_event_loglevel()
1095{
1096 local sess_name=$1
1097 local event_name="$2"
1098 local loglevel=$3
1099 local channel_name=$4
1100
1101 if [ -z $channel_name ]; then
1102 # default channel if none specified
1103 chan=""
1104 else
1105 chan="-c $channel_name"
1106 fi
1107
2cf48300 1108 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event --loglevel $loglevel "$event_name" $chan -s $sess_name -p 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
0e115563
DG
1109 ok $? "Enable Python event $event_name for session $sess_name with loglevel $loglevel"
1110}
1111
26b53d3b
DG
1112function enable_ust_lttng_event_filter()
1113{
7d0ad314
JRJ
1114 local sess_name="$1"
1115 local event_name="$2"
1116 local filter="$3"
26b53d3b 1117
2cf48300 1118 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" -s $sess_name -u --filter "$filter" 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
29655db7 1119 ok $? "Enable event $event_name with filtering for session $sess_name"
26b53d3b
DG
1120}
1121
1122function enable_ust_lttng_event_loglevel()
1123{
7d0ad314
JRJ
1124 local sess_name="$1"
1125 local event_name="$2"
1126 local loglevel="$3"
26b53d3b 1127
2cf48300 1128 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" -s $sess_name -u --loglevel $loglevel 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
29655db7 1129 ok $? "Enable event $event_name with loglevel $loglevel"
26b53d3b
DG
1130}
1131
1132function enable_ust_lttng_event_loglevel_only()
1133{
7d0ad314
JRJ
1134 local sess_name="$1"
1135 local event_name="$2"
1136 local loglevel="$3"
26b53d3b 1137
2cf48300 1138 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" -s $sess_name -u --loglevel-only $loglevel 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
29655db7 1139 ok $? "Enable event $event_name with loglevel-only $loglevel"
26b53d3b
DG
1140}
1141
1142function disable_ust_lttng_event ()
1143{
7d0ad314
JRJ
1144 local sess_name="$1"
1145 local event_name="$2"
01513c3e 1146 local channel_name="$3"
26b53d3b 1147
01513c3e
JRJ
1148 if [ -z $channel_name ]; then
1149 # default channel if none specified
1150 chan=""
1151 else
1152 chan="-c $channel_name"
1153 fi
1154
2cf48300 1155 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-event "$event_name" -s $sess_name $chan -u 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
29655db7 1156 ok $? "Disable event $event_name for session $sess_name"
d3e8f6bb
DG
1157}
1158
1d842d5a
DG
1159function disable_jul_lttng_event ()
1160{
1161 local sess_name="$1"
1162 local event_name="$2"
1163
1164 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-event "$event_name" -s $sess_name -j >/dev/null 2>&1
1165 ok $? "Disable JUL event $event_name for session $sess_name"
1166}
1167
504d4ace
DG
1168function disable_log4j_lttng_event ()
1169{
1170 local sess_name="$1"
1171 local event_name="$2"
1172
1173 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-event "$event_name" -s $sess_name -l >/dev/null 2>&1
1174 ok $? "Disable LOG4J event $event_name for session $sess_name"
1175}
1176
0e115563
DG
1177function disable_python_lttng_event ()
1178{
1179 local sess_name="$1"
1180 local event_name="$2"
1181
2cf48300 1182 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-event "$event_name" -s $sess_name -p 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
0e115563
DG
1183 ok $? "Disable Python event $event_name for session $sess_name"
1184}
1185
fb3268e3 1186function start_lttng_tracing ()
d3e8f6bb 1187{
e563bbdb
JR
1188 local expected_to_fail=$1
1189 local sess_name=$2
d3e8f6bb 1190
2cf48300 1191 $TESTDIR/../src/bin/lttng/$LTTNG_BIN start $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
01513c3e 1192 ret=$?
e563bbdb 1193 if [[ $expected_to_fail -eq "1" ]]; then
01513c3e 1194 test "$ret" -ne "0"
34ab15c5 1195 ok $? "Start tracing for session $sess_name failed as expected"
01513c3e
JRJ
1196 else
1197 ok $ret "Start tracing for session $sess_name"
1198 fi
d3e8f6bb
DG
1199}
1200
e563bbdb
JR
1201function start_lttng_tracing_ok ()
1202{
1203 start_lttng_tracing 0 "$@"
1204}
1205
1206function start_lttng_tracing_fail ()
1207{
1208 start_lttng_tracing 1 "$@"
1209}
1210
fb3268e3 1211function stop_lttng_tracing ()
d3e8f6bb 1212{
96340a01
JR
1213 local expected_to_fail=$1
1214 local sess_name=$2
d3e8f6bb 1215
2cf48300 1216 $TESTDIR/../src/bin/lttng/$LTTNG_BIN stop $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
01513c3e 1217 ret=$?
96340a01 1218 if [[ $expected_to_fail -eq "1" ]]; then
01513c3e 1219 test "$ret" -ne "0"
34ab15c5 1220 ok $? "Stop lttng tracing for session $sess_name failed as expected"
01513c3e
JRJ
1221 else
1222 ok $ret "Stop lttng tracing for session $sess_name"
1223 fi
d3e8f6bb
DG
1224}
1225
96340a01
JR
1226function stop_lttng_tracing_ok ()
1227{
1228 stop_lttng_tracing 0 "$@"
1229}
1230
1231function stop_lttng_tracing_fail ()
1232{
1233 stop_lttng_tracing 1 "$@"
1234}
1235
d3e8f6bb
DG
1236function destroy_lttng_session ()
1237{
60c78fd5
JR
1238 local withtap=$1
1239 local expected_to_fail=$2
1240 local sess_name=$3
d3e8f6bb 1241
2cf48300 1242 $TESTDIR/../src/bin/lttng/$LTTNG_BIN destroy $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
01513c3e 1243 ret=$?
96340a01 1244 if [[ $expected_to_fail -eq "1" ]]; then
01513c3e 1245 test "$ret" -ne "0"
60c78fd5
JR
1246 ret=$?
1247 if [ $withtap -eq "1" ]; then
1248 ok $ret "Destroy session $sess_name failed as expected"
1249 fi
01513c3e 1250 else
60c78fd5
JR
1251 if [ $withtap -eq "1" ]; then
1252 ok $ret "Destroy session $sess_name"
1253 fi
01513c3e 1254 fi
d3e8f6bb
DG
1255}
1256
67b4c664
JR
1257function destroy_lttng_session_ok ()
1258{
60c78fd5 1259 destroy_lttng_session 1 0 "$@"
67b4c664
JR
1260
1261}
1262
1263function destroy_lttng_session_fail ()
1264{
60c78fd5 1265 destroy_lttng_session 1 1 "$@"
67b4c664
JR
1266}
1267
60c78fd5
JR
1268function destroy_lttng_session_notap ()
1269{
1270 destroy_lttng_session 0 0 "$@"
1271}
67b4c664 1272
873c2aae
JRJ
1273function destroy_lttng_sessions ()
1274{
2cf48300 1275 $TESTDIR/../src/bin/lttng/$LTTNG_BIN destroy --all 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
873c2aae
JRJ
1276 ok $? "Destroy all lttng sessions"
1277}
1278
07b86b52
JD
1279function lttng_snapshot_add_output ()
1280{
b5633831
JR
1281 local expected_to_fail=$1
1282 local sess_name=$2
1283 local trace_path=$3
07b86b52 1284
2cf48300 1285 $TESTDIR/../src/bin/lttng/$LTTNG_BIN snapshot add-output -s $sess_name file://$trace_path 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
01513c3e 1286 ret=$?
b5633831 1287 if [[ $expected_to_fail -eq 1 ]]; then
01513c3e 1288 test "$ret" -ne "0"
34ab15c5 1289 ok $? "Added snapshot output file://$trace_path failed as expected"
01513c3e
JRJ
1290 else
1291 ok $ret "Added snapshot output file://$trace_path"
1292 fi
07b86b52
JD
1293}
1294
b5633831
JR
1295function lttng_snapshot_add_output_ok ()
1296{
1297 lttng_snapshot_add_output 0 "$@"
1298}
1299
1300function lttng_snapshot_add_output_fail ()
1301{
1302 lttng_snapshot_add_output 1 "$@"
1303}
1304
26402e0c
DG
1305function lttng_snapshot_del_output ()
1306{
31580dc7
JR
1307 local expected_to_fail=$1
1308 local sess_name=$2
1309 local id=$3
26402e0c 1310
2cf48300 1311 $TESTDIR/../src/bin/lttng/$LTTNG_BIN snapshot del-output -s $sess_name $id 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
01513c3e 1312 ret=$?
31580dc7 1313 if [[ $expected_to_fail -eq "1" ]]; then
01513c3e 1314 test "$ret" -ne "0"
34ab15c5 1315 ok $? "Deleted snapshot output id $id failed as expected"
01513c3e
JRJ
1316 else
1317 ok $ret "Deleted snapshot output id $id"
1318 fi
26402e0c
DG
1319}
1320
31580dc7
JR
1321function lttng_snapshot_del_output_ok ()
1322{
1323 lttng_snapshot_del_output 0 "$@"
1324}
1325
1326function lttng_snapshot_del_output_fail ()
1327{
1328 lttng_snapshot_del_output 1 "$@"
1329}
1330
07b86b52
JD
1331function lttng_snapshot_record ()
1332{
7d0ad314
JRJ
1333 local sess_name=$1
1334 local trace_path=$2
07b86b52 1335
2cf48300 1336 $TESTDIR/../src/bin/lttng/$LTTNG_BIN snapshot record -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
07b86b52
JD
1337 ok $? "Snapshot recorded"
1338}
1339
01513c3e
JRJ
1340function lttng_snapshot_list ()
1341{
1342 local sess_name=$1
2cf48300 1343 $TESTDIR/../src/bin/lttng/$LTTNG_BIN snapshot list-output -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
01513c3e
JRJ
1344 ok $? "Snapshot list"
1345}
1346
e02b109b
DG
1347function lttng_save()
1348{
1349 local sess_name=$1
1350 local opts=$2
1351
2cf48300 1352 $TESTDIR/../src/bin/lttng/$LTTNG_BIN save $sess_name $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
34ab15c5 1353 ok $? "Session saved"
e02b109b
DG
1354}
1355
1356function lttng_load()
1357{
192ac418
JR
1358 local expected_to_fail=$1
1359 local opts=$2
e02b109b 1360
2cf48300 1361 $TESTDIR/../src/bin/lttng/$LTTNG_BIN load $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
192ac418
JR
1362 ret=$?
1363 if [[ $expected_to_fail -eq "1" ]]; then
1364 test $ret -ne "0"
1365 ok $? "Load command failed as expected with opts: $opts"
1366 else
1367 ok $ret "Load command with opts: $opts"
1368 fi
1369}
1370
1371function lttng_load_ok()
1372{
1373 lttng_load 0 "$@"
1374}
1375
1376function lttng_load_fail()
1377{
1378 lttng_load 1 "$@"
e02b109b
DG
1379}
1380
e83a8bdb
JR
1381function lttng_track()
1382{
1383 local expected_to_fail=$1
1384 local opts=$2
1385 $TESTDIR/../src/bin/lttng/$LTTNG_BIN track $opts >$OUTPUT_DEST
1386 ret=$?
1387 if [[ $expected_to_fail -eq "1" ]]; then
1388 test $ret -ne "0"
1389 ok $? "Track command failed as expected with opts: $opts"
1390 else
34ab15c5 1391 ok $ret "Track command with opts: $opts"
e83a8bdb
JR
1392 fi
1393}
1394
1395function lttng_track_ok()
1396{
1397 lttng_track 0 "$@"
1398}
1399
1400function lttng_track_fail()
1401{
1402 lttng_track 1 "$@"
1403}
1404
1405function lttng_untrack()
1406{
1407 local expected_to_fail=$1
1408 local opts=$2
1409 $TESTDIR/../src/bin/lttng/$LTTNG_BIN untrack $opts >$OUTPUT_DEST
1410 ret=$?
1411 if [[ $expected_to_fail -eq "1" ]]; then
1412 test $ret -ne "0"
1413 ok $? "Untrack command failed as expected with opts: $opts"
1414 else
34ab15c5 1415 ok $ret "Untrack command with opts: $opts"
e83a8bdb
JR
1416 fi
1417}
1418
1419function lttng_untrack_ok()
1420{
1421 lttng_untrack 0 "$@"
1422}
1423
1424function lttng_untrack_fail()
1425{
1426 lttng_untrack 1 "$@"
1427}
1428
8dcef147
JR
1429function add_context_lttng()
1430{
1431 local expected_to_fail="$1"
1432 local domain="$2"
1433 local session_name="$3"
1434 local channel_name="$4"
1435 local type="$5"
1436
1437 $TESTDIR/../src/bin/lttng/$LTTNG_BIN add-context -s $session_name -c $channel_name -t $type $domain 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1438 ret=$?
1439 if [[ $expected_to_fail -eq "1" ]]; then
1440 test $ret -ne "0"
1441 ok $? "Add context command failed as expected for type: $type"
1442 else
1443 ok $ret "Add context command for type: $type"
1444 fi
1445}
1446
1447function add_context_ust_ok()
1448{
1449 add_context_lttng 0 -u "$@"
1450}
1451
1452function add_context_ust_fail()
1453{
1454 add_context_lttng 1 -u "$@"
1455}
1456
1457function add_context_kernel_ok()
1458{
1459 add_context_lttng 0 -k "$@"
1460}
1461
1462function add_context_kernel_fail()
1463{
1464 add_context_lttng 1 -k "$@"
1465}
1466
d3e8f6bb
DG
1467function trace_matches ()
1468{
7d0ad314
JRJ
1469 local event_name=$1
1470 local nr_iter=$2
1471 local trace_path=$3
d3e8f6bb 1472
317eef93 1473 which $BABELTRACE_BIN >/dev/null
29655db7 1474 skip $? -ne 0 "Babeltrace binary not found. Skipping trace matches"
d3e8f6bb 1475
7d0ad314 1476 local count=$($BABELTRACE_BIN $trace_path | grep $event_name | wc -l)
29655db7 1477
d3e8f6bb 1478 if [ "$count" -ne "$nr_iter" ]; then
29655db7 1479 fail "Trace match"
af91abc9 1480 diag "$count matching events found in trace"
d3e8f6bb 1481 else
29655db7 1482 pass "Trace match"
d3e8f6bb
DG
1483 fi
1484}
f4e40ab6 1485
d53addeb
DG
1486function trace_match_only()
1487{
1488 local event_name=$1
1489 local nr_iter=$2
1490 local trace_path=$3
1491
1492 which $BABELTRACE_BIN >/dev/null
1493 skip $? -ne 0 "Babeltrace binary not found. Skipping trace matches"
1494
1495 local count=$($BABELTRACE_BIN $trace_path | grep $event_name | wc -l)
1496 local total=$($BABELTRACE_BIN $trace_path | wc -l)
1497
1498 if [ "$nr_iter" -eq "$count" ] && [ "$total" -eq "$nr_iter" ]; then
1499 pass "Trace match with $total event $event_name"
1500 else
1501 fail "Trace match"
1502 diag "$total event(s) found, expecting $nr_iter of event $event_name and only found $count"
1503 fi
1504}
1505
f4e40ab6
DG
1506function validate_trace
1507{
7d0ad314
JRJ
1508 local event_name=$1
1509 local trace_path=$2
f4e40ab6
DG
1510
1511 which $BABELTRACE_BIN >/dev/null
29655db7
CB
1512 if [ $? -ne 0 ]; then
1513 skip 0 "Babeltrace binary not found. Skipping trace validation"
f4e40ab6
DG
1514 fi
1515
07b86b52
JD
1516 OLDIFS=$IFS
1517 IFS=","
1518 for i in $event_name; do
1519 traced=$($BABELTRACE_BIN $trace_path 2>/dev/null | grep $i | wc -l)
1520 if [ "$traced" -ne 0 ]; then
ebaaaf5e 1521 pass "Validate trace for event $i, $traced events"
07b86b52
JD
1522 else
1523 fail "Validate trace for event $i"
1524 diag "Found $traced occurences of $i"
1525 fi
1526 done
1527 ret=$?
1528 IFS=$OLDIFS
1529 return $ret
f4e40ab6 1530}
8cfcd41c 1531
54cd6107
JD
1532function validate_trace_count
1533{
1534 local event_name=$1
1535 local trace_path=$2
1536 local expected_count=$3
1537
1538 which $BABELTRACE_BIN >/dev/null
1539 if [ $? -ne 0 ]; then
1540 skip 0 "Babeltrace binary not found. Skipping trace validation"
1541 fi
1542
1543 cnt=0
1544 OLDIFS=$IFS
1545 IFS=","
1546 for i in $event_name; do
1547 traced=$($BABELTRACE_BIN $trace_path 2>/dev/null | grep $i | wc -l)
1548 if [ "$traced" -ne 0 ]; then
1549 pass "Validate trace for event $i, $traced events"
1550 else
1551 fail "Validate trace for event $i"
1552 diag "Found $traced occurences of $i"
1553 fi
1554 cnt=$(($cnt + $traced))
1555 done
1556 IFS=$OLDIFS
1557 test $cnt -eq $expected_count
1558 ok $? "Read a total of $cnt events, expected $expected_count"
1559}
1560
086e6add
MD
1561function trace_first_line
1562{
1563 local trace_path=$1
1564
1565 which $BABELTRACE_BIN >/dev/null
1566 if [ $? -ne 0 ]; then
1567 skip 0 "Babeltrace binary not found. Skipping trace validation"
1568 fi
1569
1570 $BABELTRACE_BIN $trace_path 2>/dev/null | head -n 1
1571}
1572
8cfcd41c
MD
1573function validate_trace_exp()
1574{
1575 local event_exp=$1
1576 local trace_path=$2
1577
1578 which $BABELTRACE_BIN >/dev/null
1579 skip $? -ne 0 "Babeltrace binary not found. Skipping trace validation"
1580
1581 traced=$($BABELTRACE_BIN $trace_path 2>/dev/null | grep ${event_exp} | wc -l)
1582 if [ "$traced" -ne 0 ]; then
1583 pass "Validate trace for expression '${event_exp}', $traced events"
1584 else
1585 fail "Validate trace for expression '${event_exp}'"
1586 diag "Found $traced occurences of '${event_exp}'"
1587 fi
1588 ret=$?
1589 return $ret
1590}
1591
1592function validate_trace_only_exp()
1593{
1594 local event_exp=$1
1595 local trace_path=$2
1596
1597 which $BABELTRACE_BIN >/dev/null
1598 skip $? -ne 0 "Babeltrace binary not found. Skipping trace matches"
1599
1600 local count=$($BABELTRACE_BIN $trace_path | grep ${event_exp} | wc -l)
1601 local total=$($BABELTRACE_BIN $trace_path | wc -l)
1602
1603 if [ "$count" -ne 0 ] && [ "$total" -eq "$count" ]; then
1604 pass "Trace match with $total for expression '${event_exp}"
1605 else
1606 fail "Trace match"
1607 diag "$total syscall event(s) found, only syscalls matching expression '${event_exp}' ($count occurrences) are expected"
1608 fi
1609 ret=$?
1610 return $ret
1611}
1612
1613function validate_trace_empty()
1614{
1615 local trace_path=$1
1616
1617 which $BABELTRACE_BIN >/dev/null
1618 if [ $? -ne 0 ]; then
1619 skip 0 "Babeltrace binary not found. Skipping trace validation"
1620 fi
1621
b98a9439
JD
1622 events=$($BABELTRACE_BIN $trace_path 2>/dev/null)
1623 ret=$?
1624 if [ $ret -ne 0 ]; then
1625 fail "Failed to parse trace"
1626 return $ret
1627 fi
1628
1629 traced=$(echo -n "$events" | wc -l)
8cfcd41c
MD
1630 if [ "$traced" -eq 0 ]; then
1631 pass "Validate empty trace"
1632 else
1633 fail "Validate empty trace"
1634 diag "Found $traced events in trace"
1635 fi
1636 ret=$?
1637 return $ret
1638}
801236b0 1639
eded6438 1640function regenerate_metadata ()
801236b0
JD
1641{
1642 local expected_to_fail=$1
1643 local sess_name=$2
1644
eded6438 1645 $TESTDIR/../src/bin/lttng/$LTTNG_BIN regenerate metadata -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
801236b0
JD
1646 ret=$?
1647 if [[ $expected_to_fail -eq "1" ]]; then
1648 test "$ret" -ne "0"
eded6438 1649 ok $? "Expected fail on regenerate metadata $sess_name"
801236b0
JD
1650 else
1651 ok $ret "Metadata regenerate $sess_name"
1652 fi
1653}
1654
eded6438 1655function regenerate_metadata_ok ()
801236b0 1656{
eded6438 1657 regenerate_metadata 0 "$@"
801236b0
JD
1658}
1659
eded6438 1660function regenerate_metadata_fail ()
801236b0 1661{
eded6438 1662 regenerate_metadata 1 "$@"
801236b0 1663}
512eb148 1664
54cd6107
JD
1665function regenerate_statedump ()
1666{
1667 local expected_to_fail=$1
1668 local sess_name=$2
1669
1670 $TESTDIR/../src/bin/lttng/$LTTNG_BIN regenerate statedump -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1671 ret=$?
1672 if [[ $expected_to_fail -eq "1" ]]; then
1673 test "$ret" -ne "0"
1674 ok $? "Expected fail on regenerate statedump $sess_name"
1675 else
1676 ok $ret "Metadata regenerate $sess_name"
1677 fi
1678}
1679
1680function regenerate_statedump_ok ()
1681{
1682 regenerate_statedump 0 "$@"
1683}
1684
1685function regenerate_statedump_fail ()
1686{
1687 regenerate_statedump 1 "$@"
1688}
1689
512eb148
JD
1690function destructive_tests_enabled ()
1691{
1692 if [ ${LTTNG_ENABLE_DESTRUCTIVE_TESTS} = "will-break-my-system" ]; then
1693 return 0
1694 else
1695 return 1
1696 fi
1697}
This page took 0.120959 seconds and 4 git commands to generate.