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