3 # Copyright (C) - 2012 David Goulet <dgoulet@efficios.com>
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.
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
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"
20 TESTDIR
=$CURDIR/..
/..
/..
21 SESSION_NAME
="wildcard-overlap"
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"
35 source $TESTDIR/utils
/utils.sh
37 # MUST set TESTDIR before calling those functions
44 diag
"Running application"
45 .
/demo-trace
>/dev
/null
2>&1
46 ok $?
"Application done"
51 # Ease our life a bit ;)
52 trace_match_demo1_events
()
54 trace_matches
"$DEMO_EVENT1" $NUM_DEMO1_EVENT $TRACE_PATH
55 trace_matches
"$DEMO_EVENT1_2" $NUM_DEMO1_EVENT $TRACE_PATH
58 # Ease our life a bit ;)
59 trace_match_all_demo_events
()
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
66 # Ease our life a bit ;)
67 trace_match_no_demo_events
()
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
75 # Expect all "demo" events, no duplicate.
76 test_enable_simple_wildcard
()
78 local event_wild1
="us*"
79 local event_wild2
="ust*"
81 diag
"Simple wildcard overlap"
83 enable_ust_lttng_event_ok
$SESSION_NAME "$event_wild1"
84 enable_ust_lttng_event_ok
$SESSION_NAME "$event_wild2"
86 start_lttng_tracing_ok
$SESSION_NAME
90 stop_lttng_tracing_ok
$SESSION_NAME
92 trace_match_all_demo_events
97 # Expect all "demo" events, no duplicate.
98 test_enable_wildcard_filter
()
100 local event_wild1
="us*"
101 local event_wild2
="ust*"
103 diag
"Wildcard overlap with filter"
105 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==1"
106 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==0"
108 start_lttng_tracing_ok
$SESSION_NAME
112 stop_lttng_tracing_ok
$SESSION_NAME
114 trace_match_all_demo_events
118 # Expect all "demo" events, no duplicate.
119 test_enable_wildcard_filter_2
()
121 local event_wild1
="us*"
122 local event_wild2
="ust*"
124 diag
"Wildcard overlap with filter 2"
126 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==0"
127 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==1"
129 start_lttng_tracing_ok
$SESSION_NAME
133 stop_lttng_tracing_ok
$SESSION_NAME
135 trace_match_all_demo_events
139 # Expect all "demo" events, no duplicate.
140 test_enable_wildcard_filter_3
()
142 local event_wild1
="us*"
143 local event_wild2
="ust*"
145 diag
"Wildcard overlap with filter 3"
147 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==1"
148 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==1"
150 start_lttng_tracing_ok
$SESSION_NAME
154 stop_lttng_tracing_ok
$SESSION_NAME
156 trace_match_all_demo_events
160 # Expected: No events.
161 test_enable_wildcard_filter_4
()
163 local event_wild1
="us*"
164 local event_wild2
="ust*"
166 diag
"Wildcard overlap with filter 4"
168 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==0"
169 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==0"
171 start_lttng_tracing_ok
$SESSION_NAME
175 stop_lttng_tracing_ok
$SESSION_NAME
177 trace_match_no_demo_events
181 # Expect all "demo" events, no duplicate.
182 test_enable_wildcard_filter_5
()
184 local event_wild1
="us*"
185 local event_wild2
="$DEMO_EVENT1"
187 diag
"Wildcard overlap with filter 5"
189 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==1"
190 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==0"
192 start_lttng_tracing_ok
$SESSION_NAME
196 stop_lttng_tracing_ok
$SESSION_NAME
198 trace_match_all_demo_events
202 # Expect all $DEMO_EVENT1 events, no duplicate.
203 test_enable_wildcard_filter_6
()
205 local event_wild1
="us*"
206 local event_wild2
="$DEMO_EVENT1"
208 diag
"Wildcard overlap with filter 6"
210 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==0"
211 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==1"
213 start_lttng_tracing_ok
$SESSION_NAME
217 stop_lttng_tracing_ok
$SESSION_NAME
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
226 # Expect all events, no duplicate.
227 test_enable_wildcard_filter_7
()
229 local event_wild1
="us*"
230 local event_wild2
="$DEMO_EVENT1"
232 diag
"Wildcard overlap with filter 7"
234 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==1"
235 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==1"
237 start_lttng_tracing_ok
$SESSION_NAME
241 stop_lttng_tracing_ok
$SESSION_NAME
243 trace_match_all_demo_events
247 # Expected: No events.
248 test_enable_wildcard_filter_8
()
250 local event_wild1
="us*"
251 local event_wild2
="$DEMO_EVENT1"
253 diag
"Wildcard overlap with filter 8"
255 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==0"
256 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==0"
258 start_lttng_tracing_ok
$SESSION_NAME
262 stop_lttng_tracing_ok
$SESSION_NAME
264 trace_match_no_demo_events
269 test_enable_same_wildcard_filter
()
271 local event_wild1
="ust*"
272 local event_wild2
="ust*"
274 diag
"Same wildcard overlap with filter"
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"
279 start_lttng_tracing_ok
$SESSION_NAME
283 stop_lttng_tracing_ok
$SESSION_NAME
285 trace_match_all_demo_events
290 test_enable_same_wildcard_filter_2
()
292 local event_wild1
="ust*"
293 local event_wild2
="ust*"
295 diag
"Same wildcard overlap with filter 2"
297 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==1"
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"
304 fail
"Enable event $event_name with filtering for session $sess_name twice failure NOT detected"
307 start_lttng_tracing_ok
$SESSION_NAME
311 stop_lttng_tracing_ok
$SESSION_NAME
313 trace_match_all_demo_events
318 test_enable_same_wildcard_filter_3
()
320 local event_wild1
="ust*"
321 local event_wild2
="ust*"
323 diag
"Same wildcard overlap with filter 3"
325 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==1"
326 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==0"
328 start_lttng_tracing_ok
$SESSION_NAME
332 stop_lttng_tracing_ok
$SESSION_NAME
334 trace_match_all_demo_events
338 # Expected: No events.
339 test_enable_same_wildcard_filter_4
()
341 local event_wild1
="ust*"
342 local event_wild2
="ust*"
344 diag
"Same wildcard overlap with filter 4"
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"
349 start_lttng_tracing_ok
$SESSION_NAME
353 stop_lttng_tracing_ok
$SESSION_NAME
355 trace_match_no_demo_events
359 # Expected: Only $DEMO_EVENT1
360 test_enable_same_event_filter
()
362 local event_wild1
="$DEMO_EVENT1"
363 local event_wild2
="$DEMO_EVENT1"
365 diag
"Enable same event with filter."
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"
370 start_lttng_tracing_ok
$SESSION_NAME
374 stop_lttng_tracing_ok
$SESSION_NAME
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
383 # Expected: No events.
384 test_disable_same_wildcard_filter
()
386 local event_wild1
="ust*"
387 local event_wild2
="ust*"
389 diag
"Disable same wildcard with filter."
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"
394 disable_ust_lttng_event
$SESSION_NAME "ust*"
396 start_lttng_tracing_ok
$SESSION_NAME
400 stop_lttng_tracing_ok
$SESSION_NAME
402 trace_match_no_demo_events
407 test_enable_bad_wildcard
()
410 local event_wild1
="ust_tests_demo"
411 local event_wild2
="ust_tests_demo2"
412 local event_wild3
="ust_tests_demo3"
414 diag
"Enable bad wildcard"
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"
420 start_lttng_tracing_ok
$SESSION_NAME
424 stop_lttng_tracing_ok
$SESSION_NAME
426 trace_match_no_demo_events
430 # Expect all "demo" events, no duplicate.
431 test_enable_simple_wildcard_2
()
433 local event_wild1
="us*"
434 local event_wild2
="$DEMO_EVENT1"
436 diag
"Simple wildcard 2"
438 enable_ust_lttng_event_ok
$SESSION_NAME "$event_wild1"
439 enable_ust_lttng_event_ok
$SESSION_NAME "$event_wild2"
441 start_lttng_tracing_ok
$SESSION_NAME
445 stop_lttng_tracing_ok
$SESSION_NAME
447 trace_match_all_demo_events
451 # Expected: all CRIT events, + all warning events.
452 test_enable_loglevel_overlap
()
454 local event_wild1
="us*"
455 local event_wild2
="ust*"
457 diag
"Enable loglevel overlap"
459 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild1" "TRACE_WARNING"
460 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild2" "TRACE_CRIT"
462 start_lttng_tracing_ok
$SESSION_NAME
466 stop_lttng_tracing_ok
$SESSION_NAME
468 trace_match_all_demo_events
472 # Expected: all CRIT events, + all warning events.
473 test_enable_loglevel_only_overlap
()
475 local event_wild1
="us*"
476 local event_wild2
="ust*"
478 diag
"Enable loglevel only overlap"
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"
483 start_lttng_tracing_ok
$SESSION_NAME
487 stop_lttng_tracing_ok
$SESSION_NAME
489 trace_match_all_demo_events
493 # Expected: all events
494 test_enable_loglevel_overlap_2
()
496 local event_wild1
="us*"
497 local event_wild2
="$DEMO_EVENT2"
499 diag
"Enable loglevel overlap 2"
501 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild1" "TRACE_WARNING"
502 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild2" "TRACE_CRIT"
504 start_lttng_tracing_ok
$SESSION_NAME
508 stop_lttng_tracing_ok
$SESSION_NAME
510 trace_match_all_demo_events
514 # Expected only ust_tests_demo* events.
515 test_enable_same_wildcard_loglevels
()
517 local event_wild1
="ust*"
518 local event_wild2
="ust*"
520 diag
"Enable same wildcard with different loglevels"
522 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild1" "TRACE_CRIT"
523 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild2" "TRACE_WARNING"
525 start_lttng_tracing_ok
$SESSION_NAME
529 stop_lttng_tracing_ok
$SESSION_NAME
531 trace_match_all_demo_events
535 # Expected only ust_tests_demo:starting events.
536 test_enable_same_event_loglevels
()
538 local event_wild1
="$DEMO_EVENT1"
539 local event_wild2
="$DEMO_EVENT1"
541 diag
"Enable same event with different loglevels"
543 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild1" "TRACE_CRIT"
544 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild2" "TRACE_WARNING"
546 start_lttng_tracing_ok
$SESSION_NAME
550 stop_lttng_tracing_ok
$SESSION_NAME
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
560 test_disable_simple_wildcard
()
562 local event_wild1
="us*"
563 local event_wild2
="$DEMO_EVENT1"
565 diag
"Disable simple wildcard"
567 enable_ust_lttng_event_ok
$SESSION_NAME "$event_wild1"
568 enable_ust_lttng_event_ok
$SESSION_NAME "$event_wild2"
570 disable_ust_lttng_event
$SESSION_NAME "$event_wild1"
571 disable_ust_lttng_event
$SESSION_NAME "$event_wild2"
573 start_lttng_tracing_ok
$SESSION_NAME
577 stop_lttng_tracing_ok
$SESSION_NAME
579 # No events are expected.
580 trace_match_no_demo_events
584 # Expect only "ust_tests_demo" events.
585 test_disable_wildcard_overlap
()
587 local event_wild1
="us*"
588 local event_wild2
="$DEMO_EVENT1"
590 diag
"Disable wildcard overlap"
592 enable_ust_lttng_event_ok
$SESSION_NAME "$event_wild1"
593 enable_ust_lttng_event_ok
$SESSION_NAME "$event_wild2"
595 disable_ust_lttng_event
$SESSION_NAME "$event_wild1"
597 start_lttng_tracing_ok
$SESSION_NAME
601 stop_lttng_tracing_ok
$SESSION_NAME
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
611 plan_tests
$NUM_TESTS
613 print_test_banner
"$TEST_DESC"
615 if [ -x "$CURDIR/demo/demo" ]; then
621 skip
$foundbin "No UST nevents binary detected. Skipping all tests." $NUM_TESTS && exit 0
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"
649 TEST_COUNT
=${#TESTS[@]}
654 while [ "$i" -lt "$TEST_COUNT" ]; do
656 TRACE_PATH
=$
(mktemp
-d)
658 create_lttng_session_ok
$SESSION_NAME $TRACE_PATH
663 destroy_lttng_session_ok
$SESSION_NAME