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 ***"
42 modprobe
-r lttng-test
46 function enable_kernel_lttng_channel_size_limit
()
50 tracefile_size_limit
="$3"
52 test_name
="Enable channel $channel_name "
53 test_name
+="for session $sess_name: "
54 test_name
+="$tracefile_size_limit bytes tracefile limit"
56 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-channel \
57 -k $channel_name -s $sess_name \
58 -C $tracefile_size_limit >/dev
/null
2>&1
63 function enable_kernel_lttng_event_per_channel
()
69 test_name
="Enable event $event_name "
70 test_name
+="for session $sess_name "
71 test_name
+="in channel $channel_name"
73 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-event
"$event_name" \
74 -s $sess_name -k -c $channel_name >/dev
/null
2>&1
79 function test_rotation_destroy_flush_single
()
84 create_lttng_session_ok
$SESSION_NAME $TRACE_PATH
85 enable_kernel_lttng_channel_size_limit \
86 $SESSION_NAME $CHANNEL_NAME $SIZE_LIMIT
87 enable_kernel_lttng_event_per_channel \
88 $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
89 start_lttng_tracing_ok
$SESSION_NAME
92 stop_lttng_tracing_ok
$SESSION_NAME
93 destroy_lttng_session_ok
$SESSION_NAME
97 create_lttng_session_ok
$SESSION_NAME $TRACE_PATH
98 enable_kernel_lttng_channel_size_limit \
99 $SESSION_NAME $CHANNEL_NAME $SIZE_LIMIT
100 enable_kernel_lttng_event_per_channel \
101 $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
102 start_lttng_tracing_ok
$SESSION_NAME
105 destroy_lttng_session_ok
$SESSION_NAME
109 modprobe
-r lttng-test
113 function test_rotation_destroy_flush
()
115 for a
in $
(seq 1 ${NR_ITER}); do
116 diag
"Iteration ${a}/${NR_ITER}"
117 test_rotation_destroy_flush_single
121 # MUST set TESTDIR before calling those functions
122 plan_tests
$NUM_TESTS
124 print_test_banner
"$TEST_DESC"
127 "test_rotation_destroy_flush"
130 TEST_COUNT
=${#TESTS[@]}
133 if [ "$(id -u)" == "0" ]; then
139 skip
$isroot "Root access is needed. Skipping all tests." $NUM_TESTS ||
141 trap signal_cleanup SIGTERM SIGINT
143 while [ "$i" -lt "$TEST_COUNT" ]; do
145 TRACE_PATH
=$
(mktemp
-d)