X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=tests%2Fregression%2Fkernel%2Ftest_userspace_probe;h=a71320274e9b5af46ba0d71dab85476aab755adc;hb=07fc38592a616d55400029dfa074cef11ad406df;hp=f6da00dd4b0f1ebc42deec20de595c7c9e52e333;hpb=ef3dfe5d31c88fb548189a6441aaf8b2afc0bd4b;p=lttng-tools.git diff --git a/tests/regression/kernel/test_userspace_probe b/tests/regression/kernel/test_userspace_probe index f6da00dd4..a71320274 100755 --- a/tests/regression/kernel/test_userspace_probe +++ b/tests/regression/kernel/test_userspace_probe @@ -1,20 +1,10 @@ #!/bin/bash # -# Copyright (C) - 2017 Erica Bugden -# Copyright (C) - 2017 Francis Deslauriers +# Copyright (C) 2017 Erica Bugden +# Copyright (C) 2017 Francis Deslauriers # -# This library is free software; you can redistribute it and/or modify it under -# the terms of the GNU Lesser General Public License as published by the Free -# Software Foundation; version 2.1 of the License. +# SPDX-License-Identifier: LGPL-2.1-only # -# This library is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more -# details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with this library; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA TEST_DESC="Userspace probe - Testing userspace probe on ELF symbol" @@ -32,7 +22,7 @@ SDT_TEST_BIN_NAME="userspace-probe-sdt-binary" SDT_TEST_BIN="$SDT_TEST_BIN_DIR/$SDT_TEST_BIN_NAME" ELF_SYMBOL="test_function" PROBE_EVENT_NAME=userspace_probe_test_event -NUM_TESTS=87 +NUM_TESTS=93 OUTPUT_DEST=/dev/null ERROR_OUTPUT_DEST=/dev/null @@ -139,6 +129,31 @@ function test_userspace_probe_enable_elf_symbol_not_function () rm -rf "$TRACE_PATH" } +function test_userspace_probe_unsupported_types () +{ + TRACE_PATH=$(mktemp -d) + SESSION_NAME="test_userspace_probe_unsupported_types" + # Userspace probe at an address or at an offset to a function + # instrumentation description types are not supported at the moment. + ENABLE_EXPR_1="elf:$ELF_TEST_BIN:0x400030" + ENABLE_EXPR_2="elf:$ELF_TEST_BIN:4194364" + ENABLE_EXPR_3="elf:$ELF_TEST_BIN:$ELF_SYMBOL+0x21" + ENABLE_EXPR_4="elf:$ELF_TEST_BIN:$ELF_SYMBOL+2" + + diag "Userspace probe enable with unsupported instrumentation description type" + + create_lttng_session_ok $SESSION_NAME "$TRACE_PATH" + + lttng_enable_kernel_userspace_probe_event_fail $SESSION_NAME "$ENABLE_EXPR_1" $PROBE_EVENT_NAME + lttng_enable_kernel_userspace_probe_event_fail $SESSION_NAME "$ENABLE_EXPR_2" $PROBE_EVENT_NAME + lttng_enable_kernel_userspace_probe_event_fail $SESSION_NAME "$ENABLE_EXPR_3" $PROBE_EVENT_NAME + lttng_enable_kernel_userspace_probe_event_fail $SESSION_NAME "$ENABLE_EXPR_4" $PROBE_EVENT_NAME + + destroy_lttng_session_ok $SESSION_NAME + + rm -rf "$TRACE_PATH" +} + function test_userspace_probe_enable_implicit_probe_type () { TRACE_PATH=$(mktemp -d) @@ -151,10 +166,10 @@ function test_userspace_probe_enable_implicit_probe_type () lttng_enable_kernel_userspace_probe_event_ok $SESSION_NAME "$ENABLE_EXPR" $PROBE_EVENT_NAME - validate_list $SESSION_NAME $ELF_SYMBOL - validate_list $SESSION_NAME $ELF_TEST_BIN_NAME - validate_list $SESSION_NAME "ELF" - validate_list $SESSION_NAME "Function" + validate_list $SESSION_NAME $ELF_SYMBOL + validate_list $SESSION_NAME $ELF_TEST_BIN_NAME + validate_list $SESSION_NAME "ELF" + validate_list $SESSION_NAME "Function" destroy_lttng_session_ok $SESSION_NAME @@ -173,10 +188,10 @@ function test_userspace_probe_enable_elf_symbol_exists () lttng_enable_kernel_userspace_probe_event_ok $SESSION_NAME "$ENABLE_EXPR" $PROBE_EVENT_NAME - validate_list $SESSION_NAME $ELF_SYMBOL - validate_list $SESSION_NAME $ELF_TEST_BIN_NAME - validate_list $SESSION_NAME "ELF" - validate_list $SESSION_NAME "Function" + validate_list $SESSION_NAME $ELF_SYMBOL + validate_list $SESSION_NAME $ELF_TEST_BIN_NAME + validate_list $SESSION_NAME "ELF" + validate_list $SESSION_NAME "Function" destroy_lttng_session_ok $SESSION_NAME @@ -199,10 +214,10 @@ function test_userspace_probe_enable_in_path () lttng_enable_kernel_userspace_probe_event_ok $SESSION_NAME "$ENABLE_EXPR" $PROBE_EVENT_NAME - validate_list $SESSION_NAME $ELF_SYMBOL - validate_list $SESSION_NAME $ELF_TEST_BIN_NAME - validate_list $SESSION_NAME "ELF" - validate_list $SESSION_NAME "Function" + validate_list $SESSION_NAME $ELF_SYMBOL + validate_list $SESSION_NAME $ELF_TEST_BIN_NAME + validate_list $SESSION_NAME "ELF" + validate_list $SESSION_NAME "Function" # Reset the previously saved PATH. export PATH="$OLDPATH" @@ -223,10 +238,10 @@ function test_userspace_probe_enable_full_path () lttng_enable_kernel_userspace_probe_event_ok $SESSION_NAME "$ENABLE_EXPR" $PROBE_EVENT_NAME - validate_list $SESSION_NAME $ELF_SYMBOL - validate_list $SESSION_NAME $ELF_TEST_BIN_NAME - validate_list $SESSION_NAME "ELF" - validate_list $SESSION_NAME "Function" + validate_list $SESSION_NAME $ELF_SYMBOL + validate_list $SESSION_NAME $ELF_TEST_BIN_NAME + validate_list $SESSION_NAME "ELF" + validate_list $SESSION_NAME "Function" destroy_lttng_session_ok $SESSION_NAME @@ -250,10 +265,10 @@ function test_userspace_probe_enable_colon_in_path () lttng_enable_kernel_userspace_probe_event_ok $SESSION_NAME "$ENABLE_EXPR" $PROBE_EVENT_NAME - validate_list $SESSION_NAME $ELF_SYMBOL - validate_list $SESSION_NAME $ELF_TEST_BIN_NAME - validate_list $SESSION_NAME "ELF" - validate_list $SESSION_NAME "Function" + validate_list $SESSION_NAME $ELF_SYMBOL + validate_list $SESSION_NAME $ELF_TEST_BIN_NAME + validate_list $SESSION_NAME "ELF" + validate_list $SESSION_NAME "Function" destroy_lttng_session_ok $SESSION_NAME @@ -274,7 +289,7 @@ function test_userspace_probe_elf () lttng_enable_kernel_userspace_probe_event_ok $SESSION_NAME "$ENABLE_EXPR" $PROBE_EVENT_NAME start_lttng_tracing_ok $SESSION_NAME - eval "$ELF_TEST_BIN" > /dev/null + eval "$ELF_TEST_BIN" > /dev/null stop_lttng_tracing_ok $SESSION_NAME validate_trace $PROBE_EVENT_NAME "$TRACE_PATH" @@ -298,7 +313,7 @@ function test_userspace_probe_elf_dynamic_symbol () lttng_enable_kernel_userspace_probe_event_ok $SESSION_NAME "$ENABLE_EXPR" $PROBE_EVENT_NAME start_lttng_tracing_ok $SESSION_NAME - eval "$ELF_TEST_BIN" > /dev/null + eval "$ELF_TEST_BIN" > /dev/null stop_lttng_tracing_ok $SESSION_NAME validate_trace $PROBE_EVENT_NAME "$TRACE_PATH" @@ -324,7 +339,7 @@ function test_userspace_probe_elf_cxx_function () lttng_enable_kernel_userspace_probe_event_ok $SESSION_NAME "$ENABLE_EXPR" $PROBE_EVENT_NAME start_lttng_tracing_ok $SESSION_NAME - eval "$ELF_CXX_TEST_BIN" > /dev/null + eval "$ELF_CXX_TEST_BIN" > /dev/null stop_lttng_tracing_ok $SESSION_NAME validate_trace $PROBE_EVENT_NAME "$TRACE_PATH" @@ -350,7 +365,7 @@ function test_userspace_probe_elf_cxx_method () lttng_enable_kernel_userspace_probe_event_ok $SESSION_NAME "$ENABLE_EXPR" $PROBE_EVENT_NAME start_lttng_tracing_ok $SESSION_NAME - eval "$ELF_CXX_TEST_BIN" > /dev/null + eval "$ELF_CXX_TEST_BIN" > /dev/null stop_lttng_tracing_ok $SESSION_NAME validate_trace $PROBE_EVENT_NAME "$TRACE_PATH" @@ -375,7 +390,7 @@ function test_userspace_probe_elf_disable () disable_kernel_lttng_userspace_probe_event_ok $SESSION_NAME $PROBE_EVENT_NAME start_lttng_tracing_ok $SESSION_NAME - eval "$ELF_TEST_BIN" > /dev/null + eval "$ELF_TEST_BIN" > /dev/null stop_lttng_tracing_ok $SESSION_NAME # Verify that the trace contains zero event. @@ -398,11 +413,11 @@ function test_userspace_probe_elf_list () lttng_enable_kernel_userspace_probe_event_ok $SESSION_NAME "$ENABLE_EXPR" $PROBE_EVENT_NAME - validate_list $SESSION_NAME $PROBE_EVENT_NAME - validate_list $SESSION_NAME $ELF_SYMBOL - validate_list $SESSION_NAME $ELF_TEST_BIN_NAME - validate_list $SESSION_NAME "ELF" - validate_list $SESSION_NAME "Function" + validate_list $SESSION_NAME $PROBE_EVENT_NAME + validate_list $SESSION_NAME $ELF_SYMBOL + validate_list $SESSION_NAME $ELF_TEST_BIN_NAME + validate_list $SESSION_NAME "ELF" + validate_list $SESSION_NAME "Function" destroy_lttng_session_ok $SESSION_NAME @@ -538,7 +553,7 @@ function test_userspace_probe_sdt () lttng_enable_kernel_userspace_probe_event_ok $SESSION_NAME "$ENABLE_EXPR" $PROBE_EVENT_NAME start_lttng_tracing_ok $SESSION_NAME - eval "$SDT_TEST_BIN" > /dev/null + eval "$SDT_TEST_BIN" > /dev/null stop_lttng_tracing_ok $SESSION_NAME validate_trace $PROBE_EVENT_NAME "$TRACE_PATH" @@ -562,12 +577,12 @@ function test_userspace_probe_sdt_list () lttng_enable_kernel_userspace_probe_event_ok $SESSION_NAME "$ENABLE_EXPR" $PROBE_EVENT_NAME - validate_list $SESSION_NAME $PROBE_EVENT_NAME - validate_list $SESSION_NAME $PROVIDER - validate_list $SESSION_NAME $PROBE - validate_list $SESSION_NAME $SDT_TEST_BIN_NAME - validate_list $SESSION_NAME "SDT" - validate_list $SESSION_NAME "Tracepoint" + validate_list $SESSION_NAME $PROBE_EVENT_NAME + validate_list $SESSION_NAME $PROVIDER + validate_list $SESSION_NAME $PROBE + validate_list $SESSION_NAME $SDT_TEST_BIN_NAME + validate_list $SESSION_NAME "SDT" + validate_list $SESSION_NAME "Tracepoint" destroy_lttng_session_ok $SESSION_NAME @@ -646,7 +661,7 @@ function test_userspace_probe_sdt_one_probe () lttng_enable_kernel_userspace_probe_event_ok $SESSION_NAME "$ENABLE_EXPR" $PROBE_EVENT_NAME start_lttng_tracing_ok $SESSION_NAME - eval "$SDT_TEST_BIN" > /dev/null + eval "$SDT_TEST_BIN" > /dev/null stop_lttng_tracing_ok $SESSION_NAME validate_trace $PROBE_EVENT_NAME "$TRACE_PATH" @@ -671,7 +686,7 @@ function test_userspace_probe_sdt_two_probes () lttng_enable_kernel_userspace_probe_event_ok $SESSION_NAME "$ENABLE_EXPR" $PROBE_EVENT_NAME start_lttng_tracing_ok $SESSION_NAME - eval "$SDT_TEST_BIN" > /dev/null + eval "$SDT_TEST_BIN" > /dev/null stop_lttng_tracing_ok $SESSION_NAME validate_trace $PROBE_EVENT_NAME "$TRACE_PATH" @@ -696,7 +711,7 @@ function test_userspace_probe_sdt_in_shared_object () lttng_enable_kernel_userspace_probe_event_ok $SESSION_NAME "$ENABLE_EXPR" $PROBE_EVENT_NAME start_lttng_tracing_ok $SESSION_NAME - eval "$SDT_TEST_BIN" > /dev/null + eval "$SDT_TEST_BIN" > /dev/null stop_lttng_tracing_ok $SESSION_NAME validate_trace $PROBE_EVENT_NAME "$TRACE_PATH" @@ -721,7 +736,7 @@ function test_userspace_probe_sdt_in_shared_object_dlopen () lttng_enable_kernel_userspace_probe_event_ok $SESSION_NAME "$ENABLE_EXPR" $PROBE_EVENT_NAME start_lttng_tracing_ok $SESSION_NAME - eval "$SDT_TEST_BIN" > /dev/null + eval "$SDT_TEST_BIN" > /dev/null stop_lttng_tracing_ok $SESSION_NAME validate_trace $PROBE_EVENT_NAME "$TRACE_PATH" @@ -746,7 +761,7 @@ function test_userspace_probe_sdt_in_shared_object_ldpreload () lttng_enable_kernel_userspace_probe_event_ok $SESSION_NAME "$ENABLE_EXPR" $PROBE_EVENT_NAME start_lttng_tracing_ok $SESSION_NAME - LD_PRELOAD="$SDT_TEST_BIN_DIR/libzzz.so" eval "$SDT_TEST_BIN" > /dev/null + LD_PRELOAD="$SDT_TEST_BIN_DIR/libzzz.so" eval "$SDT_TEST_BIN" > /dev/null stop_lttng_tracing_ok $SESSION_NAME validate_trace $PROBE_EVENT_NAME "$TRACE_PATH" @@ -771,7 +786,7 @@ function test_userspace_probe_sdt_with_arg () lttng_enable_kernel_userspace_probe_event_ok $SESSION_NAME "$ENABLE_EXPR" $PROBE_EVENT_NAME start_lttng_tracing_ok $SESSION_NAME - eval "$SDT_TEST_BIN" > /dev/null + eval "$SDT_TEST_BIN" > /dev/null stop_lttng_tracing_ok $SESSION_NAME validate_trace $PROBE_EVENT_NAME "$TRACE_PATH" @@ -816,6 +831,7 @@ skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || test_userspace_probe_enable_elf_missing_symbol_name test_userspace_probe_enable_elf_nonexistant_symbol test_userspace_probe_enable_elf_symbol_not_function + test_userspace_probe_unsupported_types # Successful userspace probe elf enabling test_userspace_probe_enable_implicit_probe_type