#!/bin/bash # # Copyright (C) - 2013 Christian Babeux # Copyright (C) - 2015 Mathieu Desnoyers # # 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. TEST_DESC="LTTng - Event wildcard test" CURDIR=$(dirname $0)/ TESTDIR=$CURDIR/../../.. LTTNG_BIN="lttng" TESTAPP_PATH="$TESTDIR/utils/testapp" TESTAPP_NAME="gen-ust-events" TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME" SESSION_NAME="wildcard" NR_ITER=100 NUM_GLOBAL_TESTS=2 NUM_UST_TESTS=37 NUM_KERNEL_TESTS=30 NUM_TESTS=$(($NUM_UST_TESTS+$NUM_KERNEL_TESTS+$NUM_GLOBAL_TESTS)) source $TESTDIR/utils/utils.sh function run_ust { $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT } function run_kernel { # Trigger the event for 100 iterations echo -n "100" > /proc/lttng-test-filter-event } function test_event_wildcard() { TRACE_PATH=$(mktemp -d) DOMAIN="$1" FIND="$2" WILDCARD="$3" create_lttng_session_ok $SESSION_NAME $TRACE_PATH enable_${DOMAIN}_lttng_event_ok $SESSION_NAME "$WILDCARD" start_lttng_tracing_ok run_${DOMAIN} ok $? "Traced application stopped." stop_lttng_tracing_ok destroy_lttng_session_ok $SESSION_NAME if [ ${FIND} -eq 1 ]; then trace_matches $EVENT_NAME $NR_ITER $TRACE_PATH else validate_trace_empty $TRACE_PATH fi rm -rf $TRACE_PATH } function test_event_wildcard_fail() { TRACE_PATH=$(mktemp -d) DOMAIN="$1" WILDCARD="$2" create_lttng_session_ok $SESSION_NAME $TRACE_PATH enable_${DOMAIN}_lttng_event_fail $SESSION_NAME "$WILDCARD" destroy_lttng_session_ok $SESSION_NAME rm -rf $TRACE_PATH } # MUST set TESTDIR before calling those functions plan_tests $NUM_TESTS print_test_banner "$TEST_DESC" start_lttng_sessiond diag "Test UST wildcard" if [ ! -x "$TESTAPP_BIN" ]; then BAIL_OUT "No UST nevents binary detected." fi EVENT_NAME="tp:tptest" test_event_wildcard ust 1 'tp:tp*' test_event_wildcard ust 1 '*' test_event_wildcard ust 1 'tp:tptest*' test_event_wildcard ust 0 'tp:abc*' test_event_wildcard_fail ust 'tp:*tp' test_event_wildcard_fail ust 'tp:tp**' test_event_wildcard_fail ust '*tp:tp*' if [ "$(id -u)" == "0" ]; then isroot=1 else isroot=0 fi skip $isroot "Root access is needed. Skipping all kernel wildcard tests." $NUM_KERNEL_TESTS || { diag "Test kernel wildcards" modprobe lttng-test EVENT_NAME="lttng_test_filter_event" test_event_wildcard kernel 1 'lttng_test_*' test_event_wildcard kernel 1 'lttng_test_filter_event*' test_event_wildcard kernel 0 'lttng_test_asdfasdf*' test_event_wildcard_fail kernel 'tp_*tp' test_event_wildcard_fail kernel 'tp_tp**' test_event_wildcard_fail kernel '*tp_tp*' rmmod lttng-test } stop_lttng_sessiond