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