Cleanup: tests: name all temporary files to better identify leakage
[lttng-tools.git] / tests / regression / tools / filtering / test_valid_filter
1 #!/bin/bash
2 #
3 # Copyright (C) 2012 Christian Babeux <christian.babeux@efficios.com>
4 #
5 # SPDX-License-Identifier: GPL-2.0-only
6 #
7
8 TEST_DESC="Filtering - Valid filters"
9
10 CURDIR=$(dirname $0)/
11 TESTDIR=$CURDIR/../../..
12 STATS_BIN="$TESTDIR/utils/babelstats.pl"
13 SESSION_NAME="valid_filter"
14 NR_ITER=100
15 NUM_GLOBAL_TESTS=2
16 NUM_UST_TESTS=1122
17 NUM_KERNEL_TESTS=1056
18 NUM_TESTS=$(($NUM_UST_TESTS+$NUM_KERNEL_TESTS+$NUM_GLOBAL_TESTS))
19
20 source $TESTDIR/utils/utils.sh
21
22 function enable_lttng_event_filter()
23 {
24 domain="$1"
25 sess_name="$2"
26 event_name="$3"
27 filter="$4"
28
29 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event $event_name \
30 -s $sess_name $domain --filter "$filter" 2>&1 >/dev/null
31 $TESTDIR/../src/bin/lttng/$LTTNG_BIN add-context \
32 -s $sess_name $domain -t procname 2>&1 >/dev/null
33
34 ok $? "Enable lttng event with filtering"
35 }
36
37 function run_ust
38 {
39 ./$CURDIR/$BIN_NAME $NR_ITER >/dev/null 2>&1
40 }
41
42 function run_ust_str
43 {
44 $TESTDIR/utils/testapp/gen-ust-nevents-str/gen-ust-nevents-str $NR_ITER \
45 hypothec \
46 hypotheca \
47 hypothecary \
48 hypothecate \
49 hypothecation \
50 hypothecator \
51 hypothecium \
52 hypothenar \
53 hypothenuse \
54 hypothermal \
55 hypothermia \
56 hypothermic \
57 hypotheses \
58 hypothesis \
59 hypothesise \
60 hypothesised \
61 hypothesises \
62 hypothesize \
63 hypothesizing \
64 hypothetic \
65 electrothermic \
66 endothermic \
67 exothermic \
68 geothermic \
69 apothecary \
70 hypothecary \
71 peccary \
72 scary \
73 actinomycosis \
74 adenohypophysis \
75 adiposis \
76 emesis \
77 emphasis \
78 conformal \
79 coseismal \
80 decimal \
81 dermal
82 }
83
84 function run_kernel
85 {
86 # Trigger the event for 100 iterations
87 echo -n "100" > /proc/lttng-test-filter-event
88 }
89
90 function test_valid_filter
91 {
92 domain_name="$1"
93 domain="$2"
94 event_name="$3"
95 filter="$4"
96 validator="$5"
97 local trace_path=$(mktemp --tmpdir -d tmp.test_filtering_invalid_filters_trace_path.XXXXXX)
98
99 diag "Test valid $domain_name filter: $filter"
100
101 # Create session
102 create_lttng_session_ok $SESSION_NAME $trace_path
103
104 # Enable filter
105 enable_lttng_event_filter $domain $SESSION_NAME "$event_name" "$filter"
106
107 # Trace apps
108 start_lttng_tracing_ok $SESSION_NAME
109 run_$domain_name
110 stop_lttng_tracing_ok $SESSION_NAME
111
112 # Destroy session
113 destroy_lttng_session_ok $SESSION_NAME
114
115 stats=`babeltrace $trace_path | $STATS_BIN --tracepoint $event_name`
116
117 rm -rf $trace_path
118
119 $validator "$stats"
120
121 ok $? "Validate trace filter output"
122
123 rm -rf $trace_path
124 }
125
126 function validate_min_max
127 {
128 stats="$1"
129 field=$2
130 expected_min=$3
131 expected_max=$4
132
133 echo $stats | grep -q "$field $expected_min $expected_max"
134
135 return $?
136 }
137
138 function validator_intfield
139 {
140 stats="$1"
141 status=0
142
143 validate_min_max "$stats" "intfield" "1" "99"
144 status=$(($status|$?))
145
146 validate_min_max "$stats" "intfield2" "0x1" "0x63"
147 status=$(($status|$?))
148
149 validate_min_max "$stats" "longfield" "1" "99"
150 status=$(($status|$?))
151
152 validate_min_max "$stats" "netintfield" "1" "99"
153 status=$(($status|$?))
154
155 validate_min_max "$stats" "netintfieldhex" "0x1" "0x63"
156 status=$(($status|$?))
157
158 if [ $KERNEL_CHECK -eq 0 ]; then
159 validate_min_max "$stats" "floatfield" "2222" "2222"
160 status=$(($status|$?))
161
162 validate_min_max "$stats" "doublefield" "2" "2"
163 status=$(($status|$?))
164 fi
165
166 return $status
167 }
168
169 function validator_intfield_gt
170 {
171 stats="$1"
172 status=0
173
174 validate_min_max "$stats" "intfield" "2" "99"
175 status=$(($status|$?))
176
177 return $status
178 }
179
180 function validator_has_no_event
181 {
182 stats="$1"
183 status=0
184
185 validate_min_max "$stats" "intfield" "0" "99"
186 status=$(($status|$?))
187
188 if [ $status -eq 0 ]; then
189 return 1
190 else
191 return 0
192 fi
193 }
194
195 function validator_str_has_no_event
196 {
197 validator_has_no_event "$1"
198 }
199
200 function validator_has_events
201 {
202 stats="$1"
203 status=0
204
205 validate_min_max "$stats" "intfield" "0" "99"
206 status=$(($status|$?))
207
208 return $status
209 }
210
211 function validator_str_has_events
212 {
213 stats="$1"
214 status=0
215
216 echo $stats | grep -q str
217 status=$(($status|$?))
218
219 return $status
220 }
221
222 function validator_stringfield_has_events
223 {
224 stats="$1"
225 status=0
226
227 echo $stats | grep -q stringfield
228 status=$(($status|$?))
229
230 return $status
231 }
232
233 function validator_intfield_ge
234 {
235 stats="$1"
236 status=0
237
238 validate_min_max "$stats" "intfield" "1" "99"
239 status=$(($status|$?))
240
241 return $status
242 }
243
244 function validator_intfield_lt
245 {
246 stats="$1"
247 status=0
248
249 validate_min_max "$stats" "intfield" "0" "1"
250 status=$(($status|$?))
251
252 return $status
253 }
254
255 function validator_intfield_le
256 {
257 stats="$1"
258 status=0
259
260 validate_min_max "$stats" "intfield" "0" "2"
261 status=$(($status|$?))
262
263 return $status
264 }
265
266 function validator_intfield_eq
267 {
268 stats="$1"
269 status=0
270
271 validate_min_max "$stats" "intfield" "1" "1"
272 status=$(($status|$?))
273
274 return $status
275 }
276
277 function validator_intfield_ne
278 {
279 stats="$1"
280 status=0
281
282 validate_min_max "$stats" "intfield" "0" "98"
283 status=$(($status|$?))
284
285 return $status
286 }
287
288 function validator_intfield_not
289 {
290 stats="$1"
291 status=0
292
293 validate_min_max "$stats" "intfield" "0" "0"
294 status=$(($status|$?))
295
296 return $status
297 }
298
299 function validator_intfield_gt_and_longfield_gt
300 {
301 stats="$1"
302 status=0
303
304 validate_min_max "$stats" "intfield" "43" "99"
305 status=$(($status|$?))
306 validate_min_max "$stats" "longfield" "43" "99"
307 status=$(($status|$?))
308
309 return $status
310 }
311
312 function validator_intfield_ge_and_longfield_le
313 {
314 stats="$1"
315 status=0
316
317 validate_min_max "$stats" "intfield" "42" "42"
318 status=$(($status|$?))
319 validate_min_max "$stats" "longfield" "42" "42"
320 status=$(($status|$?))
321
322 return $status
323 }
324
325 function validator_intfield_lt_or_longfield_gt
326 {
327 stats="$1"
328 status=0
329
330 validate_min_max "$stats" "intfield" "0" "99"
331 status=$(($status|$?))
332 validate_min_max "$stats" "longfield" "0" "99"
333 status=$(($status|$?))
334
335 return $status
336 }
337
338 function validator_mixed_str_or_int_and_int
339 {
340 stats="$1"
341 status=0
342
343 validate_min_max "$stats" "intfield" "34" "99"
344 status=$(($status|$?))
345
346 validate_min_max "$stats" "stringfield" "\"test\"" "\"test\""
347 status=$(($status|$?))
348
349 return $status
350 }
351
352 function validator_mixed_int_double
353 {
354 stats="$1"
355 status=0
356
357 validate_min_max "$stats" "intfield" "0" "42"
358 status=$(($status|$?))
359
360 return $status
361 }
362
363 function validator_true_statement
364 {
365 stats="$1"
366 status=0
367
368 validate_min_max "$stats" "intfield" "0" "99"
369 status=$(($status|$?))
370
371 validate_min_max "$stats" "intfield2" "0x0" "0x63"
372 status=$(($status|$?))
373
374 validate_min_max "$stats" "longfield" "0" "99"
375 status=$(($status|$?))
376
377 validate_min_max "$stats" "netintfield" "0" "99"
378 status=$(($status|$?))
379
380 validate_min_max "$stats" "netintfieldhex" "0x0" "0x63"
381 status=$(($status|$?))
382
383 if [ $KERNEL_CHECK -eq 0 ]; then
384 validate_min_max "$stats" "floatfield" "2222" "2222"
385 status=$(($status|$?))
386
387 validate_min_max "$stats" "doublefield" "2" "2"
388 status=$(($status|$?))
389 fi
390
391 validate_min_max "$stats" "stringfield" "\"test\"" "\"test\""
392 status=$(($status|$?))
393
394 validate_min_max "$stats" "stringfield2" ""\*"" ""\*""
395 status=$(($status|$?))
396
397 return $status
398 }
399
400 plan_tests $NUM_TESTS
401
402 print_test_banner "$TEST_DESC"
403
404 issue_356_filter="intfield > 0 && intfield > 1 && "
405 issue_356_filter+="intfield > 2 && intfield > 3 && "
406 issue_356_filter+="intfield > 4 && intfield > 5 && "
407 issue_356_filter+="intfield > 6 && intfield > 7 && "
408 issue_356_filter+="intfield > 8 || intfield > 0"
409
410 start_lttng_sessiond
411
412 ### UST TESTS
413
414 BIN_NAME="gen-ust-events"
415
416 KIRK_KRAUSS_TESTS=(
417 # the tests below were written by Kirk Krauss in this article:
418 # http://www.drdobbs.com/architecture-and-design/matching-wildcards-an-empirical-way-to-t/240169123
419
420 str_has_events
421 '"abcccd" == "*ccd"'
422
423 str_has_events
424 '"mississipissippi" == "*issip*ss*"'
425
426 str_has_no_event
427 '"xxxx\*zzzzzzzzy\*f" == "xxxx*zzy*fffff"'
428
429 str_has_events
430 '"xxxx\*zzzzzzzzy\*f" == "xxx*zzy*f"'
431
432 str_has_no_event
433 '"xxxxzzzzzzzzyf" == "xxxx*zzy*fffff"'
434
435 str_has_events
436 '"xxxxzzzzzzzzyf" == "xxxx*zzy*f"'
437
438 str_has_events
439 '"xyxyxyzyxyz" == "xy*z*xyz"'
440
441 str_has_events
442 '"mississippi" == "*sip*"'
443
444 str_has_events
445 '"xyxyxyxyz" == "xy*xyz"'
446
447 str_has_events
448 '"mississippi" == "mi*sip*"'
449
450 str_has_events
451 '"ababac" == "*abac*"'
452
453 str_has_events
454 '"ababac" == "*abac*"'
455
456 str_has_events
457 '"aaazz" == "a*zz*"'
458
459 str_has_no_event
460 '"a12b12" == "*12*23"'
461
462 str_has_no_event
463 '"a12b12" == "a12b"'
464
465 str_has_events
466 '"a12b12" == "*12*12*"'
467
468 str_has_events
469 '"\*" == "*"'
470
471 str_has_events
472 '"a\*abab" == "a*b"'
473
474 str_has_events
475 '"a\*r" == "a*"'
476
477 str_has_no_event
478 '"a\*ar" == "a*aar"'
479
480 str_has_events
481 '"XYXYXYZYXYz" == "XY*Z*XYz"'
482
483 str_has_events
484 '"missisSIPpi" == "*SIP*"'
485
486 str_has_events
487 '"mississipPI" == "*issip*PI"'
488
489 str_has_events
490 '"xyxyxyxyz" == "xy*xyz"'
491
492 str_has_events
493 '"miSsissippi" == "mi*sip*"'
494
495 str_has_no_event
496 '"miSsissippi" == "mi*Sip*"'
497
498 str_has_events
499 '"abAbac" == "*Abac*"'
500
501 str_has_events
502 '"abAbac" == "*Abac*"'
503
504 str_has_events
505 '"aAazz" == "a*zz*"'
506
507 str_has_no_event
508 '"A12b12" == "*12*23"'
509
510 str_has_events
511 '"a12B12" == "*12*12*"'
512
513 str_has_events
514 '"oWn" == "*oWn*"'
515
516 str_has_events
517 '"bLah" == "bLah"'
518
519 str_has_no_event
520 '"bLah" == "bLaH"'
521
522 str_has_events
523 '"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab" == "a*a*a*a*a*a*aa*aaa*a*a*b"'
524
525 str_has_events
526 '"abababababababababababababababababababaacacacacacacacadaeafagahaiajakalaaaaaaaaaaaaaaaaaffafagaagggagaaaaaaaab" == "*a*b*ba*ca*a*aa*aaa*fa*ga*b*"'
527
528 str_has_no_event
529 '"abababababababababababababababababababaacacacacacacacadaeafagahaiajakalaaaaaaaaaaaaaaaaaffafagaagggagaaaaaaaab" == "*a*b*ba*ca*a*x*aaa*fa*ga*b*"'
530
531 str_has_no_event
532 '"abababababababababababababababababababaacacacacacacacadaeafagahaiajakalaaaaaaaaaaaaaaaaaffafagaagggagaaaaaaaab" == "*a*b*ba*ca*aaaa*fa*ga*gggg*b*"'
533
534 str_has_events
535 '"abababababababababababababababababababaacacacacacacacadaeafagahaiajakalaaaaaaaaaaaaaaaaaffafagaagggagaaaaaaaab" == "*a*b*ba*ca*aaaa*fa*ga*ggg*b*"'
536
537 str_has_events
538 '"aaabbaabbaab" == "*aabbaa*a*"'
539
540 str_has_events
541 '"a\*a\*a\*a\*a\*a\*a\*a\*a\*a\*a\*a\*a\*a\*a\*a\*a\*" == "a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*"'
542
543 str_has_events
544 '"aaaaaaaaaaaaaaaaa" == "*a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*"'
545
546 str_has_no_event
547 '"aaaaaaaaaaaaaaaa" == "*a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*"'
548
549 str_has_no_event
550 '"abc\*abcd\*abcde\*abcdef\*abcdefg\*abcdefgh\*abcdefghi\*abcdefghij\*abcdefghijk\*abcdefghijkl\*abcdefghijklm\*abcdefghijklmn" == "abc*abc*abc*abc*abc*abc*abc*abc*abc*abc*abc*abc*abc*abc*abc*abc*abc*"'
551
552 str_has_events
553 '"abc\*abcd\*abcde\*abcdef\*abcdefg\*abcdefgh\*abcdefghi\*abcdefghij\*abcdefghijk\*abcdefghijkl\*abcdefghijklm\*abcdefghijklmn" == "abc*abc*abc*abc*abc*abc*abc*abc*abc*abc*abc*abc*"'
554
555 str_has_no_event
556 '"abc\*abcd\*abcd\*abc\*abcd" == "abc*abc*abc*abc*abc"'
557
558 str_has_events
559 '"abc\*abc\*abc\*abc\*abc\*abc\*abc\*abc\*abc\*abc\*abcd" == "abc*abc*abc*abc*abc*abc*abc*abc*abc*abc*abcd"'
560 )
561
562 # Set IFS to newline to facilitate array declaration
563 OLDIFS="$IFS"
564 IFS=$'\n'
565 UST_FILTERS=(
566 intfield
567 "intfield"
568
569 intfield_gt
570 "intfield > 1"
571
572 intfield_ge
573 "intfield >= 1"
574
575 intfield_lt
576 "intfield < 2"
577
578 intfield_le
579 "intfield <= 2"
580
581 intfield_eq
582 "intfield == 1"
583
584 intfield_ne
585 "intfield != 99"
586
587 intfield_not
588 "!intfield"
589
590 intfield
591 "-intfield"
592
593 intfield
594 "--intfield"
595
596 intfield
597 "+intfield"
598
599 intfield
600 "++intfield"
601
602 intfield_gt_and_longfield_gt
603 "intfield > 1 && longfield > 42"
604
605 intfield_ge_and_longfield_le
606 "intfield >= 42 && longfield <= 42"
607
608 intfield_lt_or_longfield_gt
609 "intfield < 1 || longfield > 98"
610
611 mixed_str_or_int_and_int
612 "(stringfield == \"test\" || intfield != 10) && intfield > 33"
613
614 mixed_int_double
615 "intfield < 42.4242424242"
616
617 # Issue #342
618 true_statement
619 "\"test\" == \"test\""
620
621 true_statement
622 "stringfield == \"test\""
623
624 true_statement
625 "stringfield == \"t*\""
626
627 true_statement
628 "stringfield == \"*\""
629
630 # Issue 356
631 intfield
632 $issue_356_filter
633
634 true_statement
635 "1&1"
636
637 true_statement
638 "0|1"
639
640 true_statement
641 "0^1"
642
643 true_statement
644 "seqfield4[1]==2"
645
646 true_statement
647 "arrfield1[1]==2"
648
649 true_statement
650 "arrfield1[1]==2"
651
652 true_statement
653 "arrfield3[1]==2"
654
655 true_statement
656 "seqfield3[1]==2"
657
658 true_statement
659 "1 | (1 | (1 | 1))"
660
661 true_statement
662 "1 >= (1 >= (1 >= 1))"
663
664 true_statement
665 "(0x101 & 0x100) == 0x100"
666
667 true_statement
668 "(0x101 | 0x10100) == 0x10101"
669
670 true_statement
671 "(0xF00F0F ^ 0xFF0F00) == 0x0F000F"
672
673 true_statement
674 "(1 << 1) == 2"
675
676 true_statement
677 "(4 >> 1) == 2"
678
679 true_statement
680 "(1 << 8) == 256"
681
682 true_statement
683 "(262144 >> 16) == 4"
684
685 true_statement
686 "(~0 & 0xffff) == 0xffff"
687
688 true_statement
689 "(~0 & 0xffffffff) == 0xffffffff"
690
691 true_statement
692 "(~0 & 0xffffffffffffffff) == 0xffffffffffffffff"
693
694 true_statement
695 "-1==~0"
696
697 true_statement # unsigned bitwise ops
698 "~0>>4==0x0fffffffffffffff"
699
700 has_no_event
701 "1<<-1"
702
703 has_no_event
704 "1<<10000"
705
706 true_statement # comparator is signed, shift is unsigned
707 "(1<<63) < 0"
708
709 true_statement
710 "(1<<2!=4)==0" # operator priority: shift before equality
711
712 true_statement
713 "1&3==1" # operator priority: masks before equality
714
715 true_statement
716 "(3|1==3)==1" # operator priority: masks before equality
717
718 true_statement
719 "(2^1==3)==1" # operator priority: masks before equality
720
721 true_statement
722 "(1 << 32) == 4294967296"
723
724 true_statement
725 "(1 << 63) == 9223372036854775808"
726
727 true_statement
728 "(arrfield1[2] & 1) == 1"
729
730 true_statement
731 "(arrfield1[2] | 0x111000) == 0x111003"
732
733 true_statement
734 "(arrfield1[0] | arrfield1[1] | arrfield1[2]) == 0x3"
735
736 true_statement
737 "(seqfield4[2] & 1) == 1"
738
739 true_statement
740 "(seqfield4[2] | 0x111000) == 0x111003"
741
742 true_statement
743 "intfield < 0xDEADBEEF"
744
745 intfield_lt
746 "intfield < 0x2"
747
748 intfield_lt
749 "intfield < 02"
750
751 true_statement
752 "stringfield2 == \"\\\*\""
753
754 true_statement
755 "1.0 || intfield || 1.0"
756
757 intfield_gt
758 "1 < intfield"
759
760 has_no_event
761 "\$ctx.vtid == 0"
762
763 has_events
764 "\$ctx.vtid != 0"
765
766 has_no_event
767 "0 == \$ctx.vtid"
768
769 has_events
770 "0 != \$ctx.vtid"
771
772 has_no_event
773 "\$ctx.vpid == 0"
774
775 has_events
776 "\$ctx.vpid != 0"
777
778 has_no_event
779 "0 == \$ctx.vpid"
780
781 has_events
782 "0 != \$ctx.vpid"
783
784 has_no_event
785 "\$ctx.procname != \"$BIN_NAME\""
786
787 has_events
788 "\$ctx.procname == \"$BIN_NAME\""
789
790 has_no_event
791 "\"$BIN_NAME\" != \$ctx.procname"
792
793 has_events
794 "\"$BIN_NAME\" == \$ctx.procname"
795
796 has_no_event
797 "\$ctx.procname != \"$BIN_NAME*\""
798
799 has_events
800 "\$ctx.procname == \"$BIN_NAME*\""
801
802 has_no_event
803 "\"$BIN_NAME*\" != \$ctx.procname"
804
805 has_events
806 "\"$BIN_NAME*\" == \$ctx.procname"
807
808 has_no_event
809 "\$ctx.procname != \"*\""
810
811 has_events
812 "\$ctx.procname == \"*\""
813
814 has_no_event
815 "\"*\" != \$ctx.procname"
816
817 has_events
818 "\"*\" == \$ctx.procname"
819
820 has_no_event
821 "!a.f.d"
822
823 has_no_event
824 "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a"
825
826 has_no_event
827 "\$ctx.vtid.blah == 0"
828
829 has_no_event
830 "asdf.asdfsd.sadf < 4"
831
832 has_no_event
833 "0 == \$ctx.vtid.blah"
834
835 # check that bytecode linker refuses to link against a
836 # non-string array.
837 has_no_event
838 'arrfield1 != "dontmatch"'
839
840 # check that bytecode linker refuses to link against a
841 # non-string sequence.
842 has_no_event
843 'seqfield1 != "dontmatch"'
844
845 END
846 )
847
848 UST_STR_FILTERS=(
849 str_has_events
850 'str == "hypothecary"'
851
852 str_has_events
853 '"hypothecary" == str'
854
855 str_has_events
856 'str != "hypothecary"'
857
858 str_has_events
859 '"hypothecary" != str'
860
861 str_has_events
862 'str == "*cary"'
863
864 str_has_events
865 '"*cary" == str'
866
867 str_has_events
868 'str != "*cary"'
869
870 str_has_events
871 '"*cary" != str'
872
873 str_has_events
874 'str == "hypo*"'
875
876 str_has_events
877 '"hypo*" == str'
878
879 str_has_events
880 'str != "hypo*"'
881
882 str_has_events
883 '"hypo*" != str'
884
885 str_has_events
886 'str == "*the*"'
887
888 str_has_events
889 '"*the*" == str'
890
891 str_has_events
892 'str != "*the*"'
893
894 str_has_events
895 '"*the*" != str'
896
897 str_has_events
898 'str == "**"'
899
900 str_has_events
901 '"**" == str'
902
903 str_has_no_event
904 'str != "**"'
905
906 str_has_no_event
907 '"**" != str'
908
909 str_has_events
910 'str == "sc*"'
911
912 str_has_events
913 '"sc*" == str'
914
915 str_has_events
916 'str != "sc*"'
917
918 str_has_events
919 '"sc*" != str'
920
921 str_has_events
922 'str == "de*al"'
923
924 str_has_events
925 '"de*al" == str'
926
927 str_has_events
928 'str != "de*al"'
929
930 str_has_events
931 '"de*al" != str'
932
933 str_has_events
934 'str == "*po*siz*"'
935
936 str_has_events
937 '"*po*siz*" == str'
938
939 str_has_events
940 'str != "*po*siz*"'
941
942 str_has_events
943 '"*po*siz*" != str'
944
945 str_has_events
946 'str == "*po***siz*"'
947
948 str_has_events
949 '"*po***siz*" == str'
950
951 str_has_events
952 'str != "*po***siz*"'
953
954 str_has_events
955 '"*po***siz*" != str'
956
957 str_has_no_event
958 'str == "*po*\**siz*"'
959
960 str_has_no_event
961 '"*po*\**siz*" == str'
962
963 str_has_no_event
964 'str == "*zulu*"'
965
966 str_has_no_event
967 '"*zulu*" == str'
968
969 str_has_no_event
970 'str == "8*"'
971
972 str_has_no_event
973 '"8*" == str'
974
975 str_has_no_event
976 'str == "*8"'
977
978 str_has_no_event
979 '"*8" == str'
980
981 str_has_no_event
982 'str == "de\*al"'
983
984 str_has_no_event
985 '"de\*al" == str'
986
987 str_has_events
988 '"salut*" == "salut vous"'
989
990 str_has_events
991 '"salut*" == "salut vous*"'
992
993 str_has_events
994 '"salut vous*" == "salut*"'
995
996 ${KIRK_KRAUSS_TESTS[@]}
997
998 END
999 )
1000
1001 if [ ! -x "$CURDIR/$BIN_NAME" ]; then
1002 BAIL_OUT "No UST nevents binary detected."
1003 fi
1004
1005 IFS="$OLDIFS"
1006
1007 diag "Test UST valid filters"
1008
1009 KERNEL_CHECK=0
1010 i=0
1011 while true; do
1012 validator="${UST_FILTERS[$i]}"
1013
1014 if [ "$validator" = END ]; then
1015 break
1016 fi
1017
1018 filter="${UST_FILTERS[$(( i + 1 ))]}"
1019 test_valid_filter ust -u "tp:tptest" "$filter" "validator_$validator"
1020
1021 if [ $? -eq 1 ]; then
1022 stop_lttng_sessiond
1023 exit 1
1024 fi
1025
1026 i=$(( i + 2 ))
1027 done
1028
1029 i=0
1030 while true; do
1031 validator="${UST_STR_FILTERS[$i]}"
1032
1033 if [ "$validator" = END ]; then
1034 break
1035 fi
1036
1037 filter="${UST_STR_FILTERS[$(( i + 1 ))]}"
1038 test_valid_filter ust_str -u "tp:the_string" "$filter" "validator_$validator"
1039
1040 if [ $? -eq 1 ]; then
1041 stop_lttng_sessiond
1042 exit 1
1043 fi
1044
1045 i=$(( i + 2 ))
1046 done
1047
1048 ### KERNEL TESTS
1049
1050 BIN_NAME="test_valid_filt" # Current script name truncated by kernel
1051
1052 # One to one mapping between filters and validators
1053 # Set IFS to newline to facilitate array declaration
1054 OLDIFS="$IFS"
1055 IFS=$'\n'
1056 KERNEL_FILTERS=(
1057 intfield
1058 "intfield"
1059
1060 intfield_gt
1061 "intfield > 1"
1062
1063 intfield_ge
1064 "intfield >= 1"
1065
1066 intfield_lt
1067 "intfield < 2"
1068
1069 intfield_le
1070 "intfield <= 2"
1071
1072 intfield_eq
1073 "intfield == 1"
1074
1075 intfield_ne
1076 "intfield != 99"
1077
1078 intfield_not
1079 "!intfield"
1080
1081 intfield
1082 "-intfield"
1083
1084 intfield
1085 "--intfield"
1086
1087 intfield
1088 "+intfield"
1089
1090 intfield
1091 "++intfield"
1092
1093 intfield_gt_and_longfield_gt
1094 "intfield > 1 && longfield > 42"
1095
1096 intfield_ge_and_longfield_le
1097 "intfield >= 42 && longfield <= 42"
1098
1099 intfield_lt_or_longfield_gt
1100 "intfield < 1 || longfield > 98"
1101
1102 mixed_str_or_int_and_int
1103 "(stringfield == \"test\" || intfield != 10) && intfield > 33"
1104
1105 has_no_event
1106 "intfield < 42.4242424242"
1107
1108 true_statement
1109 "\"test\" == \"test\""
1110
1111 true_statement
1112 "stringfield == \"test\""
1113
1114 true_statement
1115 "stringfield == \"t*\""
1116
1117 true_statement
1118 "stringfield == \"*\""
1119
1120 intfield
1121 $issue_356_filter
1122
1123 true_statement
1124 "1&1"
1125
1126 true_statement
1127 "0|1"
1128
1129 true_statement
1130 "0^1"
1131
1132 true_statement
1133 "seqfield4[1]==2"
1134
1135 true_statement
1136 "arrfield1[1]==2"
1137
1138 true_statement
1139 "arrfield1[1]==2"
1140
1141 true_statement
1142 "arrfield3[1]==2"
1143
1144 true_statement
1145 "seqfield3[1]==2"
1146
1147 true_statement
1148 "1 | (1 | (1 | 1))"
1149
1150 true_statement
1151 "1 >= (1 >= (1 >= 1))"
1152
1153 true_statement
1154 "(0x101 & 0x100) == 0x100"
1155
1156 true_statement
1157 "(0x101 | 0x10100) == 0x10101"
1158
1159 true_statement
1160 "(0xF00F0F ^ 0xFF0F00) == 0x0F000F"
1161
1162 true_statement
1163 "(1 << 1) == 2"
1164
1165 true_statement
1166 "(4 >> 1) == 2"
1167
1168 true_statement
1169 "(1 << 8) == 256"
1170
1171 true_statement
1172 "(262144 >> 16) == 4"
1173
1174 true_statement
1175 "(~0 & 0xffff) == 0xffff"
1176
1177 true_statement
1178 "(~0 & 0xffffffff) == 0xffffffff"
1179
1180 true_statement
1181 "(~0 & 0xffffffffffffffff) == 0xffffffffffffffff"
1182
1183 true_statement
1184 "-1==~0"
1185
1186 true_statement # unsigned bitwise ops
1187 "~0>>4==0x0fffffffffffffff"
1188
1189 has_no_event
1190 "1<<-1"
1191
1192 has_no_event
1193 "1<<10000"
1194
1195 true_statement # comparator is signed, shift is unsigned
1196 "(1<<63) < 0"
1197
1198 true_statement
1199 "(1<<2!=4)==0" # operator priority: shift before equality
1200
1201 true_statement
1202 "1&3==1" # operator priority: masks before equality
1203
1204 true_statement
1205 "(3|1==3)==1" # operator priority: masks before equality
1206
1207 true_statement
1208 "(2^1==3)==1" # operator priority: masks before equality
1209
1210 true_statement
1211 "(1 << 32) == 4294967296"
1212
1213 true_statement
1214 "(1 << 63) == 9223372036854775808"
1215
1216 true_statement
1217 "(arrfield1[2] & 1) == 1"
1218
1219 true_statement
1220 "(arrfield1[2] | 0x111000) == 0x111003"
1221
1222 true_statement
1223 "(arrfield1[0] | arrfield1[1] | arrfield1[2]) == 0x3"
1224
1225 true_statement
1226 "(seqfield4[2] & 1) == 1"
1227
1228 true_statement
1229 "(seqfield4[2] | 0x111000) == 0x111003"
1230
1231 true_statement
1232 "intfield < 0xDEADBEEF"
1233
1234 intfield_lt
1235 "intfield < 0x2"
1236
1237 intfield_lt
1238 "intfield < 02"
1239
1240 true_statement
1241 "stringfield2 == \"\\\*\""
1242
1243 has_no_event
1244 "1.0 || intfield || 1.0"
1245
1246 intfield_gt
1247 "1 < intfield"
1248
1249 has_no_event
1250 "\$ctx.vtid == 0"
1251
1252 has_events
1253 "\$ctx.vtid != 0"
1254
1255 has_no_event
1256 "0 == \$ctx.vtid"
1257
1258 has_events
1259 "0 != \$ctx.vtid"
1260
1261 has_no_event
1262 "\$ctx.vpid == 0"
1263
1264 has_events
1265 "\$ctx.vpid != 0"
1266
1267 has_no_event
1268 "0 == \$ctx.vpid"
1269
1270 has_events
1271 "0 != \$ctx.vpid"
1272
1273 has_no_event
1274 "\$ctx.procname != \"$BIN_NAME\""
1275
1276 has_events
1277 "\$ctx.procname == \"$BIN_NAME\""
1278
1279 has_no_event
1280 "\"$BIN_NAME\" != \$ctx.procname"
1281
1282 has_events
1283 "\"$BIN_NAME\" == \$ctx.procname"
1284
1285 has_no_event
1286 "\$ctx.procname != \"$BIN_NAME*\""
1287
1288 has_events
1289 "\$ctx.procname == \"$BIN_NAME*\""
1290
1291 has_no_event
1292 "\"$BIN_NAME*\" != \$ctx.procname"
1293
1294 has_events
1295 "\"$BIN_NAME*\" == \$ctx.procname"
1296
1297 has_no_event
1298 "\$ctx.procname != \"*\""
1299
1300 has_events
1301 "\$ctx.procname == \"*\""
1302
1303 has_no_event
1304 "\"*\" != \$ctx.procname"
1305
1306 has_events
1307 "\"*\" == \$ctx.procname"
1308
1309 has_no_event
1310 "!a.f.d"
1311
1312 has_no_event
1313 "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a"
1314
1315 has_no_event
1316 "\$ctx.vtid.blah == 0"
1317
1318 has_no_event
1319 "asdf.asdfsd.sadf < 4"
1320
1321 has_no_event
1322 "0 == \$ctx.vtid.blah"
1323
1324 stringfield_has_events
1325 'stringfield == "test"'
1326
1327 stringfield_has_events
1328 '"test" == stringfield'
1329
1330 has_no_event
1331 'stringfield != "test"'
1332
1333 has_no_event
1334 '"test" != stringfield'
1335
1336 stringfield_has_events
1337 'stringfield == "*st"'
1338
1339 stringfield_has_events
1340 '"*st" == stringfield'
1341
1342 has_no_event
1343 'stringfield != "*st"'
1344
1345 has_no_event
1346 '"*st" != stringfield'
1347
1348 stringfield_has_events
1349 'stringfield == "te*"'
1350
1351 stringfield_has_events
1352 '"te*" == stringfield'
1353
1354 has_no_event
1355 'stringfield != "te*"'
1356
1357 has_no_event
1358 '"te*" != stringfield'
1359
1360 stringfield_has_events
1361 'stringfield == "te*t"'
1362
1363 stringfield_has_events
1364 '"te*t" == stringfield'
1365
1366 has_no_event
1367 'stringfield != "te*t"'
1368
1369 has_no_event
1370 '"te*t" != stringfield'
1371
1372 stringfield_has_events
1373 'stringfield == "tes*t"'
1374
1375 stringfield_has_events
1376 '"tes*t" == stringfield'
1377
1378 has_no_event
1379 'stringfield != "tes*t"'
1380
1381 has_no_event
1382 '"tes*t" != stringfield'
1383
1384 stringfield_has_events
1385 'stringfield == "*test"'
1386
1387 stringfield_has_events
1388 '"*test" == stringfield'
1389
1390 has_no_event
1391 'stringfield != "*test"'
1392
1393 has_no_event
1394 '"*test" != stringfield'
1395
1396 stringfield_has_events
1397 'stringfield == "test*"'
1398
1399 stringfield_has_events
1400 '"test*" == stringfield'
1401
1402 has_no_event
1403 'stringfield != "test*"'
1404
1405 has_no_event
1406 '"test*" != stringfield'
1407
1408 stringfield_has_events
1409 'stringfield == "*"'
1410
1411 stringfield_has_events
1412 '"*" == stringfield'
1413
1414 has_no_event
1415 'stringfield != "*"'
1416
1417 has_no_event
1418 '"*" != stringfield'
1419
1420 has_no_event
1421 'stringfield == "test*2"'
1422
1423 has_no_event
1424 'stringfield == "2*test"'
1425
1426 has_no_event
1427 'stringfield == "te\*st"'
1428
1429 has_no_event
1430 'stringfield == "te*ts"'
1431
1432 has_no_event
1433 'stringfield == "*\*test"'
1434
1435 has_no_event
1436 'stringfield == "test\*"'
1437
1438 # check that bytecode linker refuses to link against a
1439 # non-string array.
1440 has_no_event
1441 'arrfield1 != "dontmatch"'
1442
1443 # check that bytecode linker refuses to link against a
1444 # non-string sequence.
1445 has_no_event
1446 'seqfield1 != "dontmatch"'
1447
1448 ${KIRK_KRAUSS_TESTS[@]}
1449
1450 END
1451 )
1452
1453 IFS=$OLDIFS
1454
1455 if [ "$(id -u)" == "0" ]; then
1456 isroot=1
1457 else
1458 isroot=0
1459 fi
1460
1461 skip $isroot "Root access is needed. Skipping all kernel valid filter tests." $NUM_KERNEL_TESTS ||
1462 {
1463 diag "Test kernel valid filters"
1464
1465 KERNEL_CHECK=1
1466 modprobe lttng-test
1467
1468 i=0
1469 while true; do
1470 validator="${KERNEL_FILTERS[$i]}"
1471
1472 if [ "$validator" = END ]; then
1473 break
1474 fi
1475
1476 filter="${KERNEL_FILTERS[$(( i + 1 ))]}"
1477 test_valid_filter kernel -k "lttng_test_filter_event" "$filter" "validator_$validator"
1478
1479 if [ $? -eq 1 ]; then
1480 stop_lttng_sessiond
1481 exit 1
1482 fi
1483
1484 i=$(( i + 2 ))
1485 done
1486
1487 modprobe --remove lttng-test
1488 }
1489
1490 stop_lttng_sessiond
This page took 0.093615 seconds and 4 git commands to generate.