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=906
27 NUM_KERNEL_TESTS=840
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 "intfield < 0xDEADBEEF"
647
648 intfield_lt
649 "intfield < 0x2"
650
651 intfield_lt
652 "intfield < 02"
653
654 true_statement
655 "stringfield2 == \"\\\*\""
656
657 true_statement
658 "1.0 || intfield || 1.0"
659
660 intfield_gt
661 "1 < intfield"
662
663 has_no_event
664 "\$ctx.vtid == 0"
665
666 has_events
667 "\$ctx.vtid != 0"
668
669 has_no_event
670 "0 == \$ctx.vtid"
671
672 has_events
673 "0 != \$ctx.vtid"
674
675 has_no_event
676 "\$ctx.vpid == 0"
677
678 has_events
679 "\$ctx.vpid != 0"
680
681 has_no_event
682 "0 == \$ctx.vpid"
683
684 has_events
685 "0 != \$ctx.vpid"
686
687 has_no_event
688 "\$ctx.procname != \"$BIN_NAME\""
689
690 has_events
691 "\$ctx.procname == \"$BIN_NAME\""
692
693 has_no_event
694 "\"$BIN_NAME\" != \$ctx.procname"
695
696 has_events
697 "\"$BIN_NAME\" == \$ctx.procname"
698
699 has_no_event
700 "\$ctx.procname != \"$BIN_NAME*\""
701
702 has_events
703 "\$ctx.procname == \"$BIN_NAME*\""
704
705 has_no_event
706 "\"$BIN_NAME*\" != \$ctx.procname"
707
708 has_events
709 "\"$BIN_NAME*\" == \$ctx.procname"
710
711 has_no_event
712 "\$ctx.procname != \"*\""
713
714 has_events
715 "\$ctx.procname == \"*\""
716
717 has_no_event
718 "\"*\" != \$ctx.procname"
719
720 has_events
721 "\"*\" == \$ctx.procname"
722
723 has_no_event
724 "!a.f.d"
725
726 has_no_event
727 "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a"
728
729 has_no_event
730 "\$ctx.vtid.blah == 0"
731
732 has_no_event
733 "asdf.asdfsd.sadf < 4"
734
735 has_no_event
736 "0 == \$ctx.vtid.blah"
737
738 has_no_event
739 "\$ctx.44 == 0"
740
741 has_no_event
742 "0 == \$ctx.44"
743
744 END
745 )
746
747 UST_STR_FILTERS=(
748 str_has_events
749 'str == "hypothecary"'
750
751 str_has_events
752 '"hypothecary" == str'
753
754 str_has_events
755 'str != "hypothecary"'
756
757 str_has_events
758 '"hypothecary" != str'
759
760 str_has_events
761 'str == "*cary"'
762
763 str_has_events
764 '"*cary" == str'
765
766 str_has_events
767 'str != "*cary"'
768
769 str_has_events
770 '"*cary" != str'
771
772 str_has_events
773 'str == "hypo*"'
774
775 str_has_events
776 '"hypo*" == str'
777
778 str_has_events
779 'str != "hypo*"'
780
781 str_has_events
782 '"hypo*" != str'
783
784 str_has_events
785 'str == "*the*"'
786
787 str_has_events
788 '"*the*" == str'
789
790 str_has_events
791 'str != "*the*"'
792
793 str_has_events
794 '"*the*" != str'
795
796 str_has_events
797 'str == "**"'
798
799 str_has_events
800 '"**" == str'
801
802 str_has_no_event
803 'str != "**"'
804
805 str_has_no_event
806 '"**" != str'
807
808 str_has_events
809 'str == "sc*"'
810
811 str_has_events
812 '"sc*" == str'
813
814 str_has_events
815 'str != "sc*"'
816
817 str_has_events
818 '"sc*" != str'
819
820 str_has_events
821 'str == "de*al"'
822
823 str_has_events
824 '"de*al" == str'
825
826 str_has_events
827 'str != "de*al"'
828
829 str_has_events
830 '"de*al" != str'
831
832 str_has_events
833 'str == "*po*siz*"'
834
835 str_has_events
836 '"*po*siz*" == str'
837
838 str_has_events
839 'str != "*po*siz*"'
840
841 str_has_events
842 '"*po*siz*" != str'
843
844 str_has_events
845 'str == "*po***siz*"'
846
847 str_has_events
848 '"*po***siz*" == str'
849
850 str_has_events
851 'str != "*po***siz*"'
852
853 str_has_events
854 '"*po***siz*" != str'
855
856 str_has_no_event
857 'str == "*po*\**siz*"'
858
859 str_has_no_event
860 '"*po*\**siz*" == str'
861
862 str_has_no_event
863 'str == "*zulu*"'
864
865 str_has_no_event
866 '"*zulu*" == str'
867
868 str_has_no_event
869 'str == "8*"'
870
871 str_has_no_event
872 '"8*" == str'
873
874 str_has_no_event
875 'str == "*8"'
876
877 str_has_no_event
878 '"*8" == str'
879
880 str_has_no_event
881 'str == "de\*al"'
882
883 str_has_no_event
884 '"de\*al" == str'
885
886 str_has_events
887 '"salut*" == "salut vous"'
888
889 str_has_events
890 '"salut*" == "salut vous*"'
891
892 str_has_events
893 '"salut vous*" == "salut*"'
894
895 ${KIRK_KRAUSS_TESTS[@]}
896
897 END
898 )
899
900 if [ ! -x "$CURDIR/$BIN_NAME" ]; then
901 BAIL_OUT "No UST nevents binary detected."
902 fi
903
904 IFS="$OLDIFS"
905
906 diag "Test UST valid filters"
907
908 KERNEL_CHECK=0
909 i=0
910 while true; do
911 validator="${UST_FILTERS[$i]}"
912
913 if [ "$validator" = END ]; then
914 break
915 fi
916
917 filter="${UST_FILTERS[$(( i + 1 ))]}"
918 test_valid_filter ust -u "tp:tptest" "$filter" "validator_$validator"
919
920 if [ $? -eq 1 ]; then
921 stop_lttng_sessiond
922 exit 1
923 fi
924
925 i=$(( i + 2 ))
926 done
927
928 i=0
929 while true; do
930 validator="${UST_STR_FILTERS[$i]}"
931
932 if [ "$validator" = END ]; then
933 break
934 fi
935
936 filter="${UST_STR_FILTERS[$(( i + 1 ))]}"
937 test_valid_filter ust_str -u "tp:the_string" "$filter" "validator_$validator"
938
939 if [ $? -eq 1 ]; then
940 stop_lttng_sessiond
941 exit 1
942 fi
943
944 i=$(( i + 2 ))
945 done
946
947 ### KERNEL TESTS
948
949 BIN_NAME="test_valid_filt" # Current script name truncated by kernel
950
951 # One to one mapping between filters and validators
952 # Set IFS to newline to facilitate array declaration
953 OLDIFS="$IFS"
954 IFS=$'\n'
955 KERNEL_FILTERS=(
956 intfield
957 "intfield"
958
959 intfield_gt
960 "intfield > 1"
961
962 intfield_ge
963 "intfield >= 1"
964
965 intfield_lt
966 "intfield < 2"
967
968 intfield_le
969 "intfield <= 2"
970
971 intfield_eq
972 "intfield == 1"
973
974 intfield_ne
975 "intfield != 99"
976
977 intfield_not
978 "!intfield"
979
980 intfield
981 "-intfield"
982
983 intfield
984 "--intfield"
985
986 intfield
987 "+intfield"
988
989 intfield
990 "++intfield"
991
992 intfield_gt_and_longfield_gt
993 "intfield > 1 && longfield > 42"
994
995 intfield_ge_and_longfield_le
996 "intfield >= 42 && longfield <= 42"
997
998 intfield_lt_or_longfield_gt
999 "intfield < 1 || longfield > 98"
1000
1001 mixed_str_or_int_and_int
1002 "(stringfield == \"test\" || intfield != 10) && intfield > 33"
1003
1004 has_no_event
1005 "intfield < 42.4242424242"
1006
1007 true_statement
1008 "\"test\" == \"test\""
1009
1010 true_statement
1011 "stringfield == \"test\""
1012
1013 true_statement
1014 "stringfield == \"t*\""
1015
1016 true_statement
1017 "stringfield == \"*\""
1018
1019 intfield
1020 $issue_356_filter
1021
1022 true_statement
1023 "intfield < 0xDEADBEEF"
1024
1025 intfield_lt
1026 "intfield < 0x2"
1027
1028 intfield_lt
1029 "intfield < 02"
1030
1031 true_statement
1032 "stringfield2 == \"\\\*\""
1033
1034 has_no_event
1035 "1.0 || intfield || 1.0"
1036
1037 intfield_gt
1038 "1 < intfield"
1039
1040 has_no_event
1041 "\$ctx.vtid == 0"
1042
1043 has_events
1044 "\$ctx.vtid != 0"
1045
1046 has_no_event
1047 "0 == \$ctx.vtid"
1048
1049 has_events
1050 "0 != \$ctx.vtid"
1051
1052 has_no_event
1053 "\$ctx.vpid == 0"
1054
1055 has_events
1056 "\$ctx.vpid != 0"
1057
1058 has_no_event
1059 "0 == \$ctx.vpid"
1060
1061 has_events
1062 "0 != \$ctx.vpid"
1063
1064 has_no_event
1065 "\$ctx.procname != \"$BIN_NAME\""
1066
1067 has_events
1068 "\$ctx.procname == \"$BIN_NAME\""
1069
1070 has_no_event
1071 "\"$BIN_NAME\" != \$ctx.procname"
1072
1073 has_events
1074 "\"$BIN_NAME\" == \$ctx.procname"
1075
1076 has_no_event
1077 "\$ctx.procname != \"$BIN_NAME*\""
1078
1079 has_events
1080 "\$ctx.procname == \"$BIN_NAME*\""
1081
1082 has_no_event
1083 "\"$BIN_NAME*\" != \$ctx.procname"
1084
1085 has_events
1086 "\"$BIN_NAME*\" == \$ctx.procname"
1087
1088 has_no_event
1089 "\$ctx.procname != \"*\""
1090
1091 has_events
1092 "\$ctx.procname == \"*\""
1093
1094 has_no_event
1095 "\"*\" != \$ctx.procname"
1096
1097 has_events
1098 "\"*\" == \$ctx.procname"
1099
1100 has_no_event
1101 "!a.f.d"
1102
1103 has_no_event
1104 "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a"
1105
1106 has_no_event
1107 "\$ctx.vtid.blah == 0"
1108
1109 has_no_event
1110 "asdf.asdfsd.sadf < 4"
1111
1112 has_no_event
1113 "0 == \$ctx.vtid.blah"
1114
1115 has_no_event
1116 "\$ctx.44 == 0"
1117
1118 has_no_event
1119 "0 == \$ctx.44"
1120
1121 stringfield_has_events
1122 'stringfield == "test"'
1123
1124 stringfield_has_events
1125 '"test" == stringfield'
1126
1127 has_no_event
1128 'stringfield != "test"'
1129
1130 has_no_event
1131 '"test" != stringfield'
1132
1133 stringfield_has_events
1134 'stringfield == "*st"'
1135
1136 stringfield_has_events
1137 '"*st" == stringfield'
1138
1139 has_no_event
1140 'stringfield != "*st"'
1141
1142 has_no_event
1143 '"*st" != stringfield'
1144
1145 stringfield_has_events
1146 'stringfield == "te*"'
1147
1148 stringfield_has_events
1149 '"te*" == stringfield'
1150
1151 has_no_event
1152 'stringfield != "te*"'
1153
1154 has_no_event
1155 '"te*" != stringfield'
1156
1157 stringfield_has_events
1158 'stringfield == "te*t"'
1159
1160 stringfield_has_events
1161 '"te*t" == stringfield'
1162
1163 has_no_event
1164 'stringfield != "te*t"'
1165
1166 has_no_event
1167 '"te*t" != stringfield'
1168
1169 stringfield_has_events
1170 'stringfield == "tes*t"'
1171
1172 stringfield_has_events
1173 '"tes*t" == stringfield'
1174
1175 has_no_event
1176 'stringfield != "tes*t"'
1177
1178 has_no_event
1179 '"tes*t" != stringfield'
1180
1181 stringfield_has_events
1182 'stringfield == "*test"'
1183
1184 stringfield_has_events
1185 '"*test" == stringfield'
1186
1187 has_no_event
1188 'stringfield != "*test"'
1189
1190 has_no_event
1191 '"*test" != stringfield'
1192
1193 stringfield_has_events
1194 'stringfield == "test*"'
1195
1196 stringfield_has_events
1197 '"test*" == stringfield'
1198
1199 has_no_event
1200 'stringfield != "test*"'
1201
1202 has_no_event
1203 '"test*" != stringfield'
1204
1205 stringfield_has_events
1206 'stringfield == "*"'
1207
1208 stringfield_has_events
1209 '"*" == stringfield'
1210
1211 has_no_event
1212 'stringfield != "*"'
1213
1214 has_no_event
1215 '"*" != stringfield'
1216
1217 has_no_event
1218 'stringfield == "test*2"'
1219
1220 has_no_event
1221 'stringfield == "2*test"'
1222
1223 has_no_event
1224 'stringfield == "te\*st"'
1225
1226 has_no_event
1227 'stringfield == "te*ts"'
1228
1229 has_no_event
1230 'stringfield == "*\*test"'
1231
1232 has_no_event
1233 'stringfield == "test\*"'
1234
1235 ${KIRK_KRAUSS_TESTS[@]}
1236
1237 END
1238 )
1239
1240 IFS=$OLDIFS
1241
1242 if [ "$(id -u)" == "0" ]; then
1243 isroot=1
1244 else
1245 isroot=0
1246 fi
1247
1248 skip $isroot "Root access is needed. Skipping all kernel valid filter tests." $NUM_KERNEL_TESTS ||
1249 {
1250 diag "Test kernel valid filters"
1251
1252 KERNEL_CHECK=1
1253 modprobe lttng-test
1254
1255 i=0
1256 while true; do
1257 validator="${KERNEL_FILTERS[$i]}"
1258
1259 if [ "$validator" = END ]; then
1260 break
1261 fi
1262
1263 filter="${KERNEL_FILTERS[$(( i + 1 ))]}"
1264 test_valid_filter kernel -k "lttng_test_filter_event" "$filter" "validator_$validator"
1265
1266 if [ $? -eq 1 ]; then
1267 stop_lttng_sessiond
1268 exit 1
1269 fi
1270
1271 i=$(( i + 2 ))
1272 done
1273
1274 rmmod lttng-test
1275 }
1276
1277 stop_lttng_sessiond
This page took 0.086255 seconds and 5 git commands to generate.