6baf7c8786227a1427fa3e926b0172e2b6c3fd40
[lttng-tools.git] / tests / ust / overlap / overlap.sh
1 #!/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 TEST_DESC="UST - Wildcard overlap"
18
19 CURDIR=$(dirname $0)/
20 TESTDIR=$CURDIR/../..
21 SESSION_NAME="wildcard-overlap"
22
23 DEMO_EVENT1="ust_tests_demo:starting"
24 DEMO_EVENT1_2="ust_tests_demo:done"
25 DEMO_EVENT2="ust_tests_demo2:loop"
26 DEMO_EVENT3="ust_tests_demo3:done"
27
28 NUM_DEMO1_EVENT=1
29 NUM_DEMO1_2_EVENT=1
30 NUM_DEMO2_EVENT=5
31 NUM_DEMO3_EVENT=1
32
33 source $TESTDIR/utils.sh
34
35 print_test_banner "$TEST_DESC"
36
37 if [ ! -x "$CURDIR/demo/demo" ]; then
38 echo -e "No UST nevents binary detected. Passing."
39 exit 0
40 fi
41
42 # MUST set TESTDIR before calling those functions
43
44 run_demo_app()
45 {
46 local dir=`pwd`
47
48 cd $CURDIR/demo
49
50 # Start test
51 echo -n "Starting application... "
52 ./demo-trace >/dev/null 2>&1
53 echo -n "Ended "
54 print_ok
55
56 cd -
57 }
58
59 # Ease our life a bit ;)
60 trace_match_demo1_events()
61 {
62 trace_matches $DEMO_EVENT1 $NUM_DEMO1_EVENT $TRACE_PATH
63 trace_matches $DEMO_EVENT1_2 $NUM_DEMO1_EVENT $TRACE_PATH
64 }
65
66 # Ease our life a bit ;)
67 trace_match_all_demo_events()
68 {
69 trace_match_demo1_events
70 trace_matches $DEMO_EVENT2 $NUM_DEMO2_EVENT $TRACE_PATH
71 trace_matches $DEMO_EVENT3 $NUM_DEMO3_EVENT $TRACE_PATH
72 }
73
74 # Ease our life a bit ;)
75 trace_match_no_demo_events()
76 {
77 trace_matches $DEMO_EVENT1 0 $TRACE_PATH
78 trace_matches $DEMO_EVENT1_2 0 $TRACE_PATH
79 trace_matches $DEMO_EVENT2 0 $TRACE_PATH
80 trace_matches $DEMO_EVENT3 0 $TRACE_PATH
81 }
82
83 # Expect all "demo" events, no duplicate.
84 test_enable_simple_wildcard()
85 {
86 local event_wild1="us*"
87 local event_wild2="ust*"
88
89 echo ""
90 echo "=== Simple wildcard overlap"
91
92 enable_ust_lttng_event $SESSION_NAME $event_wild1
93 enable_ust_lttng_event $SESSION_NAME $event_wild2
94
95 start_lttng_tracing $SESSION_NAME >/dev/null 2>&1
96
97 run_demo_app
98
99 stop_lttng_tracing $SESSION_NAME >/dev/null 2>&1
100
101 trace_match_all_demo_events
102
103 return $?
104 }
105
106 # Expect all "demo" events, no duplicate.
107 test_enable_wildcard_filter()
108 {
109 local event_wild1="us*"
110 local event_wild2="ust*"
111
112 echo ""
113 echo "=== Wildcard overlap with filter"
114
115 enable_ust_lttng_event_filter $SESSION_NAME $event_wild1 "1==1"
116 enable_ust_lttng_event_filter $SESSION_NAME $event_wild2 "1==0"
117
118 start_lttng_tracing $SESSION_NAME >/dev/null 2>&1
119
120 run_demo_app
121
122 stop_lttng_tracing $SESSION_NAME >/dev/null 2>&1
123
124 trace_match_all_demo_events
125 return $?
126 }
127
128 # Expect all "demo" events, no duplicate.
129 test_enable_wildcard_filter_2()
130 {
131 local event_wild1="us*"
132 local event_wild2="ust*"
133
134 echo ""
135 echo "=== Wildcard overlap with filter 2"
136
137 enable_ust_lttng_event_filter $SESSION_NAME $event_wild1 "1==0"
138 enable_ust_lttng_event_filter $SESSION_NAME $event_wild2 "1==1"
139
140 start_lttng_tracing $SESSION_NAME >/dev/null 2>&1
141
142 run_demo_app
143
144 stop_lttng_tracing $SESSION_NAME >/dev/null 2>&1
145
146 trace_match_all_demo_events
147 return $?
148 }
149
150 # Expect all "demo" events, no duplicate.
151 test_enable_wildcard_filter_3()
152 {
153 local event_wild1="us*"
154 local event_wild2="ust*"
155
156 echo ""
157 echo "=== Wildcard overlap with filter 3"
158
159 enable_ust_lttng_event_filter $SESSION_NAME $event_wild1 "1==1"
160 enable_ust_lttng_event_filter $SESSION_NAME $event_wild2 "1==1"
161
162 start_lttng_tracing $SESSION_NAME >/dev/null 2>&1
163
164 run_demo_app
165
166 stop_lttng_tracing $SESSION_NAME >/dev/null 2>&1
167
168 trace_match_all_demo_events
169 return $?
170 }
171
172 # Expected: No events.
173 test_enable_wildcard_filter_4()
174 {
175 local event_wild1="us*"
176 local event_wild2="ust*"
177
178 echo ""
179 echo "=== Wildcard overlap with filter 4"
180
181 enable_ust_lttng_event_filter $SESSION_NAME $event_wild1 "1==0"
182 enable_ust_lttng_event_filter $SESSION_NAME $event_wild2 "1==0"
183
184 start_lttng_tracing $SESSION_NAME >/dev/null 2>&1
185
186 run_demo_app
187
188 stop_lttng_tracing $SESSION_NAME >/dev/null 2>&1
189
190 trace_match_no_demo_events
191 return $?
192 }
193
194 # Expect all "demo" events, no duplicate.
195 test_enable_wildcard_filter_5()
196 {
197 local event_wild1="us*"
198 local event_wild2="$DEMO_EVENT1"
199
200 echo ""
201 echo "=== Wildcard overlap with filter 5"
202
203 enable_ust_lttng_event_filter $SESSION_NAME $event_wild1 "1==1"
204 enable_ust_lttng_event_filter $SESSION_NAME $event_wild2 "1==0"
205
206 start_lttng_tracing $SESSION_NAME >/dev/null 2>&1
207
208 run_demo_app
209
210 stop_lttng_tracing $SESSION_NAME >/dev/null 2>&1
211
212 trace_match_all_demo_events
213 return $?
214 }
215
216 # Expect all $DEMO_EVENT1 events, no duplicate.
217 test_enable_wildcard_filter_6()
218 {
219 local event_wild1="us*"
220 local event_wild2="$DEMO_EVENT1"
221
222 echo ""
223 echo "=== Wildcard overlap with filter 6"
224
225 enable_ust_lttng_event_filter $SESSION_NAME $event_wild1 "1==0"
226 enable_ust_lttng_event_filter $SESSION_NAME $event_wild2 "1==1"
227
228 start_lttng_tracing $SESSION_NAME >/dev/null 2>&1
229
230 run_demo_app
231
232 stop_lttng_tracing $SESSION_NAME >/dev/null 2>&1
233
234 trace_matches $DEMO_EVENT1 $NUM_DEMO1_EVENT $TRACE_PATH
235 trace_matches $DEMO_EVENT1_2 0 $TRACE_PATH
236 trace_matches $DEMO_EVENT2 0 $TRACE_PATH
237 trace_matches $DEMO_EVENT3 0 $TRACE_PATH
238 return $?
239 }
240
241 # Expect all events, no duplicate.
242 test_enable_wildcard_filter_7()
243 {
244 local event_wild1="us*"
245 local event_wild2="$DEMO_EVENT1"
246
247 echo ""
248 echo "=== Wildcard overlap with filter 7"
249
250 enable_ust_lttng_event_filter $SESSION_NAME $event_wild1 "1==1"
251 enable_ust_lttng_event_filter $SESSION_NAME $event_wild2 "1==1"
252
253 start_lttng_tracing $SESSION_NAME >/dev/null 2>&1
254
255 run_demo_app
256
257 stop_lttng_tracing $SESSION_NAME >/dev/null 2>&1
258
259 trace_match_all_demo_events
260 return $?
261 }
262
263 # Expected: No events.
264 test_enable_wildcard_filter_8()
265 {
266 local event_wild1="us*"
267 local event_wild2="$DEMO_EVENT1"
268
269 echo ""
270 echo "=== Wildcard overlap with filter 8"
271
272 enable_ust_lttng_event_filter $SESSION_NAME $event_wild1 "1==0"
273 enable_ust_lttng_event_filter $SESSION_NAME $event_wild2 "1==0"
274
275 start_lttng_tracing $SESSION_NAME >/dev/null 2>&1
276
277 run_demo_app
278
279 stop_lttng_tracing $SESSION_NAME >/dev/null 2>&1
280
281 trace_match_no_demo_events
282 return $?
283 }
284
285 # Expect all events.
286 test_enable_same_wildcard_filter()
287 {
288 local event_wild1="ust*"
289 local event_wild2="ust*"
290
291 echo ""
292 echo "=== Same wildcard overlap with filter"
293
294 enable_ust_lttng_event_filter $SESSION_NAME $event_wild1 "1==1&&1==1"
295 enable_ust_lttng_event_filter $SESSION_NAME $event_wild2 "1==1"
296
297 start_lttng_tracing $SESSION_NAME >/dev/null 2>&1
298
299 run_demo_app
300
301 stop_lttng_tracing $SESSION_NAME >/dev/null 2>&1
302
303 trace_match_all_demo_events
304 return $?
305 }
306
307 # Expect all events.
308 test_enable_same_wildcard_filter_2()
309 {
310 local event_wild1="ust*"
311 local event_wild2="ust*"
312
313 echo ""
314 echo "=== Same wildcard overlap with filter 2"
315
316 enable_ust_lttng_event_filter $SESSION_NAME $event_wild1 "1==1"
317 enable_ust_lttng_event_filter $SESSION_NAME $event_wild2 "1==1"
318 if [ $? -eq 1 ]; then
319 echo -n "FAIL is normal. Same event with same filter is denied by the sessiond "
320 print_ok
321 else
322 print_fail
323 fi
324
325 start_lttng_tracing $SESSION_NAME >/dev/null 2>&1
326
327 run_demo_app
328
329 stop_lttng_tracing $SESSION_NAME >/dev/null 2>&1
330
331 trace_match_all_demo_events
332 return $?
333 }
334
335 # Expect all events.
336 test_enable_same_wildcard_filter_3()
337 {
338 local event_wild1="ust*"
339 local event_wild2="ust*"
340
341 echo ""
342 echo "=== Same wildcard overlap with filter 3"
343
344 enable_ust_lttng_event_filter $SESSION_NAME $event_wild1 "1==1"
345 enable_ust_lttng_event_filter $SESSION_NAME $event_wild2 "1==0"
346
347 start_lttng_tracing $SESSION_NAME >/dev/null 2>&1
348
349 run_demo_app
350
351 stop_lttng_tracing $SESSION_NAME >/dev/null 2>&1
352
353 trace_match_all_demo_events
354 return $?
355 }
356
357 # Expected: No events.
358 test_enable_same_wildcard_filter_4()
359 {
360 local event_wild1="ust*"
361 local event_wild2="ust*"
362
363 echo ""
364 echo "=== Same wildcard overlap with filter 4"
365
366 enable_ust_lttng_event_filter $SESSION_NAME $event_wild1 "1==0&&1==0"
367 enable_ust_lttng_event_filter $SESSION_NAME $event_wild2 "1==0"
368
369 start_lttng_tracing $SESSION_NAME >/dev/null 2>&1
370
371 run_demo_app
372
373 stop_lttng_tracing $SESSION_NAME >/dev/null 2>&1
374
375 trace_match_no_demo_events
376 return $?
377 }
378
379 # Expected: Only $DEMO_EVENT1
380 test_enable_same_event_filter()
381 {
382 local event_wild1="$DEMO_EVENT1"
383 local event_wild2="$DEMO_EVENT1"
384
385 echo ""
386 echo "=== Enable same event with filter."
387
388 enable_ust_lttng_event_filter $SESSION_NAME $event_wild1 "1==1&&1==1"
389 enable_ust_lttng_event_filter $SESSION_NAME $event_wild2 "1==1"
390
391 disable_ust_lttng_event $SESSION_NAME "ust*"
392
393 start_lttng_tracing $SESSION_NAME >/dev/null 2>&1
394
395 run_demo_app
396
397 stop_lttng_tracing $SESSION_NAME >/dev/null 2>&1
398
399 trace_matches $DEMO_EVENT1 $NUM_DEMO1_EVENT $TRACE_PATH
400 trace_matches $DEMO_EVENT1_2 0 $TRACE_PATH
401 trace_matches $DEMO_EVENT2 0 $TRACE_PATH
402 trace_matches $DEMO_EVENT3 0 $TRACE_PATH
403 return $?
404 }
405
406 # Expected: No events.
407 test_disable_same_wildcard_filter()
408 {
409 local event_wild1="ust*"
410 local event_wild2="ust*"
411
412 echo ""
413 echo "=== Disable same wildcard with filter."
414
415 enable_ust_lttng_event_filter $SESSION_NAME $event_wild1 "1==1&&1==1"
416 enable_ust_lttng_event_filter $SESSION_NAME $event_wild2 "1==1"
417
418 disable_ust_lttng_event $SESSION_NAME "ust*"
419
420 start_lttng_tracing $SESSION_NAME >/dev/null 2>&1
421
422 run_demo_app
423
424 stop_lttng_tracing $SESSION_NAME >/dev/null 2>&1
425
426 trace_match_no_demo_events
427 return $?
428 }
429
430 # Expect no events
431 test_enable_bad_wildcard()
432 {
433 # Invalid event
434 local event_wild1="ust_tests_demo"
435 local event_wild2="ust_tests_demo2"
436 local event_wild3="ust_tests_demo3"
437
438 echo ""
439 echo "=== Enable bad wildcard"
440
441 enable_ust_lttng_event $SESSION_NAME $event_wild1
442 enable_ust_lttng_event $SESSION_NAME $event_wild2
443 enable_ust_lttng_event $SESSION_NAME $event_wild3
444
445 start_lttng_tracing $SESSION_NAME >/dev/null 2>&1
446
447 run_demo_app
448
449 stop_lttng_tracing $SESSION_NAME >/dev/null 2>&1
450
451 trace_match_no_demo_events
452 return $?
453 }
454
455 # Expect all "demo" events, no duplicate.
456 test_enable_simple_wildcard_2()
457 {
458 local event_wild1="us*"
459 local event_wild2="$DEMO_EVENT1"
460
461 echo ""
462 echo "=== Simple wildcard 2"
463
464 enable_ust_lttng_event $SESSION_NAME $event_wild1
465 enable_ust_lttng_event $SESSION_NAME $event_wild2
466
467 start_lttng_tracing $SESSION_NAME >/dev/null 2>&1
468
469 run_demo_app
470
471 stop_lttng_tracing $SESSION_NAME >/dev/null 2>&1
472
473 trace_match_all_demo_events
474 return $?
475 }
476
477 # Expected: all CRIT events, + all warning events.
478 test_enable_loglevel_overlap()
479 {
480 local event_wild1="us*"
481 local event_wild2="ust*"
482
483 echo ""
484 echo "=== Enable loglevel overlap"
485
486 enable_ust_lttng_event_loglevel $SESSION_NAME "$event_wild1" "TRACE_WARNING"
487 enable_ust_lttng_event_loglevel $SESSION_NAME "$event_wild2" "TRACE_CRIT"
488
489 start_lttng_tracing $SESSION_NAME >/dev/null 2>&1
490
491 run_demo_app
492
493 stop_lttng_tracing $SESSION_NAME >/dev/null 2>&1
494
495 trace_match_all_demo_events
496 return $?
497 }
498
499 # Expected: all CRIT events, + all warning events.
500 test_enable_loglevel_only_overlap()
501 {
502 local event_wild1="us*"
503 local event_wild2="ust*"
504
505 echo ""
506 echo "=== Enable loglevel only overlap"
507
508 enable_ust_lttng_event_loglevel $SESSION_NAME "$event_wild1" "TRACE_WARNING"
509 enable_ust_lttng_event_loglevel_only $SESSION_NAME "$event_wild2" "TRACE_CRIT"
510
511 start_lttng_tracing $SESSION_NAME >/dev/null 2>&1
512
513 run_demo_app
514
515 stop_lttng_tracing $SESSION_NAME >/dev/null 2>&1
516
517 trace_match_all_demo_events
518 return $?
519 }
520
521 # Expected: all events
522 test_enable_loglevel_overlap_2()
523 {
524 local event_wild1="us*"
525 local event_wild2="$DEMO_EVENT2"
526
527 echo ""
528 echo "=== Enable loglevel overlap 2"
529
530 enable_ust_lttng_event_loglevel $SESSION_NAME "$event_wild1" "TRACE_WARNING"
531 enable_ust_lttng_event_loglevel $SESSION_NAME "$event_wild2" "TRACE_CRIT"
532
533 start_lttng_tracing $SESSION_NAME >/dev/null 2>&1
534
535 run_demo_app
536
537 stop_lttng_tracing $SESSION_NAME >/dev/null 2>&1
538
539 trace_match_all_demo_events
540 return $?
541 }
542
543 # Expected only ust_tests_demo* events.
544 test_enable_same_wildcard_loglevels()
545 {
546 local event_wild1="ust*"
547 local event_wild2="ust*"
548
549 echo ""
550 echo "=== Enable same wildcard with different loglevels"
551
552 enable_ust_lttng_event_loglevel $SESSION_NAME "$event_wild1" "TRACE_CRIT"
553 enable_ust_lttng_event_loglevel $SESSION_NAME "$event_wild2" "TRACE_WARNING"
554
555 start_lttng_tracing $SESSION_NAME >/dev/null 2>&1
556
557 run_demo_app
558
559 stop_lttng_tracing $SESSION_NAME >/dev/null 2>&1
560
561 trace_match_all_demo_events
562 return $?
563 }
564
565 # Expected only ust_tests_demo:starting events.
566 test_enable_same_event_loglevels()
567 {
568 local event_wild1="$DEMO_EVENT1"
569 local event_wild2="$DEMO_EVENT1"
570
571 echo ""
572 echo "=== Enable same event with different loglevels"
573
574 enable_ust_lttng_event_loglevel $SESSION_NAME "$event_wild1" "TRACE_CRIT"
575 enable_ust_lttng_event_loglevel $SESSION_NAME "$event_wild2" "TRACE_WARNING"
576
577 start_lttng_tracing $SESSION_NAME >/dev/null 2>&1
578
579 run_demo_app
580
581 stop_lttng_tracing $SESSION_NAME >/dev/null 2>&1
582
583 trace_matches $DEMO_EVENT1 $NUM_DEMO1_EVENT $TRACE_PATH
584 trace_matches $DEMO_EVENT1_2 0 $TRACE_PATH
585 trace_matches $DEMO_EVENT2 0 $TRACE_PATH
586 trace_matches $DEMO_EVENT3 0 $TRACE_PATH
587 return $?
588 }
589
590 # Expect 0 event
591 test_disable_simple_wildcard()
592 {
593 local event_wild1="us*"
594 local event_wild2="$DEMO_EVENT1"
595
596 echo ""
597 echo "=== Disable simple wildcard"
598
599 enable_ust_lttng_event $SESSION_NAME $event_wild1
600 enable_ust_lttng_event $SESSION_NAME $event_wild2
601
602 disable_ust_lttng_event $SESSION_NAME $event_wild1
603 disable_ust_lttng_event $SESSION_NAME $event_wild2
604
605 start_lttng_tracing $SESSION_NAME >/dev/null 2>&1
606
607 run_demo_app
608
609 stop_lttng_tracing $SESSION_NAME >/dev/null 2>&1
610
611 # No events are expected.
612 trace_match_no_demo_events
613 return $?
614 }
615
616 # Expect only "ust_tests_demo" events.
617 test_disable_wildcard_overlap()
618 {
619 local event_wild1="us*"
620 local event_wild2="$DEMO_EVENT1"
621
622 echo ""
623 echo "=== Disable wildcard overlap"
624
625 enable_ust_lttng_event $SESSION_NAME $event_wild1
626 enable_ust_lttng_event $SESSION_NAME $event_wild2
627
628 disable_ust_lttng_event $SESSION_NAME $event_wild1
629
630 start_lttng_tracing $SESSION_NAME >/dev/null 2>&1
631
632 run_demo_app
633
634 stop_lttng_tracing $SESSION_NAME >/dev/null 2>&1
635
636 # Expect only "ust_tests_demo" events.
637 trace_matches $DEMO_EVENT1 $NUM_DEMO1_EVENT $TRACE_PATH
638 trace_matches $DEMO_EVENT1_2 0 $TRACE_PATH
639 trace_matches $DEMO_EVENT2 0 $TRACE_PATH
640 trace_matches $DEMO_EVENT3 0 $TRACE_PATH
641 return $?
642 }
643
644 TESTS=(
645 "test_enable_wildcard_filter"
646 "test_enable_wildcard_filter_2"
647 "test_enable_wildcard_filter_3"
648 "test_enable_wildcard_filter_4"
649 "test_enable_wildcard_filter_5"
650 "test_enable_wildcard_filter_6"
651 "test_enable_wildcard_filter_7"
652 "test_enable_wildcard_filter_8"
653 "test_enable_same_wildcard_filter"
654 "test_enable_same_wildcard_filter_2"
655 "test_enable_same_wildcard_filter_3"
656 "test_enable_same_wildcard_filter_4"
657 "test_enable_same_event_filter"
658 "test_enable_loglevel_only_overlap"
659 "test_enable_same_event_loglevels"
660 "test_enable_same_wildcard_loglevels"
661 "test_enable_bad_wildcard"
662 "test_enable_loglevel_overlap_2"
663 "test_enable_simple_wildcard"
664 "test_enable_simple_wildcard_2"
665 "test_enable_loglevel_overlap"
666 "test_disable_simple_wildcard"
667 "test_disable_wildcard_overlap"
668 )
669
670 TEST_COUNT=${#TESTS[@]}
671 i=0
672
673 start_lttng_sessiond
674
675 while [ "$i" -lt "$TEST_COUNT" ]; do
676
677 TRACE_PATH=$(mktemp -d)
678
679 create_lttng_session $SESSION_NAME $TRACE_PATH >/dev/null 2>&1
680
681 # Execute test
682 ${TESTS[$i]}
683 if [ $? -ne 0 ]; then
684 stop_lttng_sessiond
685 exit 1
686 fi
687
688 destroy_lttng_session $SESSION_NAME >/dev/null 2>&1
689
690 rm -rf $TRACE_PATH
691
692 let "i++"
693 done
694
695 stop_lttng_sessiond
This page took 0.041905 seconds and 3 git commands to generate.