3 # Copyright (C) 2013 Christian Babeux <christian.babeux@efficios.com>
4 # Copyright (C) 2014, 2016 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
6 # SPDX-License-Identifier: GPL-2.0-only
9 TEST_DESC
="Kernel tracer - Rotation destroy flush"
13 SESSION_NAME
="rotation_destroy_flush"
16 NUM_TESTS
=$
((13*$NR_ITER))
17 EVENT_NAME
="lttng_test_filter_event"
18 CHANNEL_NAME
="testchan"
19 PAGE_SIZE
=$
(getconf PAGE_SIZE
)
22 TESTCMD
="echo -n 10000 > /proc/lttng-test-filter-event"
24 # Ensure the daemons invoke abort on error.
25 export LTTNG_ABORT_ON_ERROR
=1
27 source $TESTDIR/utils
/utils.sh
29 function signal_cleanup
()
31 diag
"*** Exiting ***"
32 modprobe
-r lttng-test
36 function enable_kernel_lttng_channel_size_limit
()
40 tracefile_size_limit
="$3"
42 test_name
="Enable channel $channel_name "
43 test_name
+="for session $sess_name: "
44 test_name
+="$tracefile_size_limit bytes tracefile limit"
46 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-channel \
47 -k $channel_name -s $sess_name \
48 -C $tracefile_size_limit >/dev
/null
2>&1
53 function enable_kernel_lttng_event_per_channel
()
59 test_name
="Enable event $event_name "
60 test_name
+="for session $sess_name "
61 test_name
+="in channel $channel_name"
63 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-event
"$event_name" \
64 -s $sess_name -k -c $channel_name >/dev
/null
2>&1
69 function test_rotation_destroy_flush_single
()
74 create_lttng_session_ok
$SESSION_NAME $TRACE_PATH
75 enable_kernel_lttng_channel_size_limit \
76 $SESSION_NAME $CHANNEL_NAME $SIZE_LIMIT
77 enable_kernel_lttng_event_per_channel \
78 $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
79 start_lttng_tracing_ok
$SESSION_NAME
82 stop_lttng_tracing_ok
$SESSION_NAME
83 destroy_lttng_session_ok
$SESSION_NAME
87 create_lttng_session_ok
$SESSION_NAME $TRACE_PATH
88 enable_kernel_lttng_channel_size_limit \
89 $SESSION_NAME $CHANNEL_NAME $SIZE_LIMIT
90 enable_kernel_lttng_event_per_channel \
91 $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
92 start_lttng_tracing_ok
$SESSION_NAME
95 destroy_lttng_session_ok
$SESSION_NAME
99 modprobe
-r lttng-test
103 function test_rotation_destroy_flush
()
105 for a
in $
(seq 1 ${NR_ITER}); do
106 diag
"Iteration ${a}/${NR_ITER}"
107 test_rotation_destroy_flush_single
111 # MUST set TESTDIR before calling those functions
112 plan_tests
$NUM_TESTS
114 print_test_banner
"$TEST_DESC"
117 "test_rotation_destroy_flush"
120 TEST_COUNT
=${#TESTS[@]}
123 if [ "$(id -u)" == "0" ]; then
129 skip
$isroot "Root access is needed. Skipping all tests." $NUM_TESTS ||
131 trap signal_cleanup SIGTERM SIGINT
133 while [ "$i" -lt "$TEST_COUNT" ]; do
135 TRACE_PATH
=$
(mktemp
-d)