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
51 echo -n "Starting application... "
52 .
/demo-trace
>/dev
/null
2>&1
59 # Ease our life a bit ;)
60 trace_match_demo1_events
()
62 trace_matches
$DEMO_EVENT1 $NUM_DEMO1_EVENT $TRACE_PATH
63 trace_matches
$DEMO_EVENT1_2 $NUM_DEMO1_EVENT $TRACE_PATH
66 # Ease our life a bit ;)
67 trace_match_all_demo_events
()
69 trace_match_demo1_events
70 trace_matches
$DEMO_EVENT2 $NUM_DEMO2_EVENT $TRACE_PATH
71 trace_matches
$DEMO_EVENT3 $NUM_DEMO3_EVENT $TRACE_PATH
74 # Ease our life a bit ;)
75 trace_match_no_demo_events
()
77 trace_matches
$DEMO_EVENT1 0 $TRACE_PATH
78 trace_matches
$DEMO_EVENT1_2 0 $TRACE_PATH
79 trace_matches
$DEMO_EVENT2 0 $TRACE_PATH
80 trace_matches
$DEMO_EVENT3 0 $TRACE_PATH
83 # Expect all "demo" events, no duplicate.
84 test_enable_simple_wildcard
()
86 local event_wild1
="us*"
87 local event_wild2
="ust*"
90 echo "=== Simple wildcard overlap"
92 enable_ust_lttng_event
$SESSION_NAME $event_wild1
93 enable_ust_lttng_event
$SESSION_NAME $event_wild2
95 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
99 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
101 trace_match_all_demo_events
106 # Expect all "demo" events, no duplicate.
107 test_enable_wildcard_filter
()
109 local event_wild1
="us*"
110 local event_wild2
="ust*"
113 echo "=== Wildcard overlap with filter"
115 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild1 "1==1"
116 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild2 "1==0"
118 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
122 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
124 trace_match_all_demo_events
128 # Expect all "demo" events, no duplicate.
129 test_enable_wildcard_filter_2
()
131 local event_wild1
="us*"
132 local event_wild2
="ust*"
135 echo "=== Wildcard overlap with filter 2"
137 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild1 "1==0"
138 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild2 "1==1"
140 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
144 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
146 trace_match_all_demo_events
150 # Expect all "demo" events, no duplicate.
151 test_enable_wildcard_filter_3
()
153 local event_wild1
="us*"
154 local event_wild2
="ust*"
157 echo "=== Wildcard overlap with filter 3"
159 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild1 "1==1"
160 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild2 "1==1"
162 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
166 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
168 trace_match_all_demo_events
172 # Expected: No events.
173 test_enable_wildcard_filter_4
()
175 local event_wild1
="us*"
176 local event_wild2
="ust*"
179 echo "=== Wildcard overlap with filter 4"
181 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild1 "1==0"
182 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild2 "1==0"
184 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
188 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
190 trace_match_no_demo_events
194 # Expect all "demo" events, no duplicate.
195 test_enable_wildcard_filter_5
()
197 local event_wild1
="us*"
198 local event_wild2
="$DEMO_EVENT1"
201 echo "=== Wildcard overlap with filter 5"
203 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild1 "1==1"
204 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild2 "1==0"
206 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
210 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
212 trace_match_all_demo_events
216 # Expect all $DEMO_EVENT1 events, no duplicate.
217 test_enable_wildcard_filter_6
()
219 local event_wild1
="us*"
220 local event_wild2
="$DEMO_EVENT1"
223 echo "=== Wildcard overlap with filter 6"
225 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild1 "1==0"
226 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild2 "1==1"
228 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
232 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
234 trace_matches
$DEMO_EVENT1 $NUM_DEMO1_EVENT $TRACE_PATH
235 trace_matches
$DEMO_EVENT1_2 0 $TRACE_PATH
236 trace_matches
$DEMO_EVENT2 0 $TRACE_PATH
237 trace_matches
$DEMO_EVENT3 0 $TRACE_PATH
241 # Expect all events, no duplicate.
242 test_enable_wildcard_filter_7
()
244 local event_wild1
="us*"
245 local event_wild2
="$DEMO_EVENT1"
248 echo "=== Wildcard overlap with filter 7"
250 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild1 "1==1"
251 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild2 "1==1"
253 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
257 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
259 trace_match_all_demo_events
263 # Expected: No events.
264 test_enable_wildcard_filter_8
()
266 local event_wild1
="us*"
267 local event_wild2
="$DEMO_EVENT1"
270 echo "=== Wildcard overlap with filter 8"
272 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild1 "1==0"
273 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild2 "1==0"
275 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
279 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
281 trace_match_no_demo_events
286 test_enable_same_wildcard_filter
()
288 local event_wild1
="ust*"
289 local event_wild2
="ust*"
292 echo "=== Same wildcard overlap with filter"
294 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild1 "1==1&&1==1"
295 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild2 "1==1"
297 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
301 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
303 trace_match_all_demo_events
308 test_enable_same_wildcard_filter_2
()
310 local event_wild1
="ust*"
311 local event_wild2
="ust*"
314 echo "=== Same wildcard overlap with filter 2"
316 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild1 "1==1"
317 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild2 "1==1"
318 if [ $?
-eq 1 ]; then
319 echo -n "FAIL is normal. Same event with same filter is denied by the sessiond "
325 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
329 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
331 trace_match_all_demo_events
336 test_enable_same_wildcard_filter_3
()
338 local event_wild1
="ust*"
339 local event_wild2
="ust*"
342 echo "=== Same wildcard overlap with filter 3"
344 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild1 "1==1"
345 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild2 "1==0"
347 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
351 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
353 trace_match_all_demo_events
357 # Expected: No events.
358 test_enable_same_wildcard_filter_4
()
360 local event_wild1
="ust*"
361 local event_wild2
="ust*"
364 echo "=== Same wildcard overlap with filter 4"
366 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild1 "1==0&&1==0"
367 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild2 "1==0"
369 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
373 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
375 trace_match_no_demo_events
379 # Expected: Only $DEMO_EVENT1
380 test_enable_same_event_filter
()
382 local event_wild1
="$DEMO_EVENT1"
383 local event_wild2
="$DEMO_EVENT1"
386 echo "=== Enable same event with filter."
388 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild1 "1==1&&1==1"
389 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild2 "1==1"
391 disable_ust_lttng_event
$SESSION_NAME "ust*"
393 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
397 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
399 trace_matches
$DEMO_EVENT1 $NUM_DEMO1_EVENT $TRACE_PATH
400 trace_matches
$DEMO_EVENT1_2 0 $TRACE_PATH
401 trace_matches
$DEMO_EVENT2 0 $TRACE_PATH
402 trace_matches
$DEMO_EVENT3 0 $TRACE_PATH
406 # Expected: No events.
407 test_disable_same_wildcard_filter
()
409 local event_wild1
="ust*"
410 local event_wild2
="ust*"
413 echo "=== Disable same wildcard with filter."
415 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild1 "1==1&&1==1"
416 enable_ust_lttng_event_filter
$SESSION_NAME $event_wild2 "1==1"
418 disable_ust_lttng_event
$SESSION_NAME "ust*"
420 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
424 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
426 trace_match_no_demo_events
431 test_enable_bad_wildcard
()
434 local event_wild1
="ust_tests_demo"
435 local event_wild2
="ust_tests_demo2"
436 local event_wild3
="ust_tests_demo3"
439 echo "=== Enable bad wildcard"
441 enable_ust_lttng_event
$SESSION_NAME $event_wild1
442 enable_ust_lttng_event
$SESSION_NAME $event_wild2
443 enable_ust_lttng_event
$SESSION_NAME $event_wild3
445 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
449 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
451 trace_match_no_demo_events
455 # Expect all "demo" events, no duplicate.
456 test_enable_simple_wildcard_2
()
458 local event_wild1
="us*"
459 local event_wild2
="$DEMO_EVENT1"
462 echo "=== Simple wildcard 2"
464 enable_ust_lttng_event
$SESSION_NAME $event_wild1
465 enable_ust_lttng_event
$SESSION_NAME $event_wild2
467 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
471 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
473 trace_match_all_demo_events
477 # Expected: all CRIT events, + all warning events.
478 test_enable_loglevel_overlap
()
480 local event_wild1
="us*"
481 local event_wild2
="ust*"
484 echo "=== Enable loglevel overlap"
486 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild1" "TRACE_WARNING"
487 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild2" "TRACE_CRIT"
489 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
493 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
495 trace_match_all_demo_events
499 # Expected: all CRIT events, + all warning events.
500 test_enable_loglevel_only_overlap
()
502 local event_wild1
="us*"
503 local event_wild2
="ust*"
506 echo "=== Enable loglevel only overlap"
508 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild1" "TRACE_WARNING"
509 enable_ust_lttng_event_loglevel_only
$SESSION_NAME "$event_wild2" "TRACE_CRIT"
511 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
515 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
517 trace_match_all_demo_events
521 # Expected: all events
522 test_enable_loglevel_overlap_2
()
524 local event_wild1
="us*"
525 local event_wild2
="$DEMO_EVENT2"
528 echo "=== Enable loglevel overlap 2"
530 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild1" "TRACE_WARNING"
531 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild2" "TRACE_CRIT"
533 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
537 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
539 trace_match_all_demo_events
543 # Expected only ust_tests_demo* events.
544 test_enable_same_wildcard_loglevels
()
546 local event_wild1
="ust*"
547 local event_wild2
="ust*"
550 echo "=== Enable same wildcard with different loglevels"
552 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild1" "TRACE_CRIT"
553 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild2" "TRACE_WARNING"
555 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
559 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
561 trace_match_all_demo_events
565 # Expected only ust_tests_demo:starting events.
566 test_enable_same_event_loglevels
()
568 local event_wild1
="$DEMO_EVENT1"
569 local event_wild2
="$DEMO_EVENT1"
572 echo "=== Enable same event with different loglevels"
574 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild1" "TRACE_CRIT"
575 enable_ust_lttng_event_loglevel
$SESSION_NAME "$event_wild2" "TRACE_WARNING"
577 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
581 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
583 trace_matches
$DEMO_EVENT1 $NUM_DEMO1_EVENT $TRACE_PATH
584 trace_matches
$DEMO_EVENT1_2 0 $TRACE_PATH
585 trace_matches
$DEMO_EVENT2 0 $TRACE_PATH
586 trace_matches
$DEMO_EVENT3 0 $TRACE_PATH
591 test_disable_simple_wildcard
()
593 local event_wild1
="us*"
594 local event_wild2
="$DEMO_EVENT1"
597 echo "=== Disable simple wildcard"
599 enable_ust_lttng_event
$SESSION_NAME $event_wild1
600 enable_ust_lttng_event
$SESSION_NAME $event_wild2
602 disable_ust_lttng_event
$SESSION_NAME $event_wild1
603 disable_ust_lttng_event
$SESSION_NAME $event_wild2
605 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
609 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
611 # No events are expected.
612 trace_match_no_demo_events
616 # Expect only "ust_tests_demo" events.
617 test_disable_wildcard_overlap
()
619 local event_wild1
="us*"
620 local event_wild2
="$DEMO_EVENT1"
623 echo "=== Disable wildcard overlap"
625 enable_ust_lttng_event
$SESSION_NAME $event_wild1
626 enable_ust_lttng_event
$SESSION_NAME $event_wild2
628 disable_ust_lttng_event
$SESSION_NAME $event_wild1
630 start_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
634 stop_lttng_tracing
$SESSION_NAME >/dev
/null
2>&1
636 # Expect only "ust_tests_demo" events.
637 trace_matches
$DEMO_EVENT1 $NUM_DEMO1_EVENT $TRACE_PATH
638 trace_matches
$DEMO_EVENT1_2 0 $TRACE_PATH
639 trace_matches
$DEMO_EVENT2 0 $TRACE_PATH
640 trace_matches
$DEMO_EVENT3 0 $TRACE_PATH
645 "test_enable_wildcard_filter"
646 "test_enable_wildcard_filter_2"
647 "test_enable_wildcard_filter_3"
648 "test_enable_wildcard_filter_4"
649 "test_enable_wildcard_filter_5"
650 "test_enable_wildcard_filter_6"
651 "test_enable_wildcard_filter_7"
652 "test_enable_wildcard_filter_8"
653 "test_enable_same_wildcard_filter"
654 "test_enable_same_wildcard_filter_2"
655 "test_enable_same_wildcard_filter_3"
656 "test_enable_same_wildcard_filter_4"
657 "test_enable_same_event_filter"
658 "test_enable_loglevel_only_overlap"
659 "test_enable_same_event_loglevels"
660 "test_enable_same_wildcard_loglevels"
661 "test_enable_bad_wildcard"
662 "test_enable_loglevel_overlap_2"
663 "test_enable_simple_wildcard"
664 "test_enable_simple_wildcard_2"
665 "test_enable_loglevel_overlap"
666 "test_disable_simple_wildcard"
667 "test_disable_wildcard_overlap"
670 TEST_COUNT
=${#TESTS[@]}
675 while [ "$i" -lt "$TEST_COUNT" ]; do
677 TRACE_PATH
=$
(mktemp
-d)
679 create_lttng_session
$SESSION_NAME $TRACE_PATH >/dev
/null
2>&1
683 if [ $?
-ne 0 ]; then
688 destroy_lttng_session
$SESSION_NAME >/dev
/null
2>&1