X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=tests%2Fregression%2Fkernel%2Ftest_userspace_probe;h=a71320274e9b5af46ba0d71dab85476aab755adc;hb=7c2fae7c05b6eb686317f9c443366f046f0a2757;hp=fb8ce303ffa2719a64c3c596d19c85727403a794;hpb=a9c2df2bfce7a27b53ee5d5101f259f3e1f506b1;p=lttng-tools.git diff --git a/tests/regression/kernel/test_userspace_probe b/tests/regression/kernel/test_userspace_probe index fb8ce303f..a71320274 100755 --- a/tests/regression/kernel/test_userspace_probe +++ b/tests/regression/kernel/test_userspace_probe @@ -1,27 +1,17 @@ #!/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" CURDIR=$(dirname "$0")/ TESTDIR=$CURDIR/../.. TESTAPP_DIR="$TESTDIR/utils/testapp/" -ELF_TEST_BIN_DIR="$TESTAPP_DIR/userspace-probe-elf-binary/" +ELF_TEST_BIN_DIR="$TESTAPP_DIR/userspace-probe-elf-binary/.libs/" ELF_TEST_BIN_NAME="userspace-probe-elf-binary" ELF_TEST_BIN="$ELF_TEST_BIN_DIR/$ELF_TEST_BIN_NAME" ELF_CXX_TEST_BIN_DIR="$TESTAPP_DIR/userspace-probe-elf-cxx-binary/" @@ -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=81 +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,31 @@ 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" + + destroy_lttng_session_ok $SESSION_NAME + + rm -rf "$TRACE_PATH" +} + +function test_userspace_probe_elf_dynamic_symbol () +{ + TRACE_PATH=$(mktemp -d) + SESSION_NAME="test_userprobe_elf" + LIBFOO_PATH="$ELF_TEST_BIN_DIR/libfoo.so" + ENABLE_EXPR="elf:$LIBFOO_PATH:dynamic_symbol" + + diag "Userspace probe on Elf dynamic symbol enabled and traced" + + create_lttng_session_ok $SESSION_NAME "$TRACE_PATH" + + 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 stop_lttng_tracing_ok $SESSION_NAME validate_trace $PROBE_EVENT_NAME "$TRACE_PATH" @@ -300,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" @@ -326,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" @@ -351,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. @@ -374,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 @@ -514,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" @@ -538,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 @@ -622,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" @@ -647,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" @@ -672,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" @@ -697,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" @@ -722,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" @@ -747,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" @@ -792,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 @@ -802,6 +842,7 @@ skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || # Successful tracing userspace probe elf test_userspace_probe_elf + test_userspace_probe_elf_dynamic_symbol # Disable userspace-probe elf test_userspace_probe_elf_disable