Test fix: set app and network socket timeouts to unlimited
[lttng-tools.git] / tests / utils / utils.sh
1 #!/src/bin/bash
2 #
3 # Copyright (C) - 2012 David Goulet <dgoulet@efficios.com>
4 #
5 # This library is free software; you can redistribute it and/or modify it under
6 # the terms of the GNU Lesser General Public License as published by the Free
7 # Software Foundation; version 2.1 of the License.
8 #
9 # This library is distributed in the hope that it will be useful, but WITHOUT
10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12 # details.
13 #
14 # You should have received a copy of the GNU Lesser General Public License
15 # along with this library; if not, write to the Free Software Foundation, Inc.,
16 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
18 SESSIOND_BIN="lttng-sessiond"
19 RUNAS_BIN="lttng-runas"
20 CONSUMERD_BIN="lttng-consumerd"
21 RELAYD_BIN="lttng-relayd"
22 LTTNG_BIN="lttng"
23 BABELTRACE_BIN="babeltrace"
24 OUTPUT_DEST=/dev/null
25 ERROR_OUTPUT_DEST=/dev/null
26
27 # Minimal kernel version supported for session daemon tests
28 KERNEL_MAJOR_VERSION=2
29 KERNEL_MINOR_VERSION=6
30 KERNEL_PATCHLEVEL_VERSION=27
31
32 # We set the default UST register timeout and network and app socket timeout to
33 # "wait forever", so that basic tests don't have to worry about hitting
34 # timeouts on busy systems. Specialized tests should test those corner-cases.
35 export LTTNG_UST_REGISTER_TIMEOUT=-1
36 export LTTNG_NETWORK_SOCKET_TIMEOUT=-1
37 export LTTNG_APP_SOCKET_TIMEOUT=-1
38
39 # We set the default lttng-sessiond path to /bin/true to prevent the spawning
40 # of a daemonized sessiond. This is necessary since 'lttng create' will spawn
41 # its own sessiond if none is running. It also ensures that 'lttng create'
42 # fails when no sessiond is running.
43 export LTTNG_SESSIOND_PATH="/bin/true"
44
45 source $TESTDIR/utils/tap/tap.sh
46
47 function print_ok ()
48 {
49 # Check if we are a terminal
50 if [ -t 1 ]; then
51 echo -e "\e[1;32mOK\e[0m"
52 else
53 echo -e "OK"
54 fi
55 }
56
57 function print_fail ()
58 {
59 # Check if we are a terminal
60 if [ -t 1 ]; then
61 echo -e "\e[1;31mFAIL\e[0m"
62 else
63 echo -e "FAIL"
64 fi
65 }
66
67 function print_test_banner ()
68 {
69 local desc="$1"
70 diag "$desc"
71 }
72
73 function validate_kernel_version ()
74 {
75 local kern_version=($(uname -r | awk -F. '{ printf("%d.%d.%d\n",$1,$2,$3); }' | tr '.' '\n'))
76 if [ ${kern_version[0]} -gt $KERNEL_MAJOR_VERSION ]; then
77 return 0
78 fi
79 if [ ${kern_version[1]} -gt $KERNEL_MINOR_VERSION ]; then
80 return 0
81 fi
82 if [ ${kern_version[2]} -ge $KERNEL_PATCHLEVEL_VERSION ]; then
83 return 0
84 fi
85 return 1
86 }
87
88 # Generate a random string
89 # $1 = number of characters; defaults to 16
90 # $2 = include special characters; 1 = yes, 0 = no; defaults to yes
91 function randstring()
92 {
93 [ "$2" == "0" ] && CHAR="[:alnum:]" || CHAR="[:graph:]"
94 cat /dev/urandom 2>/dev/null | tr -cd "$CHAR" 2>/dev/null | head -c ${1:-16} 2>/dev/null
95 echo
96 }
97
98 # Return the number of _configured_ CPUs.
99 function conf_proc_count()
100 {
101 getconf _NPROCESSORS_CONF
102 if [ $? -ne 0 ]; then
103 diag "Failed to get the number of configured CPUs"
104 fi
105 echo
106 }
107
108 function enable_kernel_lttng_event
109 {
110 local expected_to_fail="$1"
111 local sess_name="$2"
112 local event_name="$3"
113 local channel_name="$4"
114
115 if [ -z "$event_name" ]; then
116 # Enable all event if no event name specified
117 event_name="-a"
118 fi
119
120 if [ -z "$channel_name" ]; then
121 # default channel if none specified
122 chan=""
123 else
124 chan="-c $channel_name"
125 fi
126
127 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" $chan -s $sess_name -k 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
128 ret=$?
129 if [[ $expected_to_fail -eq "1" ]]; then
130 test $ret -ne "0"
131 ok $? "Enable kernel event $event_name for session $session_name on channel $channel_name failed as expected"
132 else
133 ok $ret "Enable kernel event $event_name for session $sess_name"
134 fi
135 }
136
137 function enable_kernel_lttng_event_ok ()
138 {
139 enable_kernel_lttng_event 0 "$@"
140 }
141
142 function enable_kernel_lttng_event_fail ()
143 {
144 enable_kernel_lttng_event 1 "$@"
145 }
146
147 # Old interface
148 function lttng_enable_kernel_event
149 {
150 enable_kernel_lttng_event_ok "$@"
151 }
152
153 function lttng_enable_kernel_syscall()
154 {
155 local expected_to_fail=$1
156 local sess_name=$2
157 local syscall_name=$3
158 local channel_name=$4
159
160 if [ -z $syscall_name ]; then
161 # Enable all event if no syscall name specified
162 syscall_name="-a"
163 fi
164
165 if [ -z $channel_name ]; then
166 # default channel if none specified
167 chan=""
168 else
169 chan="-c $channel_name"
170 fi
171
172 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event --syscall "$syscall_name" $chan -s $sess_name -k 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
173 ret=$?
174 if [[ $expected_to_fail -eq "1" ]]; then
175 test $ret -ne "0"
176 ok $? "Enable kernel syscall $syscall_name for session $sess_name on channel $channel_name fail as expected"
177 else
178 ok $ret "Enable kernel syscall $syscall_name for session $sess_name on channel $channel_name"
179 fi
180 }
181
182 function lttng_enable_kernel_syscall_ok()
183 {
184 lttng_enable_kernel_syscall 0 "$@"
185 }
186
187 function lttng_enable_kernel_syscall_fail()
188 {
189 lttng_enable_kernel_syscall 1 "$@"
190 }
191
192 function lttng_disable_kernel_syscall()
193 {
194 local expected_to_fail=$1
195 local sess_name=$2
196 local syscall_name=$3
197 local channel_name=$4
198
199 if [ -z $syscall_name ]; then
200 # Enable all event if no syscall name specified
201 syscall_name="-a"
202 fi
203
204 if [ -z $channel_name ]; then
205 # default channel if none specified
206 chan=""
207 else
208 chan="-c $channel_name"
209 fi
210
211 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-event --syscall "$syscall_name" $chan -s $sess_name -k 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
212
213 ret=$?
214 if [[ $expected_to_fail -eq "1" ]]; then
215 test $ret -ne "0"
216 ok $? "Disable kernel syscall $syscall_name for session $sess_name on channel $channel_name failed as expected"
217 else
218 ok $ret "Disable kernel syscall $syscall_name for session $sess_name on channel $channel_name"
219 fi
220 }
221
222 function lttng_disable_kernel_syscall_ok()
223 {
224 lttng_disable_kernel_syscall 0 "$@"
225 }
226
227 function lttng_disable_kernel_syscall_fail()
228 {
229 lttng_disable_kernel_syscall 1 "$@"
230 }
231
232 function lttng_enable_kernel_channel()
233 {
234 local expected_to_fail=$1
235 local sess_name=$2
236 local channel_name=$3
237
238 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel -k $channel_name -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
239 ret=$?
240 if [[ $expected_to_fail -eq "1" ]]; then
241 test "$ret" -ne "0"
242 ok $? "Enable channel $channel_name for session $sess_name failed as expected"
243 else
244 ok $ret "Enable channel $channel_name for session $sess_name"
245 fi
246 }
247
248 function lttng_enable_kernel_channel_ok()
249 {
250 lttng_enable_kernel_channel 0 "$@"
251 }
252
253 function lttng_enable_kernel_channel_fail()
254 {
255 lttng_enable_kernel_channel 1 "$@"
256 }
257
258 function lttng_disable_kernel_channel()
259 {
260 local expected_to_fail=$1
261 local sess_name=$2
262 local channel_name=$3
263
264 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-channel -k $channel_name -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
265 ret=$?
266 if [[ $expected_to_fail -eq "1" ]]; then
267 test "$ret" -ne "0"
268 ok $? "Disable channel $channel_name for session $sess_name failed as expected"
269 else
270 ok $ret "Disable channel $channel_name for session $sess_name"
271 fi
272 }
273
274 function lttng_disable_kernel_channel_ok()
275 {
276 lttng_disable_kernel_channel 0 "$@"
277 }
278
279 function lttng_disable_kernel_channel_fail()
280 {
281 lttng_disable_kernel_channel 1 "$@"
282 }
283
284 function start_lttng_relayd_opt()
285 {
286 local withtap=$1
287 local opt=$2
288
289 DIR=$(readlink -f $TESTDIR)
290
291 if [ -z $(pgrep --full lt-$RELAYD_BIN) ]; then
292 $DIR/../src/bin/lttng-relayd/$RELAYD_BIN -b $opt 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
293 #$DIR/../src/bin/lttng-relayd/$RELAYD_BIN $opt -vvv >>/tmp/relayd.log 2>&1 &
294 if [ $? -eq 1 ]; then
295 if [ $withtap -eq "1" ]; then
296 fail "Start lttng-relayd (opt: $opt)"
297 fi
298 return 1
299 else
300 if [ $withtap -eq "1" ]; then
301 pass "Start lttng-relayd (opt: $opt)"
302 fi
303 fi
304 else
305 pass "Start lttng-relayd (opt: $opt)"
306 fi
307 }
308
309 function start_lttng_relayd()
310 {
311 start_lttng_relayd_opt 1 "$@"
312 }
313
314 function start_lttng_relayd_notap()
315 {
316 start_lttng_relayd_opt 0 "$@"
317 }
318
319 function stop_lttng_relayd_opt()
320 {
321 local withtap=$1
322
323 PID_RELAYD=`pgrep --full lt-$RELAYD_BIN`
324
325 if [ $withtap -eq "1" ]; then
326 diag "Killing lttng-relayd (pid: $PID_RELAYD)"
327 fi
328 kill $PID_RELAYD 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
329 retval=$?
330
331 if [ $? -eq 1 ]; then
332 if [ $withtap -eq "1" ]; then
333 fail "Kill relay daemon"
334 fi
335 return 1
336 else
337 out=1
338 while [ -n "$out" ]; do
339 out=$(pgrep --full lt-$RELAYD_BIN)
340 sleep 0.5
341 done
342 if [ $withtap -eq "1" ]; then
343 pass "Kill relay daemon"
344 fi
345 fi
346 return $retval
347 }
348
349 function stop_lttng_relayd()
350 {
351 stop_lttng_relayd_opt 1 "$@"
352 }
353
354 function stop_lttng_relayd_notap()
355 {
356 stop_lttng_relayd_opt 0 "$@"
357 }
358
359 #First arg: show tap output
360 #Second argument: load path for automatic loading
361 function start_lttng_sessiond_opt()
362 {
363 local withtap=$1
364 local load_path=$2
365
366 if [ -n $TEST_NO_SESSIOND ] && [ "$TEST_NO_SESSIOND" == "1" ]; then
367 # Env variable requested no session daemon
368 return
369 fi
370
371 validate_kernel_version
372 if [ $? -ne 0 ]; then
373 fail "Start session daemon"
374 BAIL_OUT "*** Kernel too old for session daemon tests ***"
375 fi
376
377 DIR=$(readlink -f $TESTDIR)
378 : ${LTTNG_SESSION_CONFIG_XSD_PATH=${DIR}/../src/common/config/}
379 export LTTNG_SESSION_CONFIG_XSD_PATH
380
381 if [ -z $(pgrep --full lt-$SESSIOND_BIN) ]; then
382 # Have a load path ?
383 if [ -n "$load_path" ]; then
384 $DIR/../src/bin/lttng-sessiond/$SESSIOND_BIN --load "$load_path" --background --consumerd32-path="$DIR/../src/bin/lttng-consumerd/lttng-consumerd" --consumerd64-path="$DIR/../src/bin/lttng-consumerd/lttng-consumerd"
385 else
386 $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"
387 fi
388 #$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
389 status=$?
390 if [ $withtap -eq "1" ]; then
391 ok $status "Start session daemon"
392 fi
393 fi
394 }
395
396 function start_lttng_sessiond()
397 {
398 start_lttng_sessiond_opt 1 "$@"
399 }
400
401 function start_lttng_sessiond_notap()
402 {
403 start_lttng_sessiond_opt 0 "$@"
404 }
405
406 function stop_lttng_sessiond_opt()
407 {
408 local withtap=$1
409 local signal=$2
410 local kill_opt=""
411
412 if [ -n $TEST_NO_SESSIOND ] && [ "$TEST_NO_SESSIOND" == "1" ]; then
413 # Env variable requested no session daemon
414 return
415 fi
416
417 PID_SESSIOND="$(pgrep --full lt-$SESSIOND_BIN) $(pgrep --full $RUNAS_BIN)"
418
419 if [ -n "$2" ]; then
420 kill_opt="$kill_opt -s $signal"
421 fi
422 if [ $withtap -eq "1" ]; then
423 diag "Killing lt-$SESSIOND_BIN pids: $(echo $PID_SESSIOND | tr '\n' ' ')"
424 fi
425 kill $kill_opt $PID_SESSIOND 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
426
427 if [ $? -eq 1 ]; then
428 if [ $withtap -eq "1" ]; then
429 fail "Kill sessions daemon"
430 fi
431 else
432 out=1
433 while [ -n "$out" ]; do
434 out=$(pgrep --full lt-$SESSIOND_BIN)
435 sleep 0.5
436 done
437 out=1
438 while [ -n "$out" ]; do
439 out=$(pgrep --full $CONSUMERD_BIN)
440 sleep 0.5
441 done
442 if [ $withtap -eq "1" ]; then
443 pass "Kill session daemon"
444 fi
445 fi
446 }
447
448 function stop_lttng_sessiond()
449 {
450 stop_lttng_sessiond_opt 1 "$@"
451 }
452
453 function stop_lttng_sessiond_notap()
454 {
455 stop_lttng_sessiond_opt 0 "$@"
456 }
457
458 function sigstop_lttng_sessiond_opt()
459 {
460 local withtap=$1
461 local signal=SIGSTOP
462 local kill_opt=""
463
464 if [ -n $TEST_NO_SESSIOND ] && [ "$TEST_NO_SESSIOND" == "1" ]; then
465 # Env variable requested no session daemon
466 return
467 fi
468
469 PID_SESSIOND="$(pgrep --full lt-$SESSIOND_BIN) $(pgrep --full $RUNAS_BIN)"
470
471 kill_opt="$kill_opt -s $signal"
472
473 if [ $withtap -eq "1" ]; then
474 diag "Sending SIGSTOP to lt-$SESSIOND_BIN pids: $(echo $PID_SESSIOND | tr '\n' ' ')"
475 fi
476 kill $kill_opt $PID_SESSIOND 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
477
478 if [ $? -eq 1 ]; then
479 if [ $withtap -eq "1" ]; then
480 fail "Sending SIGSTOP to session daemon"
481 fi
482 else
483 out=1
484 while [ $out -ne 0 ]; do
485 pid=$(pgrep --full lt-$SESSIOND_BIN)
486
487 # Wait until state becomes stopped for session
488 # daemon(s).
489 out=0
490 for sessiond_pid in $pid; do
491 state=$(ps -p $sessiond_pid -o state= )
492 if [[ -n "$state" && "$state" != "T" ]]; then
493 out=1
494 fi
495 done
496 sleep 0.5
497 done
498 if [ $withtap -eq "1" ]; then
499 pass "Sending SIGSTOP to session daemon"
500 fi
501 fi
502 }
503
504 function sigstop_lttng_sessiond()
505 {
506 sigstop_lttng_sessiond_opt 1 "$@"
507 }
508
509 function sigstop_lttng_sessiond_notap()
510 {
511 sigstop_lttng_sessiond_opt 0 "$@"
512 }
513
514 function stop_lttng_consumerd_opt()
515 {
516 local withtap=$1
517 local signal=$2
518 local kill_opt=""
519
520 PID_CONSUMERD=`pgrep --full $CONSUMERD_BIN`
521
522 if [ -n "$2" ]; then
523 kill_opt="$kill_opt -s $signal"
524 fi
525
526 if [ $withtap -eq "1" ]; then
527 diag "Killing $CONSUMERD_BIN pids: $(echo $PID_CONSUMERD | tr '\n' ' ')"
528 fi
529 kill $kill_opt $PID_CONSUMERD 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
530 retval=$?
531 set +x
532
533 if [ $? -eq 1 ]; then
534 if [ $withtap -eq "1" ]; then
535 fail "Kill consumer daemon"
536 fi
537 return 1
538 else
539 out=1
540 while [ $out -ne 0 ]; do
541 pid=$(pgrep --full $CONSUMERD_BIN)
542
543 # If consumerds are still present check their status.
544 # A zombie status qualifies the consumerd as *killed*
545 out=0
546 for consumer_pid in $pid; do
547 state=$(ps -p $consumer_pid -o state= )
548 if [[ -n "$state" && "$state" != "Z" ]]; then
549 out=1
550 fi
551 done
552 sleep 0.5
553 done
554 if [ $withtap -eq "1" ]; then
555 pass "Kill consumer daemon"
556 fi
557 fi
558 return $retval
559 }
560
561 function stop_lttng_consumerd()
562 {
563 stop_lttng_consumerd_opt 1 "$@"
564 }
565
566 function stop_lttng_consumerd_notap()
567 {
568 stop_lttng_consumerd_opt 0 "$@"
569 }
570
571 function sigstop_lttng_consumerd_opt()
572 {
573 local withtap=$1
574 local signal=SIGSTOP
575 local kill_opt=""
576
577 PID_CONSUMERD=`pgrep --full $CONSUMERD_BIN`
578
579 kill_opt="$kill_opt -s $signal"
580
581 if [ $withtap -eq "1" ]; then
582 diag "Sending SIGSTOP to $CONSUMERD_BIN pids: $(echo $PID_CONSUMERD | tr '\n' ' ')"
583 fi
584 kill $kill_opt $PID_CONSUMERD 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
585 retval=$?
586 set +x
587
588 if [ $? -eq 1 ]; then
589 if [ $withtap -eq "1" ]; then
590 fail "Sending SIGSTOP to consumer daemon"
591 fi
592 return 1
593 else
594 out=1
595 while [ $out -ne 0 ]; do
596 pid=$(pgrep --full $CONSUMERD_BIN)
597
598 # Wait until state becomes stopped for all
599 # consumers.
600 out=0
601 for consumer_pid in $pid; do
602 state=$(ps -p $consumer_pid -o state= )
603 if [[ -n "$state" && "$state" != "T" ]]; then
604 out=1
605 fi
606 done
607 sleep 0.5
608 done
609 if [ $withtap -eq "1" ]; then
610 pass "Sending SIGSTOP to consumer daemon"
611 fi
612 fi
613 return $retval
614 }
615
616 function sigstop_lttng_consumerd()
617 {
618 sigstop_lttng_consumerd_opt 1 "$@"
619 }
620
621 function sigstop_lttng_consumerd_notap()
622 {
623 sigstop_lttng_consumerd_opt 0 "$@"
624 }
625
626 function list_lttng_with_opts ()
627 {
628 local opts=$1
629 $TESTDIR/../src/bin/lttng/$LTTNG_BIN list $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
630 ok $? "Lttng-tool list command with option $opts"
631 }
632
633 function create_lttng_session_no_output ()
634 {
635 local sess_name=$1
636
637 $TESTDIR/../src/bin/lttng/$LTTNG_BIN create $sess_name --no-output 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
638 ok $? "Create session $sess_name in no-output mode"
639 }
640
641 function create_lttng_session ()
642 {
643 local expected_to_fail=$1
644 local sess_name=$2
645 local trace_path=$3
646 local opt=$4
647
648 $TESTDIR/../src/bin/lttng/$LTTNG_BIN create $sess_name -o $trace_path $opt > $OUTPUT_DEST
649 ret=$?
650 if [[ $expected_to_fail -eq "1" ]]; then
651 test "$ret" -ne "0"
652 ok $? "Create session $sess_name in $trace_path failed as expected"
653 else
654 ok $ret "Create session $sess_name in $trace_path"
655 fi
656 }
657
658 function create_lttng_session_ok ()
659 {
660 create_lttng_session 0 "$@"
661 }
662
663 function create_lttng_session_fail ()
664 {
665 create_lttng_session 1 "$@"
666 }
667
668
669 function enable_ust_lttng_channel ()
670 {
671 local expected_to_fail=$1
672 local sess_name=$2
673 local channel_name=$3
674 local opt=$4
675
676 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel -u $channel_name -s $sess_name $opt 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
677 ret=$?
678 if [[ $expected_to_fail -eq "1" ]]; then
679 test "$ret" -ne "0"
680 ok $? "Enable channel $channel_name for session $sess_name failed as expected"
681 else
682 ok $ret "Enable channel $channel_name for session $sess_name"
683 fi
684 }
685
686 function enable_ust_lttng_channel_ok ()
687 {
688 enable_ust_lttng_channel 0 "$@"
689 }
690
691 function enable_ust_lttng_channel_fail ()
692 {
693 enable_ust_lttng_channel 1 "$@"
694 }
695
696 function disable_ust_lttng_channel()
697 {
698 local sess_name=$1
699 local channel_name=$2
700
701 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-channel -u $channel_name -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
702 ok $? "Disable channel $channel_name for session $sess_name"
703 }
704
705 function enable_lttng_mmap_overwrite_kernel_channel()
706 {
707 local sess_name=$1
708 local channel_name=$2
709
710 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel -s $sess_name $channel_name -k --output mmap --overwrite 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
711 ok $? "Enable channel $channel_name for session $sess_name"
712 }
713
714 function enable_lttng_mmap_overwrite_ust_channel()
715 {
716 local sess_name=$1
717 local channel_name=$2
718
719 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel -s $sess_name $channel_name -u --output mmap --overwrite 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
720 ok $? "Enable channel $channel_name for session $sess_name"
721 }
722
723 function enable_ust_lttng_event ()
724 {
725 local expected_to_fail=$1
726 local sess_name=$2
727 local event_name="$3"
728 local channel_name=$4
729
730 if [ -z $channel_name ]; then
731 # default channel if none specified
732 chan=""
733 else
734 chan="-c $channel_name"
735 fi
736
737 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" $chan -s $sess_name -u 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
738 ret=$?
739 if [[ $expected_to_fail -eq "1" ]]; then
740 test $ret -ne "0"
741 ok $? "Enable ust event $event_name for session $session_name failed as expected"
742 else
743 ok $ret "Enable ust event $event_name for session $sess_name"
744 fi
745 }
746
747 function enable_ust_lttng_event_ok ()
748 {
749 enable_ust_lttng_event 0 "$@"
750 }
751
752 function enable_ust_lttng_event_fail ()
753 {
754 enable_ust_lttng_event 1 "$@"
755 }
756
757 function enable_jul_lttng_event()
758 {
759 sess_name=$1
760 event_name="$2"
761 channel_name=$3
762
763 if [ -z $channel_name ]; then
764 # default channel if none specified
765 chan=""
766 else
767 chan="-c $channel_name"
768 fi
769
770 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" $chan -s $sess_name -j 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
771 ok $? "Enable JUL event $event_name for session $sess_name"
772 }
773
774 function enable_jul_lttng_event_loglevel()
775 {
776 local sess_name=$1
777 local event_name="$2"
778 local loglevel=$3
779 local channel_name=$4
780
781 if [ -z $channel_name ]; then
782 # default channel if none specified
783 chan=""
784 else
785 chan="-c $channel_name"
786 fi
787
788 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event --loglevel $loglevel "$event_name" $chan -s $sess_name -j 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
789 ok $? "Enable JUL event $event_name for session $sess_name with loglevel $loglevel"
790 }
791
792 function enable_log4j_lttng_event()
793 {
794 sess_name=$1
795 event_name="$2"
796 channel_name=$3
797
798 if [ -z $channel_name ]; then
799 # default channel if none specified
800 chan=""
801 else
802 chan="-c $channel_name"
803 fi
804
805 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" $chan -s $sess_name -l 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
806 ok $? "Enable LOG4J event $event_name for session $sess_name"
807 }
808
809 function enable_log4j_lttng_event_loglevel()
810 {
811 local sess_name=$1
812 local event_name="$2"
813 local loglevel=$3
814 local channel_name=$4
815
816 if [ -z $channel_name ]; then
817 # default channel if none specified
818 chan=""
819 else
820 chan="-c $channel_name"
821 fi
822
823 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event --loglevel $loglevel "$event_name" $chan -s $sess_name -l 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
824 ok $? "Enable LOG4J event $event_name for session $sess_name with loglevel $loglevel"
825 }
826
827 function enable_python_lttng_event()
828 {
829 sess_name=$1
830 event_name="$2"
831 channel_name=$3
832
833 if [ -z $channel_name ]; then
834 # default channel if none specified
835 chan=""
836 else
837 chan="-c $channel_name"
838 fi
839
840 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" $chan -s $sess_name -p 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
841 ok $? "Enable Python event $event_name for session $sess_name"
842 }
843
844 function enable_python_lttng_event_loglevel()
845 {
846 local sess_name=$1
847 local event_name="$2"
848 local loglevel=$3
849 local channel_name=$4
850
851 if [ -z $channel_name ]; then
852 # default channel if none specified
853 chan=""
854 else
855 chan="-c $channel_name"
856 fi
857
858 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event --loglevel $loglevel "$event_name" $chan -s $sess_name -p 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
859 ok $? "Enable Python event $event_name for session $sess_name with loglevel $loglevel"
860 }
861
862 function enable_ust_lttng_event_filter()
863 {
864 local sess_name="$1"
865 local event_name="$2"
866 local filter="$3"
867
868 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" -s $sess_name -u --filter "$filter" 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
869 ok $? "Enable event $event_name with filtering for session $sess_name"
870 }
871
872 function enable_ust_lttng_event_loglevel()
873 {
874 local sess_name="$1"
875 local event_name="$2"
876 local loglevel="$3"
877
878 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" -s $sess_name -u --loglevel $loglevel 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
879 ok $? "Enable event $event_name with loglevel $loglevel"
880 }
881
882 function enable_ust_lttng_event_loglevel_only()
883 {
884 local sess_name="$1"
885 local event_name="$2"
886 local loglevel="$3"
887
888 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" -s $sess_name -u --loglevel-only $loglevel 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
889 ok $? "Enable event $event_name with loglevel-only $loglevel"
890 }
891
892 function disable_ust_lttng_event ()
893 {
894 local sess_name="$1"
895 local event_name="$2"
896 local channel_name="$3"
897
898 if [ -z $channel_name ]; then
899 # default channel if none specified
900 chan=""
901 else
902 chan="-c $channel_name"
903 fi
904
905 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-event "$event_name" -s $sess_name $chan -u 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
906 ok $? "Disable event $event_name for session $sess_name"
907 }
908
909 function disable_jul_lttng_event ()
910 {
911 local sess_name="$1"
912 local event_name="$2"
913
914 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-event "$event_name" -s $sess_name -j >/dev/null 2>&1
915 ok $? "Disable JUL event $event_name for session $sess_name"
916 }
917
918 function disable_log4j_lttng_event ()
919 {
920 local sess_name="$1"
921 local event_name="$2"
922
923 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-event "$event_name" -s $sess_name -l >/dev/null 2>&1
924 ok $? "Disable LOG4J event $event_name for session $sess_name"
925 }
926
927 function disable_python_lttng_event ()
928 {
929 local sess_name="$1"
930 local event_name="$2"
931
932 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-event "$event_name" -s $sess_name -p 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
933 ok $? "Disable Python event $event_name for session $sess_name"
934 }
935
936 function start_lttng_tracing ()
937 {
938 local expected_to_fail=$1
939 local sess_name=$2
940
941 $TESTDIR/../src/bin/lttng/$LTTNG_BIN start $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
942 ret=$?
943 if [[ $expected_to_fail -eq "1" ]]; then
944 test "$ret" -ne "0"
945 ok $? "Start tracing for session $sess_name failed as expected"
946 else
947 ok $ret "Start tracing for session $sess_name"
948 fi
949 }
950
951 function start_lttng_tracing_ok ()
952 {
953 start_lttng_tracing 0 "$@"
954 }
955
956 function start_lttng_tracing_fail ()
957 {
958 start_lttng_tracing 1 "$@"
959 }
960
961 function stop_lttng_tracing ()
962 {
963 local expected_to_fail=$1
964 local sess_name=$2
965
966 $TESTDIR/../src/bin/lttng/$LTTNG_BIN stop $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
967 ret=$?
968 if [[ $expected_to_fail -eq "1" ]]; then
969 test "$ret" -ne "0"
970 ok $? "Stop lttng tracing for session $sess_name failed as expected"
971 else
972 ok $ret "Stop lttng tracing for session $sess_name"
973 fi
974 }
975
976 function stop_lttng_tracing_ok ()
977 {
978 stop_lttng_tracing 0 "$@"
979 }
980
981 function stop_lttng_tracing_fail ()
982 {
983 stop_lttng_tracing 1 "$@"
984 }
985
986 function destroy_lttng_session ()
987 {
988 local expected_to_fail=$1
989 local sess_name=$2
990
991 $TESTDIR/../src/bin/lttng/$LTTNG_BIN destroy $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
992 ret=$?
993 if [[ $expected_to_fail -eq "1" ]]; then
994 test "$ret" -ne "0"
995 ok $? "Destroy session $sess_name failed as expected"
996 else
997 ok $ret "Destroy session $sess_name"
998 fi
999 }
1000
1001 function destroy_lttng_session_ok ()
1002 {
1003 destroy_lttng_session 0 "$@"
1004
1005 }
1006
1007 function destroy_lttng_session_fail ()
1008 {
1009 destroy_lttng_session 1 "$@"
1010 }
1011
1012
1013 function destroy_lttng_sessions ()
1014 {
1015 $TESTDIR/../src/bin/lttng/$LTTNG_BIN destroy --all 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1016 ok $? "Destroy all lttng sessions"
1017 }
1018
1019 function lttng_snapshot_add_output ()
1020 {
1021 local expected_to_fail=$1
1022 local sess_name=$2
1023 local trace_path=$3
1024
1025 $TESTDIR/../src/bin/lttng/$LTTNG_BIN snapshot add-output -s $sess_name file://$trace_path 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1026 ret=$?
1027 if [[ $expected_to_fail -eq 1 ]]; then
1028 test "$ret" -ne "0"
1029 ok $? "Added snapshot output file://$trace_path failed as expected"
1030 else
1031 ok $ret "Added snapshot output file://$trace_path"
1032 fi
1033 }
1034
1035 function lttng_snapshot_add_output_ok ()
1036 {
1037 lttng_snapshot_add_output 0 "$@"
1038 }
1039
1040 function lttng_snapshot_add_output_fail ()
1041 {
1042 lttng_snapshot_add_output 1 "$@"
1043 }
1044
1045 function lttng_snapshot_del_output ()
1046 {
1047 local expected_to_fail=$1
1048 local sess_name=$2
1049 local id=$3
1050
1051 $TESTDIR/../src/bin/lttng/$LTTNG_BIN snapshot del-output -s $sess_name $id 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1052 ret=$?
1053 if [[ $expected_to_fail -eq "1" ]]; then
1054 test "$ret" -ne "0"
1055 ok $? "Deleted snapshot output id $id failed as expected"
1056 else
1057 ok $ret "Deleted snapshot output id $id"
1058 fi
1059 }
1060
1061 function lttng_snapshot_del_output_ok ()
1062 {
1063 lttng_snapshot_del_output 0 "$@"
1064 }
1065
1066 function lttng_snapshot_del_output_fail ()
1067 {
1068 lttng_snapshot_del_output 1 "$@"
1069 }
1070
1071 function lttng_snapshot_record ()
1072 {
1073 local sess_name=$1
1074 local trace_path=$2
1075
1076 $TESTDIR/../src/bin/lttng/$LTTNG_BIN snapshot record -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1077 ok $? "Snapshot recorded"
1078 }
1079
1080 function lttng_snapshot_list ()
1081 {
1082 local sess_name=$1
1083 $TESTDIR/../src/bin/lttng/$LTTNG_BIN snapshot list-output -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1084 ok $? "Snapshot list"
1085 }
1086
1087 function lttng_save()
1088 {
1089 local sess_name=$1
1090 local opts=$2
1091
1092 $TESTDIR/../src/bin/lttng/$LTTNG_BIN save $sess_name $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1093 ok $? "Session saved"
1094 }
1095
1096 function lttng_load()
1097 {
1098 local opts=$1
1099
1100 $TESTDIR/../src/bin/lttng/$LTTNG_BIN load $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1101 ok $? "Load command with opts: $opts"
1102 }
1103
1104 function lttng_track()
1105 {
1106 local expected_to_fail=$1
1107 local opts=$2
1108 $TESTDIR/../src/bin/lttng/$LTTNG_BIN track $opts >$OUTPUT_DEST
1109 ret=$?
1110 if [[ $expected_to_fail -eq "1" ]]; then
1111 test $ret -ne "0"
1112 ok $? "Track command failed as expected with opts: $opts"
1113 else
1114 ok $ret "Track command with opts: $opts"
1115 fi
1116 }
1117
1118 function lttng_track_ok()
1119 {
1120 lttng_track 0 "$@"
1121 }
1122
1123 function lttng_track_fail()
1124 {
1125 lttng_track 1 "$@"
1126 }
1127
1128 function lttng_untrack()
1129 {
1130 local expected_to_fail=$1
1131 local opts=$2
1132 $TESTDIR/../src/bin/lttng/$LTTNG_BIN untrack $opts >$OUTPUT_DEST
1133 ret=$?
1134 if [[ $expected_to_fail -eq "1" ]]; then
1135 test $ret -ne "0"
1136 ok $? "Untrack command failed as expected with opts: $opts"
1137 else
1138 ok $ret "Untrack command with opts: $opts"
1139 fi
1140 }
1141
1142 function lttng_untrack_ok()
1143 {
1144 lttng_untrack 0 "$@"
1145 }
1146
1147 function lttng_untrack_fail()
1148 {
1149 lttng_untrack 1 "$@"
1150 }
1151
1152 function add_context_lttng()
1153 {
1154 local expected_to_fail="$1"
1155 local domain="$2"
1156 local session_name="$3"
1157 local channel_name="$4"
1158 local type="$5"
1159
1160 $TESTDIR/../src/bin/lttng/$LTTNG_BIN add-context -s $session_name -c $channel_name -t $type $domain 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
1161 ret=$?
1162 if [[ $expected_to_fail -eq "1" ]]; then
1163 test $ret -ne "0"
1164 ok $? "Add context command failed as expected for type: $type"
1165 else
1166 ok $ret "Add context command for type: $type"
1167 fi
1168 }
1169
1170 function add_context_ust_ok()
1171 {
1172 add_context_lttng 0 -u "$@"
1173 }
1174
1175 function add_context_ust_fail()
1176 {
1177 add_context_lttng 1 -u "$@"
1178 }
1179
1180 function add_context_kernel_ok()
1181 {
1182 add_context_lttng 0 -k "$@"
1183 }
1184
1185 function add_context_kernel_fail()
1186 {
1187 add_context_lttng 1 -k "$@"
1188 }
1189
1190 function trace_matches ()
1191 {
1192 local event_name=$1
1193 local nr_iter=$2
1194 local trace_path=$3
1195
1196 which $BABELTRACE_BIN >/dev/null
1197 skip $? -ne 0 "Babeltrace binary not found. Skipping trace matches"
1198
1199 local count=$($BABELTRACE_BIN $trace_path | grep $event_name | wc -l)
1200
1201 if [ "$count" -ne "$nr_iter" ]; then
1202 fail "Trace match"
1203 diag "$count matching events found in trace"
1204 else
1205 pass "Trace match"
1206 fi
1207 }
1208
1209 function trace_match_only()
1210 {
1211 local event_name=$1
1212 local nr_iter=$2
1213 local trace_path=$3
1214
1215 which $BABELTRACE_BIN >/dev/null
1216 skip $? -ne 0 "Babeltrace binary not found. Skipping trace matches"
1217
1218 local count=$($BABELTRACE_BIN $trace_path | grep $event_name | wc -l)
1219 local total=$($BABELTRACE_BIN $trace_path | wc -l)
1220
1221 if [ "$nr_iter" -eq "$count" ] && [ "$total" -eq "$nr_iter" ]; then
1222 pass "Trace match with $total event $event_name"
1223 else
1224 fail "Trace match"
1225 diag "$total event(s) found, expecting $nr_iter of event $event_name and only found $count"
1226 fi
1227 }
1228
1229 function validate_trace
1230 {
1231 local event_name=$1
1232 local trace_path=$2
1233
1234 which $BABELTRACE_BIN >/dev/null
1235 if [ $? -ne 0 ]; then
1236 skip 0 "Babeltrace binary not found. Skipping trace validation"
1237 fi
1238
1239 OLDIFS=$IFS
1240 IFS=","
1241 for i in $event_name; do
1242 traced=$($BABELTRACE_BIN $trace_path 2>/dev/null | grep $i | wc -l)
1243 if [ "$traced" -ne 0 ]; then
1244 pass "Validate trace for event $i, $traced events"
1245 else
1246 fail "Validate trace for event $i"
1247 diag "Found $traced occurences of $i"
1248 fi
1249 done
1250 ret=$?
1251 IFS=$OLDIFS
1252 return $ret
1253 }
1254
1255 function validate_trace_exp()
1256 {
1257 local event_exp=$1
1258 local trace_path=$2
1259
1260 which $BABELTRACE_BIN >/dev/null
1261 skip $? -ne 0 "Babeltrace binary not found. Skipping trace validation"
1262
1263 traced=$($BABELTRACE_BIN $trace_path 2>/dev/null | grep ${event_exp} | wc -l)
1264 if [ "$traced" -ne 0 ]; then
1265 pass "Validate trace for expression '${event_exp}', $traced events"
1266 else
1267 fail "Validate trace for expression '${event_exp}'"
1268 diag "Found $traced occurences of '${event_exp}'"
1269 fi
1270 ret=$?
1271 return $ret
1272 }
1273
1274 function validate_trace_only_exp()
1275 {
1276 local event_exp=$1
1277 local trace_path=$2
1278
1279 which $BABELTRACE_BIN >/dev/null
1280 skip $? -ne 0 "Babeltrace binary not found. Skipping trace matches"
1281
1282 local count=$($BABELTRACE_BIN $trace_path | grep ${event_exp} | wc -l)
1283 local total=$($BABELTRACE_BIN $trace_path | wc -l)
1284
1285 if [ "$count" -ne 0 ] && [ "$total" -eq "$count" ]; then
1286 pass "Trace match with $total for expression '${event_exp}"
1287 else
1288 fail "Trace match"
1289 diag "$total syscall event(s) found, only syscalls matching expression '${event_exp}' ($count occurrences) are expected"
1290 fi
1291 ret=$?
1292 return $ret
1293 }
1294
1295 function validate_trace_empty()
1296 {
1297 local trace_path=$1
1298
1299 which $BABELTRACE_BIN >/dev/null
1300 if [ $? -ne 0 ]; then
1301 skip 0 "Babeltrace binary not found. Skipping trace validation"
1302 fi
1303
1304 traced=$($BABELTRACE_BIN $trace_path 2>/dev/null | wc -l)
1305 if [ "$traced" -eq 0 ]; then
1306 pass "Validate empty trace"
1307 else
1308 fail "Validate empty trace"
1309 diag "Found $traced events in trace"
1310 fi
1311 ret=$?
1312 return $ret
1313 }
This page took 0.056257 seconds and 4 git commands to generate.