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"
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"
33 source $TESTDIR/utils.sh
35 print_test_banner
"$TEST_DESC"
37 if [ ! -x "$CURDIR/demo/demo" ]; then
38 echo -e "No UST nevents binary detected. Passing."
42 # MUST set TESTDIR before calling those functions
49 echo -n "Starting application... "
50 .
/demo-trace
>/dev
/null
2>&1
57 # Ease our life a bit ;)
58 trace_match_demo1_events
()
60 trace_matches
"$DEMO_EVENT1" $NUM_DEMO1_EVENT $TRACE_PATH
61 trace_matches
"$DEMO_EVENT1_2" $NUM_DEMO1_EVENT $TRACE_PATH
64 # Ease our life a bit ;)
65 trace_match_all_demo_events
()
67 trace_match_demo1_events
68 trace_matches
"$DEMO_EVENT2" $NUM_DEMO2_EVENT $TRACE_PATH
69 trace_matches
"$DEMO_EVENT3" $NUM_DEMO3_EVENT $TRACE_PATH
72 # Ease our life a bit ;)
73 trace_match_no_demo_events
()
75 trace_matches
"$DEMO_EVENT1" 0 $TRACE_PATH
76 trace_matches
"$DEMO_EVENT1_2" 0 $TRACE_PATH
77 trace_matches
"$DEMO_EVENT2" 0 $TRACE_PATH
78 trace_matches
"$DEMO_EVENT3" 0 $TRACE_PATH
81 # Expect all "demo" events, no duplicate.
82 test_enable_simple_wildcard
()
84 local event_wild1
="us*"
85 local event_wild2
="ust*"
88 echo "=== Simple wildcard overlap"
90 enable_ust_lttng_event
$SESSION_NAME "$event_wild1"
91 enable_ust_lttng_event
$SESSION_NAME "$event_wild2"
93 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
97 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
99 trace_match_all_demo_events
104 # Expect all "demo" events, no duplicate.
105 test_enable_wildcard_filter
()
107 local event_wild1
="us*"
108 local event_wild2
="ust*"
111 echo "=== Wildcard overlap with filter"
113 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==1"
114 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==0"
116 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
120 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
122 trace_match_all_demo_events
126 # Expect all "demo" events, no duplicate.
127 test_enable_wildcard_filter_2
()
129 local event_wild1
="us*"
130 local event_wild2
="ust*"
133 echo "=== Wildcard overlap with filter 2"
135 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==0"
136 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==1"
138 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
142 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
144 trace_match_all_demo_events
148 # Expect all "demo" events, no duplicate.
149 test_enable_wildcard_filter_3
()
151 local event_wild1
="us*"
152 local event_wild2
="ust*"
155 echo "=== Wildcard overlap with filter 3"
157 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==1"
158 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==1"
160 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
164 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
166 trace_match_all_demo_events
170 # Expected: No events.
171 test_enable_wildcard_filter_4
()
173 local event_wild1
="us*"
174 local event_wild2
="ust*"
177 echo "=== Wildcard overlap with filter 4"
179 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==0"
180 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==0"
182 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
186 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
188 trace_match_no_demo_events
192 # Expect all "demo" events, no duplicate.
193 test_enable_wildcard_filter_5
()
195 local event_wild1
="us*"
196 local event_wild2
="$DEMO_EVENT1"
199 echo "=== Wildcard overlap with filter 5"
201 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==1"
202 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==0"
204 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
208 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
210 trace_match_all_demo_events
214 # Expect all $DEMO_EVENT1 events, no duplicate.
215 test_enable_wildcard_filter_6
()
217 local event_wild1
="us*"
218 local event_wild2
="$DEMO_EVENT1"
221 echo "=== Wildcard overlap with filter 6"
223 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==0"
224 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==1"
226 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
230 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
232 trace_matches
$DEMO_EVENT1 $NUM_DEMO1_EVENT $TRACE_PATH
233 trace_matches
$DEMO_EVENT1_2 0 $TRACE_PATH
234 trace_matches
$DEMO_EVENT2 0 $TRACE_PATH
235 trace_matches
$DEMO_EVENT3 0 $TRACE_PATH
239 # Expect all events, no duplicate.
240 test_enable_wildcard_filter_7
()
242 local event_wild1
="us*"
243 local event_wild2
="$DEMO_EVENT1"
246 echo "=== Wildcard overlap with filter 7"
248 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==1"
249 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==1"
251 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
255 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
257 trace_match_all_demo_events
261 # Expected: No events.
262 test_enable_wildcard_filter_8
()
264 local event_wild1
="us*"
265 local event_wild2
="$DEMO_EVENT1"
268 echo "=== Wildcard overlap with filter 8"
270 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==0"
271 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==0"
273 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
277 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
279 trace_match_no_demo_events
284 test_enable_same_wildcard_filter
()
286 local event_wild1
="ust*"
287 local event_wild2
="ust*"
290 echo "=== Same wildcard overlap with filter"
292 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==1&&1==1"
293 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==1"
295 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
299 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
301 trace_match_all_demo_events
306 test_enable_same_wildcard_filter_2
()
308 local event_wild1
="ust*"
309 local event_wild2
="ust*"
312 echo "=== Same wildcard overlap with filter 2"
314 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==1"
315 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==1"
316 if [ $?
-eq 1 ]; then
317 echo -n "FAIL is normal. Same event with same filter is denied by the sessiond "
323 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
327 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
329 trace_match_all_demo_events
334 test_enable_same_wildcard_filter_3
()
336 local event_wild1
="ust*"
337 local event_wild2
="ust*"
340 echo "=== Same wildcard overlap with filter 3"
342 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==1"
343 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==0"
345 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
349 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
351 trace_match_all_demo_events
355 # Expected: No events.
356 test_enable_same_wildcard_filter_4
()
358 local event_wild1
="ust*"
359 local event_wild2
="ust*"
362 echo "=== Same wildcard overlap with filter 4"
364 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==0&&1==0"
365 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==0"
367 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
371 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
373 trace_match_no_demo_events
377 # Expected: Only $DEMO_EVENT1
378 test_enable_same_event_filter
()
380 local event_wild1
="$DEMO_EVENT1"
381 local event_wild2
="$DEMO_EVENT1"
384 echo "=== Enable same event with filter."
386 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==1&&1==1"
387 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==1"
389 disable_ust_lttng_event
$SESSION_NAME "ust*"
391 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
395 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
397 trace_matches
$DEMO_EVENT1 $NUM_DEMO1_EVENT $TRACE_PATH
398 trace_matches
$DEMO_EVENT1_2 0 $TRACE_PATH
399 trace_matches
$DEMO_EVENT2 0 $TRACE_PATH
400 trace_matches
$DEMO_EVENT3 0 $TRACE_PATH
404 # Expected: No events.
405 test_disable_same_wildcard_filter
()
407 local event_wild1
="ust*"
408 local event_wild2
="ust*"
411 echo "=== Disable same wildcard with filter."
413 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild1" "1==1&&1==1"
414 enable_ust_lttng_event_filter
$SESSION_NAME "$event_wild2" "1==1"
416 disable_ust_lttng_event
$SESSION_NAME "ust*"
418 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
422 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
424 trace_match_no_demo_events
429 test_enable_bad_wildcard
()
432 local event_wild1
="ust_tests_demo"
433 local event_wild2
="ust_tests_demo2"
434 local event_wild3
="ust_tests_demo3"
437 echo "=== Enable bad wildcard"
439 enable_ust_lttng_event
$SESSION_NAME "$event_wild1"
440 enable_ust_lttng_event
$SESSION_NAME "$event_wild2"
441 enable_ust_lttng_event
$SESSION_NAME "$event_wild3"
443 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
447 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
449 trace_match_no_demo_events
453 # Expect all "demo" events, no duplicate.
454 test_enable_simple_wildcard_2
()
456 local event_wild1
="us*"
457 local event_wild2
="$DEMO_EVENT1"
460 echo "=== Simple wildcard 2"
462 enable_ust_lttng_event
$SESSION_NAME "$event_wild1"
463 enable_ust_lttng_event
$SESSION_NAME "$event_wild2"
465 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
469 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
471 trace_match_all_demo_events
475 # Expected: all CRIT events, + all warning events.
476 test_enable_loglevel_overlap
()
478 local event_wild1
="us*"
479 local event_wild2
="ust*"
482 echo "=== Enable loglevel overlap"
484 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild1" "TRACE_WARNING"
485 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild2" "TRACE_CRIT"
487 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
491 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
493 trace_match_all_demo_events
497 # Expected: all CRIT events, + all warning events.
498 test_enable_loglevel_only_overlap
()
500 local event_wild1
="us*"
501 local event_wild2
="ust*"
504 echo "=== Enable loglevel only overlap"
506 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild1" "TRACE_WARNING"
507 enable_ust_lttng_event_loglevel_only
$SESSION_NAME "$event_wild2" "TRACE_CRIT"
509 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
513 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
515 trace_match_all_demo_events
519 # Expected: all events
520 test_enable_loglevel_overlap_2
()
522 local event_wild1
="us*"
523 local event_wild2
="$DEMO_EVENT2"
526 echo "=== Enable loglevel overlap 2"
528 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild1" "TRACE_WARNING"
529 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild2" "TRACE_CRIT"
531 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
535 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
537 trace_match_all_demo_events
541 # Expected only ust_tests_demo* events.
542 test_enable_same_wildcard_loglevels
()
544 local event_wild1
="ust*"
545 local event_wild2
="ust*"
548 echo "=== Enable same wildcard with different loglevels"
550 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild1" "TRACE_CRIT"
551 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild2" "TRACE_WARNING"
553 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
557 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
559 trace_match_all_demo_events
563 # Expected only ust_tests_demo:starting events.
564 test_enable_same_event_loglevels
()
566 local event_wild1
="$DEMO_EVENT1"
567 local event_wild2
="$DEMO_EVENT1"
570 echo "=== Enable same event with different loglevels"
572 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild1" "TRACE_CRIT"
573 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild2" "TRACE_WARNING"
575 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
579 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
581 trace_matches
$DEMO_EVENT1 $NUM_DEMO1_EVENT $TRACE_PATH
582 trace_matches
$DEMO_EVENT1_2 0 $TRACE_PATH
583 trace_matches
$DEMO_EVENT2 0 $TRACE_PATH
584 trace_matches
$DEMO_EVENT3 0 $TRACE_PATH
589 test_disable_simple_wildcard
()
591 local event_wild1
="us*"
592 local event_wild2
="$DEMO_EVENT1"
595 echo "=== Disable simple wildcard"
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"
601 disable_ust_lttng_event
$SESSION_NAME "$event_wild2"
603 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
607 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
609 # No events are expected.
610 trace_match_no_demo_events
614 # Expect only "ust_tests_demo" events.
615 test_disable_wildcard_overlap
()
617 local event_wild1
="us*"
618 local event_wild2
="$DEMO_EVENT1"
621 echo "=== Disable wildcard overlap"
623 enable_ust_lttng_event
$SESSION_NAME "$event_wild1"
624 enable_ust_lttng_event
$SESSION_NAME "$event_wild2"
626 disable_ust_lttng_event
$SESSION_NAME "$event_wild1"
628 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
632 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
634 # Expect only "ust_tests_demo" events.
635 trace_matches
"$DEMO_EVENT1" $NUM_DEMO1_EVENT $TRACE_PATH
636 trace_matches
"$DEMO_EVENT1_2" 0 $TRACE_PATH
637 trace_matches
"$DEMO_EVENT2" 0 $TRACE_PATH
638 trace_matches
"$DEMO_EVENT3" 0 $TRACE_PATH
643 "test_enable_wildcard_filter"
644 "test_enable_wildcard_filter_2"
645 "test_enable_wildcard_filter_3"
646 "test_enable_wildcard_filter_4"
647 "test_enable_wildcard_filter_5"
648 "test_enable_wildcard_filter_6"
649 "test_enable_wildcard_filter_7"
650 "test_enable_wildcard_filter_8"
651 "test_enable_same_wildcard_filter"
652 "test_enable_same_wildcard_filter_2"
653 "test_enable_same_wildcard_filter_3"
654 "test_enable_same_wildcard_filter_4"
655 "test_enable_same_event_filter"
656 "test_enable_loglevel_only_overlap"
657 "test_enable_same_event_loglevels"
658 "test_enable_same_wildcard_loglevels"
659 "test_enable_bad_wildcard"
660 "test_enable_loglevel_overlap_2"
661 "test_enable_simple_wildcard"
662 "test_enable_simple_wildcard_2"
663 "test_enable_loglevel_overlap"
664 "test_disable_simple_wildcard"
665 "test_disable_wildcard_overlap"
668 TEST_COUNT
=${#TESTS[@]}
673 while [ "$i" -lt "$TEST_COUNT" ]; do
675 TRACE_PATH
=$
(mktemp
-d)
677 create_lttng_session
$SESSION_NAME $TRACE_PATH >/dev
/null
2>&1
681 if [ $?
-ne 0 ]; then
686 destroy_lttng_session
$SESSION_NAME >/dev
/null
2>&1