X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=tests%2Fregression%2Fust%2Ftest_event_perf;h=33aab2981272beb8e9695f77c568660aa29aa1e9;hp=84e56d31df7b48896bff109bbfc0b7bc4b8bd007;hb=33e557114a2ba28e26e220a833e8a449c78b8b65;hpb=e563bbdb8fa6592790e9ac4e9db7d9decf022023 diff --git a/tests/regression/ust/test_event_perf b/tests/regression/ust/test_event_perf index 84e56d31d..33aab2981 100755 --- a/tests/regression/ust/test_event_perf +++ b/tests/regression/ust/test_event_perf @@ -1,29 +1,17 @@ #!/bin/bash # -# Copyright (C) - 2013 Christian Babeux -# Copyright (C) - 2014 Julien Desfossez +# Copyright (C) 2013 Christian Babeux +# Copyright (C) 2014 Julien Desfossez # -# This program is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License, version 2 only, as -# published by the Free Software Foundation. -# -# This program 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 General Public License for -# more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# SPDX-License-Identifier: GPL-2.0-only TEST_DESC="UST tracer - Perf counters" CURDIR=$(dirname $0)/ TESTDIR=$CURDIR/../.. -LTTNG_BIN="lttng" SESSION_NAME="perf_counters" EVENT_NAME="tp:tptest" -NUM_TESTS=10 +NUM_TESTS=24 NR_ITER=1 NR_USEC_WAIT=1 TESTAPP_PATH="$TESTDIR/utils/testapp" @@ -42,56 +30,108 @@ function enable_ust_lttng_event_per_chan() ok $? "Enable event $event_name for session $sess_name in channel $chan_name" } -function add_ust_lttng_context() +function add_context_ust_skip_ok() { - sess_name="$1" - chan_name="$2" - type="$3" + local session_name=$1 + local channel_name=$2 + local context_name=$3 + local skip_num=$4 + + local ret - $TESTDIR/../src/bin/lttng/$LTTNG_BIN add-context -s $sess_name -c $chan_name -t $type -u >/dev/null 2>&1 - ok $? "Add context $type for session $sess_name in channel $chan_name" + "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" add-context -u \ + -s "$session_name" -c "$channel_name" \ + -t "$context_name" 1>"$OUTPUT_DEST" 2>"$ERROR_OUTPUT_DEST" + ret=$? + + if [ "$ret" == "4" ]; then + skip 0 "Current UST lib doesn't implement '$context_name' context" "$skip_num" + else + ok $ret "Add context command for type: $context_name" + fi + + return $ret +} + +# Only test parsing of the enabling by raw ID +function test_parsing_raw() +{ + TRACE_PATH=$(mktemp --tmpdir -d "tmp.${FUNCNAME[0]}_trace_path.XXXXXX") + SESSION_NAME="ust_event_basic" + CHAN_NAME="mychan" + + create_lttng_session_ok $SESSION_NAME $TRACE_PATH + + enable_ust_lttng_channel_ok $SESSION_NAME $CHAN_NAME + + enable_ust_lttng_event_per_chan $SESSION_NAME $EVENT_NAME $CHAN_NAME + + add_context_ust_skip_ok $SESSION_NAME $CHAN_NAME "perf:thread:raw:r0110:test" 1 + add_context_ust_fail $SESSION_NAME $CHAN_NAME "perf:thread:raw:rZZZ:test" + add_context_ust_fail $SESSION_NAME $CHAN_NAME "perf:thread:raw:b0110:test" + add_context_ust_fail $SESSION_NAME $CHAN_NAME "perf:thread:raw:r0110:" + add_context_ust_fail $SESSION_NAME $CHAN_NAME "perf:thread:raw:r0110::" + add_context_ust_fail $SESSION_NAME $CHAN_NAME "perf:thread:raw:r:test" + add_context_ust_fail $SESSION_NAME $CHAN_NAME "perf:thread:raw:r::" + add_context_ust_fail $SESSION_NAME $CHAN_NAME "perf:thread:raw::" + add_context_ust_fail $SESSION_NAME $CHAN_NAME "perf:thread:raw" + add_context_ust_fail $SESSION_NAME $CHAN_NAME "perf:thread:raw:r0110:test:wrong" + + destroy_lttng_session_ok $SESSION_NAME + + rm -rf $TRACE_PATH } function test_event_basic() { - TRACE_PATH=$(mktemp -d) + TRACE_PATH=$(mktemp --tmpdir -d "tmp.${FUNCNAME[0]}_trace_path.XXXXXX") SESSION_NAME="ust_event_basic" CHAN_NAME="mychan" + local ret + create_lttng_session_ok $SESSION_NAME $TRACE_PATH enable_ust_lttng_channel_ok $SESSION_NAME $CHAN_NAME enable_ust_lttng_event_per_chan $SESSION_NAME $EVENT_NAME $CHAN_NAME - add_ust_lttng_context $SESSION_NAME $CHAN_NAME "perf:thread:page-fault" + add_context_ust_skip_ok $SESSION_NAME $CHAN_NAME "perf:thread:page-fault" 4 + ret=$? - start_lttng_tracing_ok + if [ "$ret" != "4" ]; then + start_lttng_tracing_ok - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT >/dev/null 2>&1 + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT >/dev/null 2>&1 - stop_lttng_tracing + stop_lttng_tracing_ok - destroy_lttng_session $SESSION_NAME + validate_trace "perf_thread_page_fault" "$TRACE_PATH" + fi - validate_trace "perf_thread_page_fault" $TRACE_PATH - rm -rf $TRACE_PATH -} + destroy_lttng_session_ok $SESSION_NAME -uname -m|grep x86 >/dev/null -if test $? != 0; then - plan_tests 1 - ok 0 "This test only runs on x86" - exit 0 -fi + rm -rf "$TRACE_PATH" +} # MUST set TESTDIR before calling those functions plan_tests $NUM_TESTS print_test_banner "$TEST_DESC" +if [ "$(id -u)" == "0" ]; then + isroot=1 +else + isroot=0 +fi + start_lttng_sessiond -test_event_basic +test_parsing_raw + +skip $isroot "Root access is needed. Skipping UST perf tests." 8 || +{ + test_event_basic +} stop_lttng_sessiond