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