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