X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=tests%2Fregression%2Fust%2Fperiodical-metadata-flush%2Ftest_periodical_metadata_flush;h=d81d475d47632efc57645e403ec94037ffeae803;hp=cbfe1a9e6be50cf64efbc412c1e661c50b34ec9a;hb=HEAD;hpb=bf6ae429bc7bf2fefdce61e48806768dab7567d5 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 cbfe1a9e6..f1132c2e4 100755 --- a/tests/regression/ust/periodical-metadata-flush/test_periodical_metadata_flush +++ b/tests/regression/ust/periodical-metadata-flush/test_periodical_metadata_flush @@ -1,23 +1,13 @@ #!/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)/ -TESTDIR=$CURDIR/../../.. +CURDIR=$(dirname "$0")/ +TESTDIR="$CURDIR/../../.." NR_ITER=100 NR_USEC_WAIT=100000 TESTAPP_PATH="$TESTDIR/utils/testapp" @@ -25,12 +15,12 @@ TESTAPP_NAME="gen-ust-events" TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME" SESSION_NAME="periodical-flush" EVENT_NAME="tp:tptest" -BIN_NAME="gen-nevents" NUM_TESTS=38 -APP_TMP_FILE=$(mktemp -u) -APPS_PID= +APP_TMP_FILE=$(mktemp -u -t tmp.test_periodical_metadata_flush_ust_app_tmp_file.XXXXXX) +APP_PIDS=() -source $TESTDIR/utils/utils.sh +# shellcheck source-path=SCRIPTDIR/../../../ +source "$TESTDIR/utils/utils.sh" if [ ! -x "$TESTAPP_BIN" ]; then BAIL_OUT "No UST events binary detected." @@ -43,7 +33,7 @@ function enable_channel_per_uid() local sess_name=$1 local channel_name=$2 - $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel --buffers-uid -u $channel_name -s $sess_name --switch-timer 100000 >/dev/null 2>&1 + "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" enable-channel --buffers-uid -u "$channel_name" -s "$sess_name" --switch-timer 100000 >/dev/null 2>&1 ok $? "Enable channel $channel_name per UID for session $sess_name" } @@ -52,7 +42,7 @@ function enable_channel_per_pid() local sess_name=$1 local channel_name=$2 - $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel --buffers-pid -u $channel_name -s $sess_name --switch-timer 100000 >/dev/null 2>&1 + "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" enable-channel --buffers-pid -u "$channel_name" -s "$sess_name" --switch-timer 100000 >/dev/null 2>&1 ok $? "Enable channel $channel_name per UID for session $sess_name" } @@ -61,7 +51,7 @@ function enable_metadata_per_uid() local sess_name=$1 local channel_name="metadata" - $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel --buffers-uid -u $channel_name -s $sess_name --switch-timer 200000 >/dev/null 2>&1 + "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" enable-channel --buffers-uid -u "$channel_name" -s "$sess_name" --switch-timer 200000 2>&1 ok $? "Enable channel $channel_name per UID for session $sess_name" } @@ -70,7 +60,7 @@ function enable_metadata_per_pid() local sess_name=$1 local channel_name="metadata" - $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel --buffers-pid -u $channel_name -s $sess_name --switch-timer 200000 >/dev/null 2>&1 + "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" enable-channel --buffers-pid -u "$channel_name" -s "$sess_name" --switch-timer 200000 >/dev/null 2>&1 ok $? "Enable channel $channel_name per PID for session $sess_name" } @@ -78,8 +68,8 @@ function validate_trace() { local out - out=$(babeltrace $TRACE_PATH | grep $EVENT_NAME | wc -l) - if [ $out -eq 0 ]; then + out=$("$BABELTRACE_BIN" "$TRACE_PATH" | grep -c $EVENT_NAME) + if [ "$out" -eq 0 ]; then fail "Trace validation" diag "No event(s) found. We are supposed to have at least one." out=1 @@ -100,15 +90,15 @@ function check_app_tmp_file() sleep 0.5 done diag "Removing test app temporary file $APP_TMP_FILE" - rm -f $APP_TMP_FILE + rm -f "$APP_TMP_FILE" } function start_trace_app() { # Start application with a temporary file. - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT $APP_TMP_FILE & + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT --sync-after-first-event "$APP_TMP_FILE" & ret=$? - APPS_PID="${APPS_PID} ${!}" + APP_PIDS+=(${!}) ok $ret "Start application to trace" } @@ -121,24 +111,22 @@ function start_check_trace_app() function wait_trace_apps() { - for p in ${APPS_PID}; do - wait ${p} 2>/dev/null - done - APPS_PID= + wait "${APP_PIDS[@]}" 2> /dev/null + APP_PIDS=() } test_after_app_pid() { local out - APPS_PID= + APP_PIDS=() diag "Start application AFTER tracing is started" - create_lttng_session_ok $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 @@ -147,22 +135,19 @@ 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. - for p in ${APPS_PID}; do - kill -s SIGSTOP ${p} - done + kill -s SIGSTOP "${APP_PIDS[@]}" # Give time to the consumer to write inflight data. sleep 2 + # shellcheck disable=SC2119 validate_trace out=$? - for p in ${APPS_PID}; do - kill -s SIGKILL ${p} - wait ${p} 2>/dev/null - done - stop_lttng_tracing $SESSION_NAME - destroy_lttng_session $SESSION_NAME + kill -s SIGKILL "${APP_PIDS[@]}" + wait "${APP_PIDS[@]}" 2>/dev/null + stop_lttng_tracing_ok $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME wait_trace_apps @@ -171,20 +156,19 @@ test_after_app_pid() { test_before_app_pid() { local out - local tmp_file="/tmp/lttng_test_ust.42.file" - APPS_PID= + APP_PIDS=() diag "Start application BEFORE tracing is started" start_trace_app # Start application before tracing - create_lttng_session_ok $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! @@ -193,23 +177,20 @@ 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. - for p in ${APPS_PID}; do - kill -s SIGSTOP ${p} - done + kill -s SIGSTOP "${APP_PIDS[@]}" # Give time to the consumer to write inflight data. sleep 2 + # shellcheck disable=SC2119 validate_trace out=$? - for p in ${APPS_PID}; do - kill -s SIGKILL ${p} - wait ${p} 2>/dev/null - done + kill -s SIGKILL "${APP_PIDS[@]}" + wait "${APP_PIDS[@]}" 2>/dev/null - stop_lttng_tracing $SESSION_NAME - destroy_lttng_session $SESSION_NAME + stop_lttng_tracing_ok $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME wait_trace_apps @@ -219,15 +200,15 @@ test_before_app_pid() { test_after_app_uid() { local out - APPS_PID= + APP_PIDS=() diag "Start application AFTER tracing is started" - create_lttng_session_ok $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 @@ -236,23 +217,19 @@ 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. - for p in ${APPS_PID}; do - kill -s SIGSTOP ${p} - done - + kill -s SIGSTOP "${APP_PIDS[@]}" # Give time to the consumer to write inflight data. sleep 2 + # shellcheck disable=SC2119 validate_trace out=$? - for p in ${APPS_PID}; do - kill -s SIGKILL ${p} - wait ${p} 2>/dev/null - done - stop_lttng_tracing $SESSION_NAME - destroy_lttng_session $SESSION_NAME + kill -s SIGKILL "${APP_PIDS[@]}" + wait "${APP_PIDS[@]}" + stop_lttng_tracing_ok $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME wait_trace_apps @@ -262,18 +239,18 @@ test_after_app_uid() { test_before_app_uid() { local out - APPS_PID= + APP_PIDS=() diag "Start application BEFORE tracing is started" # Start application before tracing start_trace_app - create_lttng_session_ok $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! @@ -282,22 +259,19 @@ 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. - for p in ${APPS_PID}; do - kill -s SIGSTOP ${p} - done + kill -s SIGSTOP "${APP_PIDS[@]}" # Give time to the consumer to write inflight data. sleep 2 + # shellcheck disable=SC2119 validate_trace out=$? - for p in ${APPS_PID}; do - kill -s SIGKILL ${p} - wait ${p} 2>/dev/null - done - stop_lttng_tracing $SESSION_NAME - destroy_lttng_session $SESSION_NAME + kill -s SIGKILL "${APP_PIDS[@]}" + wait "${APP_PIDS[@]}" + stop_lttng_tracing_ok $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME wait_trace_apps @@ -308,6 +282,7 @@ test_before_app_uid() { plan_tests $NUM_TESTS print_test_banner "$TEST_DESC" +bail_out_if_no_babeltrace TESTS=( "test_before_app_uid" @@ -319,13 +294,15 @@ TESTS=( TEST_COUNT=${#TESTS[@]} i=0 +# shellcheck disable=SC2119 start_lttng_sessiond -while [ $i -lt $TEST_COUNT ]; do - TRACE_PATH=$(mktemp -d) +while [ $i -lt "$TEST_COUNT" ]; do + TRACE_PATH=$(mktemp -d -t tmp.test_periodical_metadata_flush_ust_trace_path.XXXXXX) ${TESTS[$i]} - rm -rf $TRACE_PATH - let "i++" + rm -rf "$TRACE_PATH" + (( "i++" )) done +# shellcheck disable=SC2119 stop_lttng_sessiond