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