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 print_test_banner
"$TEST_DESC"
39 if [ ! -x "$CURDIR/demo/demo" ]; then
40 BAIL_OUT
"No UST nevents binary detected."
43 # MUST set TESTDIR before calling those functions
50 .
/demo-trace
>/dev
/null
2>&1
51 ok $?
"Start application"
56 # Ease our life a bit ;)
57 trace_match_demo1_events
()
59 trace_matches
"$DEMO_EVENT1" $NUM_DEMO1_EVENT $TRACE_PATH
60 trace_matches
"$DEMO_EVENT1_2" $NUM_DEMO1_EVENT $TRACE_PATH
63 # Ease our life a bit ;)
64 trace_match_all_demo_events
()
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
71 # Ease our life a bit ;)
72 trace_match_no_demo_events
()
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
80 # Expect all "demo" events, no duplicate.
81 test_enable_simple_wildcard
()
83 local event_wild1
="us*"
84 local event_wild2
="ust*"
86 diag
"Simple wildcard overlap"
88 enable_ust_lttng_event
$SESSION_NAME "$event_wild1"
89 enable_ust_lttng_event
$SESSION_NAME "$event_wild2"
91 start_lttng_tracing
$SESSION_NAME
95 stop_lttng_tracing
$SESSION_NAME
97 trace_match_all_demo_events
102 # Expect all "demo" events, no duplicate.
103 test_enable_wildcard_filter
()
105 local event_wild1
="us*"
106 local event_wild2
="ust*"
108 diag
"Wildcard overlap with filter"
110 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==1"
111 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==0"
113 start_lttng_tracing
$SESSION_NAME
117 stop_lttng_tracing
$SESSION_NAME
119 trace_match_all_demo_events
123 # Expect all "demo" events, no duplicate.
124 test_enable_wildcard_filter_2
()
126 local event_wild1
="us*"
127 local event_wild2
="ust*"
129 diag
"Wildcard overlap with filter 2"
131 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==0"
132 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==1"
134 start_lttng_tracing
$SESSION_NAME
138 stop_lttng_tracing
$SESSION_NAME
140 trace_match_all_demo_events
144 # Expect all "demo" events, no duplicate.
145 test_enable_wildcard_filter_3
()
147 local event_wild1
="us*"
148 local event_wild2
="ust*"
150 diag
"Wildcard overlap with filter 3"
152 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==1"
153 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==1"
155 start_lttng_tracing
$SESSION_NAME
159 stop_lttng_tracing
$SESSION_NAME
161 trace_match_all_demo_events
165 # Expected: No events.
166 test_enable_wildcard_filter_4
()
168 local event_wild1
="us*"
169 local event_wild2
="ust*"
171 diag
"Wildcard overlap with filter 4"
173 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==0"
174 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==0"
176 start_lttng_tracing
$SESSION_NAME
180 stop_lttng_tracing
$SESSION_NAME
182 trace_match_no_demo_events
186 # Expect all "demo" events, no duplicate.
187 test_enable_wildcard_filter_5
()
189 local event_wild1
="us*"
190 local event_wild2
="$DEMO_EVENT1"
192 diag
"Wildcard overlap with filter 5"
194 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==1"
195 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==0"
197 start_lttng_tracing
$SESSION_NAME
201 stop_lttng_tracing
$SESSION_NAME
203 trace_match_all_demo_events
207 # Expect all $DEMO_EVENT1 events, no duplicate.
208 test_enable_wildcard_filter_6
()
210 local event_wild1
="us*"
211 local event_wild2
="$DEMO_EVENT1"
213 diag
"Wildcard overlap with filter 6"
215 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==0"
216 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==1"
218 start_lttng_tracing
$SESSION_NAME
222 stop_lttng_tracing
$SESSION_NAME
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
231 # Expect all events, no duplicate.
232 test_enable_wildcard_filter_7
()
234 local event_wild1
="us*"
235 local event_wild2
="$DEMO_EVENT1"
237 diag
"Wildcard overlap with filter 7"
239 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==1"
240 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==1"
242 start_lttng_tracing
$SESSION_NAME
246 stop_lttng_tracing
$SESSION_NAME
248 trace_match_all_demo_events
252 # Expected: No events.
253 test_enable_wildcard_filter_8
()
255 local event_wild1
="us*"
256 local event_wild2
="$DEMO_EVENT1"
258 diag
"Wildcard overlap with filter 8"
260 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==0"
261 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==0"
263 start_lttng_tracing
$SESSION_NAME
267 stop_lttng_tracing
$SESSION_NAME
269 trace_match_no_demo_events
274 test_enable_same_wildcard_filter
()
276 local event_wild1
="ust*"
277 local event_wild2
="ust*"
279 diag
"Same wildcard overlap with filter"
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"
284 start_lttng_tracing
$SESSION_NAME
288 stop_lttng_tracing
$SESSION_NAME
290 trace_match_all_demo_events
295 test_enable_same_wildcard_filter_2
()
297 local event_wild1
="ust*"
298 local event_wild2
="ust*"
300 diag
"Same wildcard overlap with filter 2"
302 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==1"
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"
309 fail
"Enable event $event_name with filtering for session $sess_name twice failure NOT detected"
312 start_lttng_tracing
$SESSION_NAME
316 stop_lttng_tracing
$SESSION_NAME
318 trace_match_all_demo_events
323 test_enable_same_wildcard_filter_3
()
325 local event_wild1
="ust*"
326 local event_wild2
="ust*"
328 diag
"Same wildcard overlap with filter 3"
330 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==1"
331 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==0"
333 start_lttng_tracing
$SESSION_NAME
337 stop_lttng_tracing
$SESSION_NAME
339 trace_match_all_demo_events
343 # Expected: No events.
344 test_enable_same_wildcard_filter_4
()
346 local event_wild1
="ust*"
347 local event_wild2
="ust*"
349 diag
"Same wildcard overlap with filter 4"
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"
354 start_lttng_tracing
$SESSION_NAME
358 stop_lttng_tracing
$SESSION_NAME
360 trace_match_no_demo_events
364 # Expected: Only $DEMO_EVENT1
365 test_enable_same_event_filter
()
367 local event_wild1
="$DEMO_EVENT1"
368 local event_wild2
="$DEMO_EVENT1"
370 diag
"Enable same event with filter."
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"
375 start_lttng_tracing
$SESSION_NAME
379 stop_lttng_tracing
$SESSION_NAME
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
388 # Expected: No events.
389 test_disable_same_wildcard_filter
()
391 local event_wild1
="ust*"
392 local event_wild2
="ust*"
394 diag
"Disable same wildcard with filter."
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"
399 disable_ust_lttng_event
$SESSION_NAME "ust*"
401 start_lttng_tracing
$SESSION_NAME
405 stop_lttng_tracing
$SESSION_NAME
407 trace_match_no_demo_events
412 test_enable_bad_wildcard
()
415 local event_wild1
="ust_tests_demo"
416 local event_wild2
="ust_tests_demo2"
417 local event_wild3
="ust_tests_demo3"
419 diag
"Enable bad wildcard"
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"
425 start_lttng_tracing
$SESSION_NAME
429 stop_lttng_tracing
$SESSION_NAME
431 trace_match_no_demo_events
435 # Expect all "demo" events, no duplicate.
436 test_enable_simple_wildcard_2
()
438 local event_wild1
="us*"
439 local event_wild2
="$DEMO_EVENT1"
441 diag
"Simple wildcard 2"
443 enable_ust_lttng_event
$SESSION_NAME "$event_wild1"
444 enable_ust_lttng_event
$SESSION_NAME "$event_wild2"
446 start_lttng_tracing
$SESSION_NAME
450 stop_lttng_tracing
$SESSION_NAME
452 trace_match_all_demo_events
456 # Expected: all CRIT events, + all warning events.
457 test_enable_loglevel_overlap
()
459 local event_wild1
="us*"
460 local event_wild2
="ust*"
462 diag
"Enable loglevel overlap"
464 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild1" "TRACE_WARNING"
465 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild2" "TRACE_CRIT"
467 start_lttng_tracing
$SESSION_NAME
471 stop_lttng_tracing
$SESSION_NAME
473 trace_match_all_demo_events
477 # Expected: all CRIT events, + all warning events.
478 test_enable_loglevel_only_overlap
()
480 local event_wild1
="us*"
481 local event_wild2
="ust*"
483 diag
"Enable loglevel only overlap"
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"
488 start_lttng_tracing
$SESSION_NAME
492 stop_lttng_tracing
$SESSION_NAME
494 trace_match_all_demo_events
498 # Expected: all events
499 test_enable_loglevel_overlap_2
()
501 local event_wild1
="us*"
502 local event_wild2
="$DEMO_EVENT2"
504 diag
"Enable loglevel overlap 2"
506 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild1" "TRACE_WARNING"
507 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild2" "TRACE_CRIT"
509 start_lttng_tracing
$SESSION_NAME
513 stop_lttng_tracing
$SESSION_NAME
515 trace_match_all_demo_events
519 # Expected only ust_tests_demo* events.
520 test_enable_same_wildcard_loglevels
()
522 local event_wild1
="ust*"
523 local event_wild2
="ust*"
525 diag
"Enable same wildcard with different loglevels"
527 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild1" "TRACE_CRIT"
528 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild2" "TRACE_WARNING"
530 start_lttng_tracing
$SESSION_NAME
534 stop_lttng_tracing
$SESSION_NAME
536 trace_match_all_demo_events
540 # Expected only ust_tests_demo:starting events.
541 test_enable_same_event_loglevels
()
543 local event_wild1
="$DEMO_EVENT1"
544 local event_wild2
="$DEMO_EVENT1"
546 diag
"Enable same event with different loglevels"
548 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild1" "TRACE_CRIT"
549 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild2" "TRACE_WARNING"
551 start_lttng_tracing
$SESSION_NAME
555 stop_lttng_tracing
$SESSION_NAME
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
565 test_disable_simple_wildcard
()
567 local event_wild1
="us*"
568 local event_wild2
="$DEMO_EVENT1"
570 diag
"Disable simple wildcard"
572 enable_ust_lttng_event
$SESSION_NAME "$event_wild1"
573 enable_ust_lttng_event
$SESSION_NAME "$event_wild2"
575 disable_ust_lttng_event
$SESSION_NAME "$event_wild1"
576 disable_ust_lttng_event
$SESSION_NAME "$event_wild2"
578 start_lttng_tracing
$SESSION_NAME
582 stop_lttng_tracing
$SESSION_NAME
584 # No events are expected.
585 trace_match_no_demo_events
589 # Expect only "ust_tests_demo" events.
590 test_disable_wildcard_overlap
()
592 local event_wild1
="us*"
593 local event_wild2
="$DEMO_EVENT1"
595 diag
"Disable wildcard overlap"
597 enable_ust_lttng_event
$SESSION_NAME "$event_wild1"
598 enable_ust_lttng_event
$SESSION_NAME "$event_wild2"
600 disable_ust_lttng_event
$SESSION_NAME "$event_wild1"
602 start_lttng_tracing
$SESSION_NAME
606 stop_lttng_tracing
$SESSION_NAME
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
616 plan_tests
$NUM_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"
644 TEST_COUNT
=${#TESTS[@]}
649 while [ "$i" -lt "$TEST_COUNT" ]; do
651 TRACE_PATH
=$
(mktemp
-d)
653 create_lttng_session
$SESSION_NAME $TRACE_PATH
658 destroy_lttng_session
$SESSION_NAME