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