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