X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=tests%2Futils%2Futils.sh;h=2d53a7237350e6df4b5492ab2930c0d2f6f391a9;hp=100f4fd2a1fc02566518168a2d2cd57447d71061;hb=08f96a383c38cc1f107f6a3c23137e025936a929;hpb=4b01971f9df6293ace728642f15f5262691cec66 diff --git a/tests/utils/utils.sh b/tests/utils/utils.sh index 100f4fd2a..2d53a7237 100644 --- a/tests/utils/utils.sh +++ b/tests/utils/utils.sh @@ -125,12 +125,23 @@ function conf_proc_count() echo } +# Check if base lttng-modules are present. +# Bail out on failure +function validate_lttng_modules_present () +{ + modprobe -n lttng-tracer 2>/dev/null + if [ $? -ne 0 ]; then + BAIL_OUT "LTTng modules not detected." + fi +} + function enable_kernel_lttng_event { - local expected_to_fail="$1" - local sess_name="$2" - local event_name="$3" - local channel_name="$4" + local withtap="$1" + local expected_to_fail="$2" + local sess_name="$3" + local event_name="$4" + local channel_name="$5" if [ -z "$event_name" ]; then # Enable all event if no event name specified @@ -148,20 +159,30 @@ function enable_kernel_lttng_event ret=$? if [[ $expected_to_fail -eq "1" ]]; then test $ret -ne "0" - ok $? "Enable kernel event $event_name for session $session_name on channel $channel_name failed as expected" + ret=$? + if [ $withtap -eq "1" ]; then + ok $ret "Enable kernel event $event_name for session $session_name on channel $channel_name failed as expected" + fi else - ok $ret "Enable kernel event $event_name for session $sess_name" + if [ $withtap -eq "1" ]; then + ok $ret "Enable kernel event $event_name for session $sess_name" + fi fi } function enable_kernel_lttng_event_ok () { - enable_kernel_lttng_event 0 "$@" + enable_kernel_lttng_event 1 0 "$@" } function enable_kernel_lttng_event_fail () { - enable_kernel_lttng_event 1 "$@" + enable_kernel_lttng_event 1 1 "$@" +} + +function enable_kernel_lttng_event_notap () +{ + enable_kernel_lttng_event 0 0 "$@" } # Old interface @@ -251,28 +272,45 @@ function lttng_disable_kernel_syscall_fail() function lttng_enable_kernel_channel() { - local expected_to_fail=$1 - local sess_name=$2 - local channel_name=$3 + local withtap=$1 + local expected_to_fail=$2 + local sess_name=$3 + local channel_name=$4 + local opt=$5 - $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel -k $channel_name -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST + $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel -k $channel_name -s $sess_name $opt 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST ret=$? if [[ $expected_to_fail -eq "1" ]]; then test "$ret" -ne "0" - ok $? "Enable channel $channel_name for session $sess_name failed as expected" + ret=$? + if [ $withtap -eq "1" ]; then + ok $ret "Enable channel $channel_name for session $sess_name failed as expected" + fi else - ok $ret "Enable channel $channel_name for session $sess_name" + if [ $withtap -eq "1" ]; then + ok $ret "Enable channel $channel_name for session $sess_name" + fi fi } function lttng_enable_kernel_channel_ok() { - lttng_enable_kernel_channel 0 "$@" + lttng_enable_kernel_channel 1 0 "$@" } function lttng_enable_kernel_channel_fail() { - lttng_enable_kernel_channel 1 "$@" + lttng_enable_kernel_channel 1 1 "$@" +} + +function lttng_enable_kernel_channel_notap() +{ + lttng_enable_kernel_channel 0 0 "$@" +} + +function enable_kernel_lttng_channel_ok() +{ + lttng_enable_kernel_channel 1 0 "$@" } function lttng_disable_kernel_channel() @@ -685,59 +723,92 @@ function create_lttng_session_no_output () ok $? "Create session $sess_name in no-output mode" } +function create_lttng_session_uri () { + local sess_name=$1 + local uri=$2 + local opts="${@:3}" + + $TESTDIR/../src/bin/lttng/$LTTNG_BIN create $sess_name -U $uri $opts 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST + ok $? "Create session $sess_name with uri:$uri and opts: $opts" +} + function create_lttng_session () { - local expected_to_fail=$1 - local sess_name=$2 - local trace_path=$3 - local opt=$4 + local withtap=$1 + local expected_to_fail=$2 + local sess_name=$3 + local trace_path=$4 + local opt=$5 $TESTDIR/../src/bin/lttng/$LTTNG_BIN create $sess_name -o $trace_path $opt > $OUTPUT_DEST ret=$? - if [[ $expected_to_fail -eq "1" ]]; then + if [ $expected_to_fail -eq "1" ]; then test "$ret" -ne "0" - ok $? "Create session $sess_name in $trace_path failed as expected" + ret=$? + if [ $withtap -eq "1" ]; then + ok $ret "Create session $sess_name in $trace_path failed as expected" + fi else - ok $ret "Create session $sess_name in $trace_path" + if [ $withtap -eq "1" ]; then + ok $ret "Create session $sess_name in $trace_path" + fi fi + return $ret } function create_lttng_session_ok () { - create_lttng_session 0 "$@" + create_lttng_session 1 0 "$@" } function create_lttng_session_fail () { - create_lttng_session 1 "$@" + create_lttng_session 1 1 "$@" +} + +function create_lttng_session_notap () +{ + create_lttng_session 0 0 "$@" } function enable_ust_lttng_channel () { - local expected_to_fail=$1 - local sess_name=$2 - local channel_name=$3 - local opt=$4 + local withtap=$1 + local expected_to_fail=$2 + local sess_name=$3 + local channel_name=$4 + local opt=$5 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel -u $channel_name -s $sess_name $opt 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST ret=$? if [[ $expected_to_fail -eq "1" ]]; then test "$ret" -ne "0" - ok $? "Enable channel $channel_name for session $sess_name failed as expected" + ret=$? + if [ $withtap -eq "1" ]; then + ok $ret "Enable channel $channel_name for session $sess_name failed as expected" + fi else - ok $ret "Enable channel $channel_name for session $sess_name" + if [ $withtap -eq "1" ]; then + ok $ret "Enable channel $channel_name for session $sess_name" + fi fi + return $ret } function enable_ust_lttng_channel_ok () { - enable_ust_lttng_channel 0 "$@" + enable_ust_lttng_channel 1 0 "$@" } function enable_ust_lttng_channel_fail () { - enable_ust_lttng_channel 1 "$@" + enable_ust_lttng_channel 1 1 "$@" +} + +function enable_ust_lttng_channel_notap () +{ + enable_ust_lttng_channel 0 0 "$@" } function disable_ust_lttng_channel() @@ -787,10 +858,11 @@ function enable_lttng_mmap_overwrite_ust_channel() function enable_ust_lttng_event () { - local expected_to_fail=$1 - local sess_name=$2 - local event_name="$3" - local channel_name=$4 + local withtap=$1 + local expected_to_fail=$2 + local sess_name=$3 + local event_name="$4" + local channel_name=$5 if [ -z $channel_name ]; then # default channel if none specified @@ -803,20 +875,31 @@ function enable_ust_lttng_event () ret=$? if [[ $expected_to_fail -eq "1" ]]; then test $ret -ne "0" - ok $? "Enable ust event $event_name for session $session_name failed as expected" + ret=$? + if [[ $withtap -eq "1" ]]; then + ok $ret "Enable ust event $event_name for session $session_name failed as expected" + fi else - ok $ret "Enable ust event $event_name for session $sess_name" + if [[ $withtap -eq "1" ]]; then + ok $ret "Enable ust event $event_name for session $sess_name" + fi fi + return $ret } function enable_ust_lttng_event_ok () { - enable_ust_lttng_event 0 "$@" + enable_ust_lttng_event 1 0 "$@" } function enable_ust_lttng_event_fail () { - enable_ust_lttng_event 1 "$@" + enable_ust_lttng_event 1 1 "$@" +} + +function enable_ust_lttng_event_notap () +{ + enable_ust_lttng_event 0 0 "$@" } function enable_jul_lttng_event() @@ -1050,30 +1133,40 @@ function stop_lttng_tracing_fail () function destroy_lttng_session () { - local expected_to_fail=$1 - local sess_name=$2 + local withtap=$1 + local expected_to_fail=$2 + local sess_name=$3 $TESTDIR/../src/bin/lttng/$LTTNG_BIN destroy $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST ret=$? if [[ $expected_to_fail -eq "1" ]]; then test "$ret" -ne "0" - ok $? "Destroy session $sess_name failed as expected" + ret=$? + if [ $withtap -eq "1" ]; then + ok $ret "Destroy session $sess_name failed as expected" + fi else - ok $ret "Destroy session $sess_name" + if [ $withtap -eq "1" ]; then + ok $ret "Destroy session $sess_name" + fi fi } function destroy_lttng_session_ok () { - destroy_lttng_session 0 "$@" + destroy_lttng_session 1 0 "$@" } function destroy_lttng_session_fail () { - destroy_lttng_session 1 "$@" + destroy_lttng_session 1 1 "$@" } +function destroy_lttng_session_notap () +{ + destroy_lttng_session 0 0 "$@" +} function destroy_lttng_sessions () { @@ -1231,6 +1324,26 @@ function lttng_untrack_fail() lttng_untrack 1 "$@" } +function lttng_track_pid_ok() +{ + PID=$1 + "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" track --kernel --pid=$PID 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST + ok $? "Lttng track pid on the kernel domain" +} + +function lttng_untrack_kernel_all_ok() +{ + "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" untrack --kernel --pid --all 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST + ok $? "Lttng untrack all pid on the kernel domain" +} + +function lttng_add_context_list() +{ + $TESTDIR/../src/bin/lttng/$LTTNG_BIN add-context --list 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST + ret=$? + ok $ret "Context listing" +} + function add_context_lttng() { local expected_to_fail="$1" @@ -1269,6 +1382,29 @@ function add_context_kernel_fail() add_context_lttng 1 -k "$@" } +function validate_metadata_event () +{ + local event_name=$1 + local nr_event_id=$2 + local trace_path=$3 + + local metadata_file=$(find $trace_path | grep metadata) + local metadata_path=$(dirname $metadata_file) + + which $BABELTRACE_BIN >/dev/null + skip $? -ne 0 "Babeltrace binary not found. Skipping trace matches" + + local count=$($BABELTRACE_BIN --output-format=ctf-metadata $metadata_path | grep $event_name | wc -l) + + if [ "$count" -ne "$nr_event_id" ]; then + fail "Metadata match with the metadata of $count event(s) named $event_name" + diag "$count matching event id found in metadata" + else + pass "Metadata match with the metadata of $count event(s) named $event_name" + fi + +} + function trace_matches () { local event_name=$1 @@ -1300,12 +1436,12 @@ function trace_match_only() local count=$($BABELTRACE_BIN $trace_path | grep $event_name | wc -l) local total=$($BABELTRACE_BIN $trace_path | wc -l) - if [ "$nr_iter" -eq "$count" ] && [ "$total" -eq "$nr_iter" ]; then - pass "Trace match with $total event $event_name" - else - fail "Trace match" - diag "$total event(s) found, expecting $nr_iter of event $event_name and only found $count" - fi + if [ "$nr_iter" -eq "$count" ] && [ "$total" -eq "$nr_iter" ]; then + pass "Trace match with $total event $event_name" + else + fail "Trace match" + diag "$total event(s) found, expecting $nr_iter of event $event_name and only found $count" + fi } function validate_trace @@ -1383,7 +1519,7 @@ function validate_trace_exp() which $BABELTRACE_BIN >/dev/null skip $? -ne 0 "Babeltrace binary not found. Skipping trace validation" - traced=$($BABELTRACE_BIN $trace_path 2>/dev/null | grep ${event_exp} | wc -l) + traced=$($BABELTRACE_BIN $trace_path 2>/dev/null | grep --extended-regexp ${event_exp} | wc -l) if [ "$traced" -ne 0 ]; then pass "Validate trace for expression '${event_exp}', $traced events" else @@ -1402,11 +1538,11 @@ function validate_trace_only_exp() which $BABELTRACE_BIN >/dev/null skip $? -ne 0 "Babeltrace binary not found. Skipping trace matches" - local count=$($BABELTRACE_BIN $trace_path | grep ${event_exp} | wc -l) + local count=$($BABELTRACE_BIN $trace_path | grep --extended-regexp ${event_exp} | wc -l) local total=$($BABELTRACE_BIN $trace_path | wc -l) if [ "$count" -ne 0 ] && [ "$total" -eq "$count" ]; then - pass "Trace match with $total for expression '${event_exp}" + pass "Trace match with $total for expression '${event_exp}'" else fail "Trace match" diag "$total syscall event(s) found, only syscalls matching expression '${event_exp}' ($count occurrences) are expected" @@ -1424,7 +1560,14 @@ function validate_trace_empty() skip 0 "Babeltrace binary not found. Skipping trace validation" fi - traced=$($BABELTRACE_BIN $trace_path 2>/dev/null | wc -l) + events=$($BABELTRACE_BIN $trace_path 2>/dev/null) + ret=$? + if [ $ret -ne 0 ]; then + fail "Failed to parse trace" + return $ret + fi + + traced=$(echo -n "$events" | wc -l) if [ "$traced" -eq 0 ]; then pass "Validate empty trace" else @@ -1485,6 +1628,31 @@ function regenerate_statedump_fail () regenerate_statedump 1 "$@" } +function rotate_session () +{ + local expected_to_fail=$1 + local sess_name=$2 + + $TESTDIR/../src/bin/lttng/$LTTNG_BIN rotate $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST + ret=$? + if [[ $expected_to_fail -eq "1" ]]; then + test "$ret" -ne "0" + ok $? "Expected fail on rotate session $sess_name" + else + ok $ret "Rotate session $sess_name" + fi +} + +function rotate_session_ok () +{ + rotate_session 0 "$@" +} + +function rotate_session_fail () +{ + rotate_session 1 "$@" +} + function destructive_tests_enabled () { if [ ${LTTNG_ENABLE_DESTRUCTIVE_TESTS} = "will-break-my-system" ]; then @@ -1493,3 +1661,55 @@ function destructive_tests_enabled () return 1 fi } + +function lttng_enable_rotation_timer () +{ + local expected_to_fail=$1 + local sess_name=$2 + local period=$3 + + $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-rotation -s $sess_name --timer $period 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST + ret=$? + if [[ $expected_to_fail -eq "1" ]]; then + test "$ret" -ne "0" + ok $? "Expected fail on rotate session $sess_name" + else + ok $ret "Rotate session $sess_name" + fi +} + +function lttng_enable_rotation_timer_ok () +{ + lttng_enable_rotation_timer 0 $@ +} + +function lttng_enable_rotation_timer_fail () +{ + lttng_enable_rotation_timer 1 $@ +} + +function lttng_enable_rotation_size () +{ + local expected_to_fail=$1 + local sess_name=$2 + local size=$3 + + $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-rotation -s $sess_name --size $size 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST + ret=$? + if [[ $expected_to_fail -eq "1" ]]; then + test "$ret" -ne "0" + ok $? "Expected fail on rotate session $sess_name" + else + ok $ret "Rotate session $sess_name" + fi +} + +function lttng_enable_rotation_size_ok () +{ + lttng_enable_rotation_size 0 $@ +} + +function lttng_enable_rotation_size_fail () +{ + lttng_enable_rotation_size 1 $@ +}