X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=tests%2Fregression%2Fust%2Ftest_event_perf;h=01c137a19b23a3b3d72f32b11416d152e764822a;hp=7fb37edfeb1ff67a4dada6711384ac6c6a1a5b6d;hb=HEAD;hpb=67b4c664e2c6c6dc19920555c0abf094ed6cbe00 diff --git a/tests/regression/ust/test_event_perf b/tests/regression/ust/test_event_perf index 7fb37edfe..127cdb0b7 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,104 @@ 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 -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 -d -t "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" - $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" + destroy_lttng_session_ok $SESSION_NAME + + rm -rf $TRACE_PATH } function test_event_basic() { - TRACE_PATH=$(mktemp -d) + TRACE_PATH=$(mktemp -d -t "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_ok + stop_lttng_tracing_ok + + validate_trace "perf_thread_page_fault" "$TRACE_PATH" + fi destroy_lttng_session_ok $SESSION_NAME - validate_trace "perf_thread_page_fault" $TRACE_PATH - rm -rf $TRACE_PATH + rm -rf "$TRACE_PATH" } -uname -m|grep x86 >/dev/null -if test $? != 0; then - plan_tests 1 - ok 0 "This test only runs on x86" - exit 0 -fi - # MUST set TESTDIR before calling those functions plan_tests $NUM_TESTS print_test_banner "$TEST_DESC" +bail_out_if_no_babeltrace + start_lttng_sessiond -test_event_basic +test_parsing_raw + +check_skip_kernel_test 8 "Skipping UST perf tests." || +{ + test_event_basic +} stop_lttng_sessiond