3 # Copyright (C) 2017 Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
5 # SPDX-License-Identifier: LGPL-2.1-only
7 CURDIR
=$
(dirname "$0")/
8 TESTDIR
=$CURDIR/..
/..
/..
/
10 TEST_TMPDIR
=$
(mktemp
--tmpdir -d tmp.test_notif_kernel_buffer_usage_dir.XXXXXX
)
12 #This is needed since the testpoint create a pipe with the consumerd type suffixed
13 TESTPOINT_BASE_PATH
=$
(readlink
-f "$TEST_TMPDIR/lttng.t_p_n")
14 TESTPOINT_PIPE_PATH
=$
(mktemp
-u --tmpdir="$TEST_TMPDIR" "lttng.t_p_n.XXXXXX")
15 TESTPOINT
=$
(readlink
-f "${CURDIR}/.libs/libpause_consumer.so")
16 TESTAPP_STATE_PATH
=$
(mktemp
-u --tmpdir="$TEST_TMPDIR" "application_state.XXXXXXXXXX")
19 SESSION_NAME
="my_session"
20 CHANNEL_NAME
="my_channel"
24 # shellcheck source=../../../utils/utils.sh
25 source "$TESTDIR/utils/utils.sh"
26 # shellcheck source=./util_event_generator.sh
27 source "$CURDIR/util_event_generator.sh"
29 function test_buffer_usage_notification
31 local event_name
="lttng_test_filter_event"
34 local consumerd_pipe
=()
36 trace_path
=$
(mktemp
-d --tmpdir="$TEST_TMPDIR" "tmp.${FUNCNAME[0]}_trace_path.XXXXXXX")
37 page_size
=$
(getconf PAGE_SIZE
)
39 create_lttng_session_notap
$SESSION_NAME "$trace_path"
41 lttng_enable_kernel_channel_notap
$SESSION_NAME $CHANNEL_NAME \
42 --subbuf-size="$page_size"
43 enable_kernel_lttng_event_notap
$SESSION_NAME $event_name $CHANNEL_NAME
45 kernel_event_generator generate_filter_events
"$TESTAPP_STATE_PATH" &
48 # This is needed since the testpoint create a pipe with the consumer
50 for f
in "$TESTPOINT_BASE_PATH"*; do
51 consumerd_pipe
+=("$f")
54 "$CURDIR/notification" 2 LTTNG_DOMAIN_KERNEL
$APP_PID "$TESTAPP_STATE_PATH" \
55 $SESSION_NAME $CHANNEL_NAME "${consumerd_pipe[@]}"
57 destroy_lttng_session_notap
$SESSION_NAME
59 kill -SIGUSR2 $APP_PID
60 wait $APP_PID 2> /dev
/null
63 if [ "$(id -u)" == "0" ]; then
65 validate_lttng_modules_present
70 # Used on sessiond launch.
71 LTTNG_SESSIOND_ENV_VARS
="LTTNG_TESTPOINT_ENABLE=1 \
72 CONSUMER_PAUSE_PIPE_PATH=${TESTPOINT_PIPE_PATH} \
73 LD_PRELOAD=${TESTPOINT}"
74 start_lttng_sessiond_notap
76 test_buffer_usage_notification
78 stop_lttng_sessiond_notap
81 rm -rf "${consumerd_pipe[@]}" 2> /dev
/null
83 # Kernel tests are skipped.
85 skip
0 "Root access is needed. Skipping all kernel notification tests." $NUM_TESTS