Cleanup: tests: name all temporary files to better identify leakage
[lttng-tools.git] / tests / regression / ust / test_event_perf
index 7fb37edfeb1ff67a4dada6711384ac6c6a1a5b6d..33aab2981272beb8e9695f77c568660aa29aa1e9 100755 (executable)
@@ -1,29 +1,17 @@
 #!/bin/bash
 #
-# Copyright (C) 2013 Christian Babeux <christian.babeux@efficios.com>
-# Copyright (C) 2014 Julien Desfossez <jdesfossez@efficios.com>
+# Copyright (C) 2013 Christian Babeux <christian.babeux@efficios.com>
+# Copyright (C) 2014 Julien Desfossez <jdesfossez@efficios.com>
 #
-# 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 -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
 
-       $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"
+       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=$?
+
+       if [ "$ret" != "4" ]; then
+               start_lttng_tracing_ok
 
-       start_lttng_tracing_ok
+               $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT >/dev/null 2>&1
 
-       $TESTAPP_BIN $NR_ITER $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"
 
+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
This page took 0.040852 seconds and 4 git commands to generate.