X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=tests%2Fregression%2Fust%2Fperiodical-metadata-flush%2Ftest_periodical_metadata_flush;h=848fc2f3ee319fa887325ba8181b19969a999733;hb=9d16b343fb9e781fc8d8fa3c448a3f382306dd33;hp=e4199652bce1a456333ca0d88cbe869a5b590f96;hpb=5dca3876619568b5c08af5f0e49560ef618eae2f;p=lttng-tools.git diff --git a/tests/regression/ust/periodical-metadata-flush/test_periodical_metadata_flush b/tests/regression/ust/periodical-metadata-flush/test_periodical_metadata_flush index e4199652b..848fc2f3e 100755 --- a/tests/regression/ust/periodical-metadata-flush/test_periodical_metadata_flush +++ b/tests/regression/ust/periodical-metadata-flush/test_periodical_metadata_flush @@ -1,19 +1,9 @@ #!/bin/bash # -# Copyright (C) - 2012 David Goulet +# Copyright (C) 2012 David Goulet # -# 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 - Tracing with per UID buffers and periodical flush" CURDIR=$(dirname $0)/ @@ -27,7 +17,8 @@ SESSION_NAME="periodical-flush" EVENT_NAME="tp:tptest" BIN_NAME="gen-nevents" NUM_TESTS=38 -APP_TMP_FILE="/tmp/lttng_test_ust.42.file" +APP_TMP_FILE=$(mktemp -u) +APPS_PID= source $TESTDIR/utils/utils.sh @@ -105,8 +96,10 @@ function check_app_tmp_file() function start_trace_app() { # Start application with a temporary file. - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT $APP_TMP_FILE & - ok $? "Start application to trace" + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT --sync-after-first-event $APP_TMP_FILE & + ret=$? + APPS_PID="${APPS_PID} ${!}" + ok $ret "Start application to trace" } function start_check_trace_app() @@ -115,16 +108,27 @@ function start_check_trace_app() check_app_tmp_file } + +function wait_trace_apps() +{ + for p in ${APPS_PID}; do + wait ${p} 2>/dev/null + done + APPS_PID= +} + test_after_app_pid() { local out + APPS_PID= + diag "Start application AFTER tracing is started" - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH enable_metadata_per_pid $SESSION_NAME enable_channel_per_pid $SESSION_NAME "channel0" - enable_ust_lttng_event $SESSION_NAME $EVENT_NAME "channel0" - start_lttng_tracing $SESSION_NAME + enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME "channel0" + start_lttng_tracing_ok $SESSION_NAME # Start application after tracing start_check_trace_app @@ -133,7 +137,9 @@ test_after_app_pid() { # Make sure the application does not generate any more data, # thus ensuring that we are not flushing a packet concurrently # with validate_trace. - killall -SIGSTOP -q $TESTAPP_NAME + for p in ${APPS_PID}; do + kill -s SIGSTOP ${p} + done # Give time to the consumer to write inflight data. sleep 2 @@ -141,11 +147,14 @@ test_after_app_pid() { validate_trace out=$? - killall -SIGKILL -q $TESTAPP_NAME - stop_lttng_tracing $SESSION_NAME - destroy_lttng_session $SESSION_NAME + for p in ${APPS_PID}; do + kill -s SIGKILL ${p} + wait ${p} 2>/dev/null + done + stop_lttng_tracing_ok $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME - wait + wait_trace_apps return $out } @@ -154,16 +163,18 @@ test_before_app_pid() { local out local tmp_file="/tmp/lttng_test_ust.42.file" + APPS_PID= + diag "Start application BEFORE tracing is started" start_trace_app # Start application before tracing - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH enable_metadata_per_pid $SESSION_NAME enable_channel_per_pid $SESSION_NAME "channel0" - enable_ust_lttng_event $SESSION_NAME $EVENT_NAME "channel0" - start_lttng_tracing $SESSION_NAME + enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME "channel0" + start_lttng_tracing_ok $SESSION_NAME check_app_tmp_file # Let the application at least perform a flush! @@ -172,7 +183,9 @@ test_before_app_pid() { # Make sure the application does not generate any more data, # thus ensuring that we are not flushing a packet concurrently # with validate_trace. - killall -SIGSTOP -q $TESTAPP_NAME + for p in ${APPS_PID}; do + kill -s SIGSTOP ${p} + done # Give time to the consumer to write inflight data. sleep 2 @@ -180,11 +193,15 @@ test_before_app_pid() { validate_trace out=$? - killall -SIGKILL -q $TESTAPP_NAME - stop_lttng_tracing $SESSION_NAME - destroy_lttng_session $SESSION_NAME + for p in ${APPS_PID}; do + kill -s SIGKILL ${p} + wait ${p} 2>/dev/null + done + + stop_lttng_tracing_ok $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME - wait + wait_trace_apps return $out } @@ -192,13 +209,15 @@ test_before_app_pid() { test_after_app_uid() { local out + APPS_PID= + diag "Start application AFTER tracing is started" - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH enable_metadata_per_uid $SESSION_NAME enable_channel_per_uid $SESSION_NAME "channel0" - enable_ust_lttng_event $SESSION_NAME $EVENT_NAME "channel0" - start_lttng_tracing $SESSION_NAME + enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME "channel0" + start_lttng_tracing_ok $SESSION_NAME # Start application after tracing start_check_trace_app @@ -207,7 +226,10 @@ test_after_app_uid() { # Make sure the application does not generate any more data, # thus ensuring that we are not flushing a packet concurrently # with validate_trace. - killall -SIGSTOP -q $TESTAPP_NAME + for p in ${APPS_PID}; do + kill -s SIGSTOP ${p} + done + # Give time to the consumer to write inflight data. sleep 2 @@ -215,11 +237,14 @@ test_after_app_uid() { validate_trace out=$? - killall -SIGKILL -q $TESTAPP_NAME - stop_lttng_tracing $SESSION_NAME - destroy_lttng_session $SESSION_NAME + for p in ${APPS_PID}; do + kill -s SIGKILL ${p} + wait ${p} 2>/dev/null + done + stop_lttng_tracing_ok $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME - wait + wait_trace_apps return $out } @@ -227,16 +252,18 @@ test_after_app_uid() { test_before_app_uid() { local out + APPS_PID= + diag "Start application BEFORE tracing is started" # Start application before tracing start_trace_app - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH enable_metadata_per_uid $SESSION_NAME enable_channel_per_uid $SESSION_NAME "channel0" - enable_ust_lttng_event $SESSION_NAME $EVENT_NAME "channel0" - start_lttng_tracing $SESSION_NAME + enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME "channel0" + start_lttng_tracing_ok $SESSION_NAME check_app_tmp_file # Let the application at least perform a flush! @@ -245,7 +272,9 @@ test_before_app_uid() { # Make sure the application does not generate any more data, # thus ensuring that we are not flushing a packet concurrently # with validate_trace. - killall -SIGSTOP -q $TESTAPP_NAME + for p in ${APPS_PID}; do + kill -s SIGSTOP ${p} + done # Give time to the consumer to write inflight data. sleep 2 @@ -253,11 +282,14 @@ test_before_app_uid() { validate_trace out=$? - killall -SIGKILL -q $TESTAPP_NAME - stop_lttng_tracing $SESSION_NAME - destroy_lttng_session $SESSION_NAME + for p in ${APPS_PID}; do + kill -s SIGKILL ${p} + wait ${p} 2>/dev/null + done + stop_lttng_tracing_ok $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME - wait + wait_trace_apps return $out }