9e78dc23478ccf582aad94fb5f8b8b9c68c13052
[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 CONSUMERD_BIN="lttng-consumerd"
20 RELAYD_BIN="lttng-relayd"
21 LTTNG_BIN="lttng"
22 BABELTRACE_BIN="babeltrace"
23 OUTPUT_DEST=/dev/null
24 ERROR_OUTPUT_DEST=/dev/null
25
26 # Minimal kernel version supported for session daemon tests
27 KERNEL_MAJOR_VERSION=2
28 KERNEL_MINOR_VERSION=6
29 KERNEL_PATCHLEVEL_VERSION=27
30
31 # We set the default UST register timeout to "wait forever", so that
32 # basic tests don't have to worry about hitting timeouts on busy
33 # systems. Specialized tests should test those corner-cases.
34 export LTTNG_UST_REGISTER_TIMEOUT=-1
35
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"
41
42 source $TESTDIR/utils/tap/tap.sh
43
44 function print_ok ()
45 {
46 # Check if we are a terminal
47 if [ -t 1 ]; then
48 echo -e "\e[1;32mOK\e[0m"
49 else
50 echo -e "OK"
51 fi
52 }
53
54 function print_fail ()
55 {
56 # Check if we are a terminal
57 if [ -t 1 ]; then
58 echo -e "\e[1;31mFAIL\e[0m"
59 else
60 echo -e "FAIL"
61 fi
62 }
63
64 function print_test_banner ()
65 {
66 local desc="$1"
67 diag "$desc"
68 }
69
70 function validate_kernel_version ()
71 {
72 local kern_version=($(uname -r | awk -F. '{ printf("%d.%d.%d\n",$1,$2,$3); }' | tr '.' '\n'))
73 if [ ${kern_version[0]} -gt $KERNEL_MAJOR_VERSION ]; then
74 return 0
75 fi
76 if [ ${kern_version[1]} -gt $KERNEL_MINOR_VERSION ]; then
77 return 0
78 fi
79 if [ ${kern_version[2]} -ge $KERNEL_PATCHLEVEL_VERSION ]; then
80 return 0
81 fi
82 return 1
83 }
84
85 # Generate a random string
86 # $1 = number of characters; defaults to 16
87 # $2 = include special characters; 1 = yes, 0 = no; defaults to yes
88 function randstring()
89 {
90 [ "$2" == "0" ] && CHAR="[:alnum:]" || CHAR="[:graph:]"
91 cat /dev/urandom | tr -cd "$CHAR" | head -c ${1:-16}
92 echo
93 }
94
95 function lttng_enable_kernel_event
96 {
97 local sess_name=$1
98 local event_name=$2
99 local channel_name=$3
100
101 if [ -z $event_name ]; then
102 # Enable all event if no event name specified
103 event_name="-a"
104 fi
105
106 if [ -z $channel_name ]; then
107 # default channel if none specified
108 chan=""
109 else
110 chan="-c $channel_name"
111 fi
112
113 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" $chan -s $sess_name -k 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
114 ok $? "Enable kernel event $event_name for session $sess_name"
115 }
116
117 function lttng_enable_kernel_syscall()
118 {
119 local expected_to_fail=$1
120 local sess_name=$2
121 local syscall_name=$3
122 local channel_name=$4
123
124 if [ -z $syscall_name ]; then
125 # Enable all event if no syscall name specified
126 syscall_name="-a"
127 fi
128
129 if [ -z $channel_name ]; then
130 # default channel if none specified
131 chan=""
132 else
133 chan="-c $channel_name"
134 fi
135
136 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event --syscall "$syscall_name" $chan -s $sess_name -k 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
137 ret=$?
138 if [[ $expected_to_fail -eq "1" ]]; then
139 test $ret -ne "0"
140 ok $? "Enable kernel syscall $syscall_name for session $sess_name on channel $channel_name fail as expected"
141 else
142 ok $ret "Enable kernel syscall $syscall_name for session $sess_name on channel $channel_name"
143 fi
144 }
145
146 function lttng_enable_kernel_syscall_ok()
147 {
148 lttng_enable_kernel_syscall 0 ${*}
149 }
150
151 function lttng_enable_kernel_syscall_fail()
152 {
153 lttng_enable_kernel_syscall 1 ${*}
154 }
155
156 function lttng_disable_kernel_syscall()
157 {
158 local expected_to_fail=$1
159 local sess_name=$2
160 local syscall_name=$3
161 local channel_name=$4
162
163 if [ -z $syscall_name ]; then
164 # Enable all event if no syscall name specified
165 syscall_name="-a"
166 fi
167
168 if [ -z $channel_name ]; then
169 # default channel if none specified
170 chan=""
171 else
172 chan="-c $channel_name"
173 fi
174
175 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-event --syscall "$syscall_name" $chan -s $sess_name -k 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
176
177 ret=$?
178 if [[ $expected_to_fail -eq "1" ]]; then
179 test $ret -ne "0"
180 ok $? "Disable kernel syscall $syscall_name for session $sess_name on channel $channel_name fail as expected"
181 else
182 ok $ret "Disable kernel syscall $syscall_name for session $sess_name on channel $channel_name"
183 fi
184 }
185
186 function lttng_disable_kernel_syscall_ok()
187 {
188 lttng_disable_kernel_syscall 0 ${*}
189 }
190
191 function lttng_disable_kernel_syscall_fail()
192 {
193 lttng_disable_kernel_syscall 1 ${*}
194 }
195
196 function lttng_enable_kernel_channel()
197 {
198 local expected_to_fail=$1
199 local sess_name=$2
200 local channel_name=$3
201
202 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel -k $channel_name -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
203 ret=$?
204 if [[ $expected_to_fail -eq "1" ]]; then
205 test "$ret" -ne "0"
206 ok $? "Expected failure on kernel channel creation $channel_name in $sess_name"
207 else
208 ok $ret "Enable channel $channel_name for session $sess_name"
209 fi
210 }
211
212 function lttng_enable_kernel_channel_ok()
213 {
214 lttng_enable_kernel_channel 0 ${*}
215 }
216
217 function lttng_enable_kernel_channel_fail()
218 {
219 lttng_enable_kernel_channel 1 ${*}
220 }
221
222 function lttng_disable_kernel_channel()
223 {
224 local expected_to_fail=$1
225 local sess_name=$2
226 local channel_name=$3
227
228 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-channel -k $channel_name -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
229 ret=$?
230 if [[ $expected_to_fail -eq "1" ]]; then
231 test "$ret" -ne "0"
232 ok $? "Expected failure on kernel channel creation $channel_name in $sess_name"
233 else
234 ok $ret "disable channel $channel_name for session $sess_name"
235 fi
236 }
237
238 function lttng_disable_kernel_channel_ok()
239 {
240 lttng_disable_kernel_channel 0 ${*}
241 }
242
243 function lttng_disable_kernel_channel_fail()
244 {
245 lttng_disable_kernel_channel 1 ${*}
246 }
247
248 function start_lttng_relayd_opt()
249 {
250 local withtap=$1
251 local opt=$2
252
253 DIR=$(readlink -f $TESTDIR)
254
255 if [ -z $(pidof lt-$RELAYD_BIN) ]; then
256 $DIR/../src/bin/lttng-relayd/$RELAYD_BIN -b $opt 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
257 #$DIR/../src/bin/lttng-relayd/$RELAYD_BIN $opt -vvv >>/tmp/relayd.log 2>&1 &
258 if [ $? -eq 1 ]; then
259 if [ $withtap -eq "1" ]; then
260 fail "Start lttng-relayd (opt: $opt)"
261 fi
262 return 1
263 else
264 if [ $withtap -eq "1" ]; then
265 pass "Start lttng-relayd (opt: $opt)"
266 fi
267 fi
268 else
269 pass "Start lttng-relayd (opt: $opt)"
270 fi
271 }
272
273 function start_lttng_relayd()
274 {
275 start_lttng_relayd_opt 1 "$@"
276 }
277
278 function start_lttng_relayd_notap()
279 {
280 start_lttng_relayd_opt 0 "$@"
281 }
282
283 function stop_lttng_relayd_opt()
284 {
285 local withtap=$1
286
287 PID_RELAYD=`pidof lt-$RELAYD_BIN`
288
289 if [ $withtap -eq "1" ]; then
290 diag "Killing lttng-relayd (pid: $PID_RELAYD)"
291 fi
292 kill $PID_RELAYD 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
293 retval=$?
294
295 if [ $? -eq 1 ]; then
296 if [ $withtap -eq "1" ]; then
297 fail "Kill relay daemon"
298 fi
299 return 1
300 else
301 out=1
302 while [ -n "$out" ]; do
303 out=$(pidof lt-$RELAYD_BIN)
304 sleep 0.5
305 done
306 if [ $withtap -eq "1" ]; then
307 pass "Kill relay daemon"
308 fi
309 fi
310 return $retval
311 }
312
313 function stop_lttng_relayd()
314 {
315 stop_lttng_relayd_opt 1 "$@"
316 }
317
318 function stop_lttng_relayd_notap()
319 {
320 stop_lttng_relayd_opt 0 "$@"
321 }
322
323 #First arg: show tap output
324 #Second argument: load path for automatic loading
325 function start_lttng_sessiond_opt()
326 {
327 local withtap=$1
328 local load_path=$2
329
330 if [ -n $TEST_NO_SESSIOND ] && [ "$TEST_NO_SESSIOND" == "1" ]; then
331 # Env variable requested no session daemon
332 return
333 fi
334
335 validate_kernel_version
336 if [ $? -ne 0 ]; then
337 fail "Start session daemon"
338 BAIL_OUT "*** Kernel too old for session daemon tests ***"
339 fi
340
341 DIR=$(readlink -f $TESTDIR)
342 : ${LTTNG_SESSION_CONFIG_XSD_PATH=${DIR}/../src/common/config/}
343 export LTTNG_SESSION_CONFIG_XSD_PATH
344
345 if [ -z $(pidof lt-$SESSIOND_BIN) ]; then
346 # Have a load path ?
347 if [ -n "$load_path" ]; then
348 $DIR/../src/bin/lttng-sessiond/$SESSIOND_BIN --load "$1" --background --consumerd32-path="$DIR/../src/bin/lttng-consumerd/lttng-consumerd" --consumerd64-path="$DIR/../src/bin/lttng-consumerd/lttng-consumerd"
349 else
350 $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"
351 fi
352 #$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
353 status=$?
354 if [ $withtap -eq "1" ]; then
355 ok $status "Start session daemon"
356 fi
357 fi
358 }
359
360 function start_lttng_sessiond()
361 {
362 start_lttng_sessiond_opt 1 "$@"
363 }
364
365 function start_lttng_sessiond_notap()
366 {
367 start_lttng_sessiond_opt 0 "$@"
368 }
369
370 function stop_lttng_sessiond_opt()
371 {
372 local withtap=$1
373
374 if [ -n $TEST_NO_SESSIOND ] && [ "$TEST_NO_SESSIOND" == "1" ]; then
375 # Env variable requested no session daemon
376 return
377 fi
378
379 PID_SESSIOND=`pidof lt-$SESSIOND_BIN`
380
381 kill $PID_SESSIOND 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
382
383 if [ $? -eq 1 ]; then
384 if [ $withtap -eq "1" ]; then
385 fail "Kill sessions daemon"
386 fi
387 else
388 out=1
389 while [ -n "$out" ]; do
390 out=$(pidof lt-$SESSIOND_BIN)
391 sleep 0.5
392 done
393 out=1
394 while [ -n "$out" ]; do
395 out=$(pidof $CONSUMERD_BIN)
396 sleep 0.5
397 done
398 if [ $withtap -eq "1" ]; then
399 pass "Kill session daemon"
400 fi
401 fi
402 }
403
404 function stop_lttng_sessiond()
405 {
406 stop_lttng_sessiond_opt 1 "$@"
407 }
408
409 function stop_lttng_sessiond_notap()
410 {
411 stop_lttng_sessiond_opt 0 "$@"
412 }
413
414 function list_lttng_with_opts ()
415 {
416 local opts=$1
417 $TESTDIR/../src/bin/lttng/$LTTNG_BIN list $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
418 ok $? "Lttng-tool list command with option $opts"
419 }
420
421 function create_lttng_session_no_output ()
422 {
423 local sess_name=$1
424
425 $TESTDIR/../src/bin/lttng/$LTTNG_BIN create $sess_name --no-output 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
426 ok $? "Create session $sess_name in no-output mode"
427 }
428
429 function create_lttng_session ()
430 {
431 local sess_name=$1
432 local trace_path=$2
433 local expected_to_fail=$3
434
435 $TESTDIR/../src/bin/lttng/$LTTNG_BIN create $sess_name -o $trace_path > $OUTPUT_DEST
436 ret=$?
437 if [[ $expected_to_fail ]]; then
438 test "$ret" -ne "0"
439 ok $? "Expected fail on session creation $sess_name in $trace_path"
440 else
441 ok $ret "Create session $sess_name in $trace_path"
442 fi
443 }
444
445 function enable_ust_lttng_channel()
446 {
447 local sess_name=$1
448 local channel_name=$2
449 local expect_fail=$3
450
451 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel -u $channel_name -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
452 ret=$?
453 if [[ $expect_fail ]]; then
454 test "$ret" -ne "0"
455 ok $? "Expected fail on ust channel creation $channel_name in $sess_name"
456 else
457 ok $ret "Enable channel $channel_name for session $sess_name"
458 fi
459 }
460
461 function disable_ust_lttng_channel()
462 {
463 local sess_name=$1
464 local channel_name=$2
465
466 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-channel -u $channel_name -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
467 ok $? "Disable channel $channel_name for session $sess_name"
468 }
469
470 function enable_lttng_mmap_overwrite_kernel_channel()
471 {
472 local sess_name=$1
473 local channel_name=$2
474
475 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel -s $sess_name $channel_name -k --output mmap --overwrite 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
476 ok $? "Enable channel $channel_name for session $sess_name"
477 }
478
479 function enable_lttng_mmap_overwrite_ust_channel()
480 {
481 local sess_name=$1
482 local channel_name=$2
483
484 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel -s $sess_name $channel_name -u --output mmap --overwrite 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
485 ok $? "Enable channel $channel_name for session $sess_name"
486 }
487
488 function enable_ust_lttng_event ()
489 {
490 local sess_name=$1
491 local event_name="$2"
492 local channel_name=$3
493 local expected_to_fail=$4
494
495 if [ -z $channel_name ]; then
496 # default channel if none specified
497 chan=""
498 else
499 chan="-c $channel_name"
500 fi
501
502 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" $chan -s $sess_name -u 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
503 ret=$?
504 if [[ $expected_to_fail ]]; then
505 test $ret -ne "0"
506 ok $? "Enable ust event $event_name for session $session_name on channel $channel_name failed as expected"
507 else
508 ok $ret "Enable event $event_name for session $sess_name"
509 fi
510 }
511
512 function enable_jul_lttng_event()
513 {
514 sess_name=$1
515 event_name="$2"
516 channel_name=$3
517
518 if [ -z $channel_name ]; then
519 # default channel if none specified
520 chan=""
521 else
522 chan="-c $channel_name"
523 fi
524
525 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" $chan -s $sess_name -j 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
526 ok $? "Enable JUL event $event_name for session $sess_name"
527 }
528
529 function enable_jul_lttng_event_loglevel()
530 {
531 local sess_name=$1
532 local event_name="$2"
533 local loglevel=$3
534 local channel_name=$4
535
536 if [ -z $channel_name ]; then
537 # default channel if none specified
538 chan=""
539 else
540 chan="-c $channel_name"
541 fi
542
543 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event --loglevel $loglevel "$event_name" $chan -s $sess_name -j 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
544 ok $? "Enable JUL event $event_name for session $sess_name with loglevel $loglevel"
545 }
546
547 function enable_log4j_lttng_event()
548 {
549 sess_name=$1
550 event_name="$2"
551 channel_name=$3
552
553 if [ -z $channel_name ]; then
554 # default channel if none specified
555 chan=""
556 else
557 chan="-c $channel_name"
558 fi
559
560 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" $chan -s $sess_name -l 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
561 ok $? "Enable LOG4J event $event_name for session $sess_name"
562 }
563
564 function enable_log4j_lttng_event_loglevel()
565 {
566 local sess_name=$1
567 local event_name="$2"
568 local loglevel=$3
569 local channel_name=$4
570
571 if [ -z $channel_name ]; then
572 # default channel if none specified
573 chan=""
574 else
575 chan="-c $channel_name"
576 fi
577
578 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event --loglevel $loglevel "$event_name" $chan -s $sess_name -l 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
579 ok $? "Enable LOG4J event $event_name for session $sess_name with loglevel $loglevel"
580 }
581
582 function enable_ust_lttng_event_filter()
583 {
584 local sess_name="$1"
585 local event_name="$2"
586 local filter="$3"
587
588 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" -s $sess_name -u --filter "$filter" 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
589 ok $? "Enable event $event_name with filtering for session $sess_name"
590 }
591
592 function enable_ust_lttng_event_loglevel()
593 {
594 local sess_name="$1"
595 local event_name="$2"
596 local loglevel="$3"
597
598 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" -s $sess_name -u --loglevel $loglevel 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
599 ok $? "Enable event $event_name with loglevel $loglevel"
600 }
601
602 function enable_ust_lttng_event_loglevel_only()
603 {
604 local sess_name="$1"
605 local event_name="$2"
606 local loglevel="$3"
607
608 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" -s $sess_name -u --loglevel-only $loglevel 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
609 ok $? "Enable event $event_name with loglevel-only $loglevel"
610 }
611
612 function disable_ust_lttng_event ()
613 {
614 local sess_name="$1"
615 local event_name="$2"
616 local channel_name="$3"
617
618 if [ -z $channel_name ]; then
619 # default channel if none specified
620 chan=""
621 else
622 chan="-c $channel_name"
623 fi
624
625 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-event "$event_name" -s $sess_name $chan -u 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
626 ok $? "Disable event $event_name for session $sess_name"
627 }
628
629 function disable_jul_lttng_event ()
630 {
631 local sess_name="$1"
632 local event_name="$2"
633
634 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-event "$event_name" -s $sess_name -j >/dev/null 2>&1
635 ok $? "Disable JUL event $event_name for session $sess_name"
636 }
637
638 function disable_log4j_lttng_event ()
639 {
640 local sess_name="$1"
641 local event_name="$2"
642
643 $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-event "$event_name" -s $sess_name -l >/dev/null 2>&1
644 ok $? "Disable LOG4J event $event_name for session $sess_name"
645 }
646
647 function start_lttng_tracing ()
648 {
649 local sess_name=$1
650 local expected_to_fail=$2
651
652 $TESTDIR/../src/bin/lttng/$LTTNG_BIN start $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
653 ret=$?
654 if [[ $expected_to_fail ]]; then
655 test "$ret" -ne "0"
656 ok $? "Expected fail on start tracing for session: $sess_name"
657 else
658 ok $ret "Start tracing for session $sess_name"
659 fi
660 }
661
662 function stop_lttng_tracing ()
663 {
664 local sess_name=$1
665 local expected_to_fail=$2
666
667 $TESTDIR/../src/bin/lttng/$LTTNG_BIN stop $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
668 ret=$?
669 if [[ $expected_to_fail ]]; then
670 test "$ret" -ne "0"
671 ok $? "Expected fail on stop tracing for session: $sess_name"
672 else
673 ok $ret "Stop lttng tracing for session $sess_name"
674 fi
675 }
676
677 function destroy_lttng_session ()
678 {
679 local sess_name=$1
680 local expected_to_fail=$2
681
682 $TESTDIR/../src/bin/lttng/$LTTNG_BIN destroy $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
683 ret=$?
684 if [[ $expected_to_fail ]]; then
685 test "$ret" -ne "0"
686 ok $? "Expected fail on session deletion $sess_name"
687 else
688 ok $ret "Destroy session $sess_name"
689 fi
690 }
691
692 function destroy_lttng_sessions ()
693 {
694 $TESTDIR/../src/bin/lttng/$LTTNG_BIN destroy --all 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
695 ok $? "Destroy all lttng sessions"
696 }
697
698 function lttng_snapshot_add_output ()
699 {
700 local sess_name=$1
701 local trace_path=$2
702 local expected_to_fail=$3
703
704 $TESTDIR/../src/bin/lttng/$LTTNG_BIN snapshot add-output -s $sess_name file://$trace_path 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
705 ret=$?
706 if [[ $expected_to_fail ]]; then
707 test "$ret" -ne "0"
708 ok $? "Failed to add a snapshot output file://$trace_path as expected"
709 else
710 ok $ret "Added snapshot output file://$trace_path"
711 fi
712 }
713
714 function lttng_snapshot_del_output ()
715 {
716 local sess_name=$1
717 local id=$2
718 local expected_to_fail=$3
719
720 $TESTDIR/../src/bin/lttng/$LTTNG_BIN snapshot del-output -s $sess_name $id 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
721 ret=$?
722 if [[ $expected_to_fail ]]; then
723 test "$ret" -ne "0"
724 ok $? "Expect fail on deletion of snapshot output id $id"
725 else
726 ok $ret "Deleted snapshot output id $id"
727 fi
728 }
729
730 function lttng_snapshot_record ()
731 {
732 local sess_name=$1
733 local trace_path=$2
734
735 $TESTDIR/../src/bin/lttng/$LTTNG_BIN snapshot record -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
736 ok $? "Snapshot recorded"
737 }
738
739 function lttng_snapshot_list ()
740 {
741 local sess_name=$1
742 $TESTDIR/../src/bin/lttng/$LTTNG_BIN snapshot list-output -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
743 ok $? "Snapshot list"
744 }
745
746 function lttng_save()
747 {
748 local sess_name=$1
749 local opts=$2
750
751 $TESTDIR/../src/bin/lttng/$LTTNG_BIN save $sess_name $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
752 ok $? "Session successfully saved"
753 }
754
755 function lttng_load()
756 {
757 local opts=$1
758
759 $TESTDIR/../src/bin/lttng/$LTTNG_BIN load $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
760 ok $? "Load command successful"
761 }
762
763 function trace_matches ()
764 {
765 local event_name=$1
766 local nr_iter=$2
767 local trace_path=$3
768
769 which $BABELTRACE_BIN >/dev/null
770 skip $? -ne 0 "Babeltrace binary not found. Skipping trace matches"
771
772 local count=$($BABELTRACE_BIN $trace_path | grep $event_name | wc -l)
773
774 if [ "$count" -ne "$nr_iter" ]; then
775 fail "Trace match"
776 diag "$count events found in trace"
777 else
778 pass "Trace match"
779 fi
780 }
781
782 function trace_match_only()
783 {
784 local event_name=$1
785 local nr_iter=$2
786 local trace_path=$3
787
788 which $BABELTRACE_BIN >/dev/null
789 skip $? -ne 0 "Babeltrace binary not found. Skipping trace matches"
790
791 local count=$($BABELTRACE_BIN $trace_path | grep $event_name | wc -l)
792 local total=$($BABELTRACE_BIN $trace_path | wc -l)
793
794 if [ "$nr_iter" -eq "$count" ] && [ "$total" -eq "$nr_iter" ]; then
795 pass "Trace match with $total event $event_name"
796 else
797 fail "Trace match"
798 diag "$total event(s) found, expecting $nr_iter of event $event_name and only found $count"
799 fi
800 }
801
802 function validate_trace
803 {
804 local event_name=$1
805 local trace_path=$2
806
807 which $BABELTRACE_BIN >/dev/null
808 if [ $? -ne 0 ]; then
809 skip 0 "Babeltrace binary not found. Skipping trace validation"
810 fi
811
812 OLDIFS=$IFS
813 IFS=","
814 for i in $event_name; do
815 traced=$($BABELTRACE_BIN $trace_path 2>/dev/null | grep $i | wc -l)
816 if [ "$traced" -ne 0 ]; then
817 pass "Validate trace for event $i, $traced events"
818 else
819 fail "Validate trace for event $i"
820 diag "Found $traced occurences of $i"
821 fi
822 done
823 ret=$?
824 IFS=$OLDIFS
825 return $ret
826 }
827
828 function validate_trace_exp()
829 {
830 local event_exp=$1
831 local trace_path=$2
832
833 which $BABELTRACE_BIN >/dev/null
834 skip $? -ne 0 "Babeltrace binary not found. Skipping trace validation"
835
836 traced=$($BABELTRACE_BIN $trace_path 2>/dev/null | grep ${event_exp} | wc -l)
837 if [ "$traced" -ne 0 ]; then
838 pass "Validate trace for expression '${event_exp}', $traced events"
839 else
840 fail "Validate trace for expression '${event_exp}'"
841 diag "Found $traced occurences of '${event_exp}'"
842 fi
843 ret=$?
844 return $ret
845 }
846
847 function validate_trace_only_exp()
848 {
849 local event_exp=$1
850 local trace_path=$2
851
852 which $BABELTRACE_BIN >/dev/null
853 skip $? -ne 0 "Babeltrace binary not found. Skipping trace matches"
854
855 local count=$($BABELTRACE_BIN $trace_path | grep ${event_exp} | wc -l)
856 local total=$($BABELTRACE_BIN $trace_path | wc -l)
857
858 if [ "$count" -ne 0 ] && [ "$total" -eq "$count" ]; then
859 pass "Trace match with $total for expression '${event_exp}"
860 else
861 fail "Trace match"
862 diag "$total syscall event(s) found, only syscalls matching expression '${event_exp}' ($count occurrences) are expected"
863 fi
864 ret=$?
865 return $ret
866 }
867
868 function validate_trace_empty()
869 {
870 local trace_path=$1
871
872 which $BABELTRACE_BIN >/dev/null
873 if [ $? -ne 0 ]; then
874 skip 0 "Babeltrace binary not found. Skipping trace validation"
875 fi
876
877 traced=$($BABELTRACE_BIN $trace_path 2>/dev/null | wc -l)
878 if [ "$traced" -eq 0 ]; then
879 pass "Validate empty trace"
880 else
881 fail "Validate empty trace"
882 diag "Found $traced events in trace"
883 fi
884 ret=$?
885 return $ret
886 }
This page took 0.04712 seconds and 3 git commands to generate.