3 # Copyright (C) - 2013 Christian Babeux <christian.babeux@efficios.com>
4 # Copyright (C) - 2014, 2016 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
6 # This program is free software; you can redistribute it and/or modify it
7 # under the terms of the GNU General Public License, version 2 only, as
8 # published by the Free Software Foundation.
10 # This program is distributed in the hope that it will be useful, but WITHOUT
11 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
15 # You should have received a copy of the GNU General Public License along with
16 # this program; if not, write to the Free Software Foundation, Inc., 51
17 # Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 TEST_DESC
="Kernel tracer - Rotation destroy flush"
23 SESSION_NAME
="rotation_destroy_flush"
26 NUM_TESTS
=$
((13*$NR_ITER))
27 EVENT_NAME
="lttng_test_filter_event"
28 CHANNEL_NAME
="testchan"
29 PAGE_SIZE
=$
(getconf PAGE_SIZE
)
32 TESTCMD
="echo -n 10000 > /proc/lttng-test-filter-event"
34 # Ensure the daemons invoke abort on error.
35 export LTTNG_ABORT_ON_ERROR
=1
37 source $TESTDIR/utils
/utils.sh
39 function signal_cleanup
()
41 diag
"*** Exiting ***"
47 function enable_kernel_lttng_channel_size_limit
()
51 tracefile_size_limit
="$3"
53 test_name
="Enable channel $channel_name "
54 test_name
+="for session $sess_name: "
55 test_name
+="$tracefile_size_limit bytes tracefile limit"
57 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-channel \
58 -k $channel_name -s $sess_name \
59 -C $tracefile_size_limit >/dev
/null
2>&1
64 function enable_kernel_lttng_event_per_channel
()
70 test_name
="Enable event $event_name "
71 test_name
+="for session $sess_name "
72 test_name
+="in channel $channel_name"
74 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-event
"$event_name" \
75 -s $sess_name -k -c $channel_name >/dev
/null
2>&1
80 function test_rotation_destroy_flush_single
()
85 create_lttng_session_ok
$SESSION_NAME $TRACE_PATH
86 enable_kernel_lttng_channel_size_limit \
87 $SESSION_NAME $CHANNEL_NAME $SIZE_LIMIT
88 enable_kernel_lttng_event_per_channel \
89 $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
90 start_lttng_tracing_ok
$SESSION_NAME
93 stop_lttng_tracing_ok
$SESSION_NAME
94 destroy_lttng_session_ok
$SESSION_NAME
98 create_lttng_session_ok
$SESSION_NAME $TRACE_PATH
99 enable_kernel_lttng_channel_size_limit \
100 $SESSION_NAME $CHANNEL_NAME $SIZE_LIMIT
101 enable_kernel_lttng_event_per_channel \
102 $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
103 start_lttng_tracing_ok
$SESSION_NAME
106 destroy_lttng_session_ok
$SESSION_NAME
114 function test_rotation_destroy_flush
()
116 for a
in $
(seq 1 ${NR_ITER}); do
117 diag
"Iteration ${a}/${NR_ITER}"
118 test_rotation_destroy_flush_single
122 # MUST set TESTDIR before calling those functions
123 plan_tests
$NUM_TESTS
125 print_test_banner
"$TEST_DESC"
128 "test_rotation_destroy_flush"
131 TEST_COUNT
=${#TESTS[@]}
134 if [ "$(id -u)" == "0" ]; then
140 skip
$isroot "Root access is needed. Skipping all tests." $NUM_TESTS ||
142 trap signal_cleanup SIGTERM SIGINT
144 while [ "$i" -lt "$TEST_COUNT" ]; do
146 TRACE_PATH
=$
(mktemp
-d)