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