#!/bin/bash
#
-# Copyright (C) - 2012 David Goulet <dgoulet@efficios.com>
+# Copyright (C) 2012 David Goulet <dgoulet@efficios.com>
#
-# 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.
-#
-# 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
+# SPDX-License-Identifier: LGPL-2.1-only
+
TEST_DESC="UST tracer - Start tracing before and after execution"
CURDIR=$(dirname $0)/
TESTDIR=$CURDIR/../../..
NR_ITER=100
+NR_USEC_WAIT=100000
+TESTAPP_PATH="$TESTDIR/utils/testapp"
+TESTAPP_NAME="gen-ust-events"
+TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
SESSION_NAME="per-session"
-EVENT_NAME="ust_gen_nevents:tptest"
+EVENT_NAME="tp:tptest"
NUM_TESTS=16
source $TESTDIR/utils/utils.sh
-print_test_banner "$TEST_DESC"
-
-if [ ! -x "$CURDIR/gen-nevents" ]; then
+if [ ! -x "$TESTAPP_BIN" ]; then
BAIL_OUT "No UST nevents binary detected."
fi
# MUST set TESTDIR before calling those functions
-test_before_apps() {
- local out
-
+function test_before_apps()
+{
# BEFORE application is spawned
- create_lttng_session $SESSION_NAME $TRACE_PATH
- enable_ust_lttng_event $SESSION_NAME $EVENT_NAME
- start_lttng_tracing $SESSION_NAME
+ create_lttng_session_ok $SESSION_NAME $TRACE_PATH
+ enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME
+ start_lttng_tracing_ok $SESSION_NAME
- ./$CURDIR/gen-nevents $NR_ITER
- ok $? "Start application to trace"
+ $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT &
+ wait
+ ok $? "Traced application stopped."
- stop_lttng_tracing $SESSION_NAME
- destroy_lttng_session $SESSION_NAME
+ stop_lttng_tracing_ok $SESSION_NAME
+ destroy_lttng_session_ok $SESSION_NAME
- trace_matches $EVENT_NAME $NR_ITER $TRACE_PATH
+ trace_match_only $EVENT_NAME $NR_ITER $TRACE_PATH
return $?
}
-test_after_apps() {
+function test_after_apps()
+{
local out
+ local file_sync_after_first=$(mktemp --tmpdir -u "tmp.${FUNCNAME[0]}_sync_after_first.XXXXXX")
+ local file_sync_before_last=$(mktemp --tmpdir -u "tmp.${FUNCNAME[0]}_sync_before_last.XXXXXX")
- ./$CURDIR/gen-nevents 100 &
- ok $? "Start application to trace"
+ create_lttng_session_ok $SESSION_NAME $TRACE_PATH
+ enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME
- # BEFORE application is spawned
- create_lttng_session $SESSION_NAME $TRACE_PATH
- enable_ust_lttng_event $SESSION_NAME $EVENT_NAME
- start_lttng_tracing $SESSION_NAME
-
- # At least hit one event
- sleep 2
-
- stop_lttng_tracing $SESSION_NAME
- destroy_lttng_session $SESSION_NAME
-
- out=$(babeltrace $TRACE_PATH | grep $EVENT_NAME | wc -l)
- if [ $out -eq 0 ]; then
- fail "Trace validation"
- diag "No event(s) found. We are supposed to have at least one."
- out=1
- else
- pass "Trace validation"
- diag "Found $out event(s). Coherent."
- out=0
- fi
+ $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT \
+ --sync-after-first-event ${file_sync_after_first} \
+ --sync-before-last-event ${file_sync_before_last} &
+ ok $? "Application started in background."
+
+ start_lttng_tracing_ok $SESSION_NAME
+
+ touch ${file_sync_before_last}
+
+ wait
+
+ stop_lttng_tracing_ok $SESSION_NAME
+ destroy_lttng_session_ok $SESSION_NAME
+
+ rm -f ${file_sync_after_first}
+ rm -f ${file_sync_before_last}
+
+ validate_trace $EVENT_NAME $TRACE_PATH
+ out=$?
return $out
}
# MUST set TESTDIR before calling those functions
plan_tests $NUM_TESTS
+print_test_banner "$TEST_DESC"
+bail_out_if_no_babeltrace
+
start_lttng_sessiond
-diag "Start application BEFORE tracing was started"
+diag "Start tracing BEFORE application is started"
-TRACE_PATH=$(mktemp -d)
+TRACE_PATH=$(mktemp --tmpdir -d tmp.test_before_after_ust_trace_path.XXXXXX)
test_before_apps
out=$?
rm -rf $TRACE_PATH
-diag "Start application AFTER tracing was started"
+diag "Start tracing AFTER application is started"
-TRACE_PATH=$(mktemp -d)
+TRACE_PATH=$(mktemp --tmpdir -d tmp.test_before_after_ust_trace_path.XXXXXX)
test_after_apps
out=$?