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