X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=tests%2Fregression%2Ftools%2Ffiltering%2Ftest_invalid_filter;h=9df5f2cbfc439bfd542633e6b11126537e146dcc;hp=700fa236940117fda9d85b78a272fef1a52cbb33;hb=5da9cf86d63bcb9d4d077155efc707048df4fd0c;hpb=03276eea085914fc02bd798dce8ac36d3007b1f2 diff --git a/tests/regression/tools/filtering/test_invalid_filter b/tests/regression/tools/filtering/test_invalid_filter index 700fa2369..9df5f2cbf 100755 --- a/tests/regression/tools/filtering/test_invalid_filter +++ b/tests/regression/tools/filtering/test_invalid_filter @@ -24,19 +24,22 @@ SESSION_NAME="filter-invalid" EVENT_NAME="bogus" ENABLE_EVENT_STDERR="/tmp/invalid-filters-stderr" TRACE_PATH=$(mktemp -d) -NUM_TESTS=119 +NUM_GLOBAL_TESTS=2 +NUM_UST_TESTS=123 +NUM_KERNEL_TESTS=123 +NUM_TESTS=$(($NUM_UST_TESTS+$NUM_KERNEL_TESTS+$NUM_GLOBAL_TESTS)) source $TESTDIR/utils/utils.sh -print_test_banner "$TEST_DESC" - -function enable_ust_lttng_event_filter +function enable_lttng_event_filter { - sess_name="$1" - event_name="$2" - filter="$3" + domain="$1" + sess_name="$2" + event_name="$3" + filter="$4" - $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event $event_name -s $sess_name -u --filter "$filter" 2> $ENABLE_EVENT_STDERR 1> /dev/null + $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event $event_name -s $sess_name \ + $domain --filter "$filter" 2> $ENABLE_EVENT_STDERR 1> /dev/null # Enable must fail if [ $? -eq 0 ]; then @@ -50,23 +53,26 @@ function enable_ust_lttng_event_filter function test_invalid_filter { - test_invalid_filter="$1" + domain="$1" + test_invalid_filter="$2" diag "Test filter expression with invalid filter" diag "Filter: $test_invalid_filter" # Create session - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH # Apply filter - enable_ust_lttng_event_filter $SESSION_NAME $EVENT_NAME "$test_invalid_filter" + enable_lttng_event_filter $domain $SESSION_NAME $EVENT_NAME "$test_invalid_filter" # Destroy session - destroy_lttng_session $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME } function test_bytecode_limit { + domain="$1" + # Current bytecode limitation is 65536 bytes long. # Generate a huge bytecode with some perl-fu BYTECODE_LIMIT=`perl -e 'print "intfield" . " && 1" x5460'` @@ -74,17 +80,19 @@ function test_bytecode_limit diag "Test filter bytecode limits (64KiB)" # Create session - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH # Apply filter - enable_ust_lttng_event_filter $SESSION_NAME $EVENT_NAME "$BYTECODE_LIMIT" + enable_lttng_event_filter $domain $SESSION_NAME $EVENT_NAME "$BYTECODE_LIMIT" # Destroy session - destroy_lttng_session $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME } plan_tests $NUM_TESTS +print_test_banner "$TEST_DESC" + IFS=$'\n' INVALID_FILTERS=( # Unsupported ops @@ -109,16 +117,12 @@ INVALID_FILTERS=( # Unmatched parenthesis "((((((((((((((intfield)))))))))))))" '0 || ("abc" != "def")) && (3 < 4)' - # Field dereference - "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.b.c->d.e.f+1" - "!a.f.d" - "asdf.asdfsd.sadf < 4" "asdfasdf->asdfasdf < 2" - # String can't be root node + # String can\'t be root node "\"somestring\"" # Unary op on string not allowed "!\"somestring\"" @@ -133,15 +137,40 @@ INVALID_FILTERS=( # Nesting of binary operator not allowed "1 | (1 | (1 | 1))" "1 > (1 > (1 > 1))" + "\$ctx == 0" + "0 == \$ctx" + # Only \$ctx is supported for now + "\$global.value == 0" + "0 == \$global.value" + # A wildcard should only appear as the last character in a string literal + "msg == \"my_event*_blah\"" ) start_lttng_sessiond +diag "Test UST filters" for FILTER in ${INVALID_FILTERS[@]}; do - test_invalid_filter "$FILTER" + test_invalid_filter -u "$FILTER" done -test_bytecode_limit +test_bytecode_limit -u + +if [ "$(id -u)" == "0" ]; then + isroot=1 +else + isroot=0 +fi + +skip $isroot "Root access is needed. Skipping all kernel invalid filter tests." $NUM_KERNEL_TESTS || +{ + diag "Test kernel filters" + for FILTER in ${INVALID_FILTERS[@]}; + do + test_invalid_filter -k "$FILTER" + done + + test_bytecode_limit -k +} unset IFS stop_lttng_sessiond