1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
#!/bin/bash
#
# SPDX-FileCopyrightText: 2017 Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
#
# SPDX-License-Identifier: LGPL-2.1-only
CURDIR=$(dirname "$0")/
TESTDIR=$CURDIR/../../../
TEST_TMPDIR=$(mktemp -d -t tmp.test_notif_ust_buffer_usage_dir.XXXXXX)
# Set TMPDIR for further call to mktemp
export TMPDIR="$TEST_TMPDIR"
set -x
#This is needed since the testpoint create a pipe with the consumerd type suffixed
TESTPOINT_BASE_PATH=$(readlink -f "$TEST_TMPDIR/lttng.t_p_n")
TESTPOINT_PIPE_PATH=$(mktemp -u -t "lttng.t_p_n.XXXXXX")
TESTPOINT=$(readlink -f "${CURDIR}/.libs/libpause_consumer.so")
TESTAPP_PATH="$TESTDIR/utils/testapp"
GEN_UST_EVENTS_TESTAPP_NAME="gen-ust-events"
GEN_UST_EVENTS_TESTAPP_BIN="$TESTAPP_PATH/$GEN_UST_EVENTS_TESTAPP_NAME/$GEN_UST_EVENTS_TESTAPP_NAME"
TESTAPP_STATE_PATH=$(mktemp -u -t "application_state.XXXXXXXXXX")
SESSION_NAME="my_session"
CHANNEL_NAME="my_channel"
TRACE_PATH=$(mktemp -d -t "trace_path.XXXXXX")
PAGE_SIZE=$(getconf PAGE_SIZE)
set +x
# shellcheck source=../../../utils/utils.sh
source "$TESTDIR/utils/utils.sh"
# shellcheck source=./util_event_generator.sh
source "$CURDIR/util_event_generator.sh"
function test_buffer_usage_notification
{
consumerd_pipe=()
event_name="tp:tptest"
create_lttng_session_notap $SESSION_NAME "$TRACE_PATH"
enable_ust_lttng_channel_notap $SESSION_NAME $CHANNEL_NAME --subbuf-size="$PAGE_SIZE"
enable_ust_lttng_event_notap $SESSION_NAME $event_name $CHANNEL_NAME
# This is needed since the testpoint create a pipe with the consumer type suffixed
for f in "$TESTPOINT_BASE_PATH"*; do
consumerd_pipe+=("$f")
done
ust_event_generator "$GEN_UST_EVENTS_TESTAPP_BIN" "$TESTAPP_STATE_PATH" &
APP_PID=$!
diag "Started generator pid $APP_PID"
while pgrep notification ; do
diag "WARNING: notification already running"
kill $(pgrep notification)
sleep 1
done
diag "$CURDIR/notification 2 LTTNG_DOMAIN_UST $APP_PID $TESTAPP_STATE_PATH $SESSION_NAME $CHANNEL_NAME ${consumerd_pipe[@]}"
"$CURDIR/notification" 2 LTTNG_DOMAIN_UST $APP_PID "$TESTAPP_STATE_PATH" \
$SESSION_NAME $CHANNEL_NAME "${consumerd_pipe[@]}"
destroy_lttng_session_notap $SESSION_NAME
# On ungraceful kill the app is cleaned up via the full_cleanup call
# Suppress kill message
kill -SIGUSR2 $APP_PID
diag "About to wait on PID $APP_PID"
wait $APP_PID 2> /dev/null
diag "Wait done"
# Just in case cleanup
rm -rf "$TRACE_PATH"
diag "Test done"
}
# Avoid spurious messages about exiting before the test output anything on cleanup
tap_disable
LTTNG_SESSIOND_ENV_VARS="LTTNG_TESTPOINT_ENABLE=1 CONSUMER_PAUSE_PIPE_PATH=${TESTPOINT_PIPE_PATH} LD_PRELOAD=${TESTPOINT}"
start_lttng_sessiond_notap
test_buffer_usage_notification
stop_lttng_sessiond_notap
rm -rf "$TEST_TMPDIR"
|