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