538d09b01157ee5a236723fe377c9718cb81f7ae
[lttng-tools.git] / tests / regression / kernel / test_rotation_destroy_flush
1 #!/bin/bash
2 #
3 # Copyright (C) 2013 Christian Babeux <christian.babeux@efficios.com>
4 # Copyright (C) 2014, 2016 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
5 #
6 # SPDX-License-Identifier: GPL-2.0-only
7 #
8
9 TEST_DESC="Kernel tracer - Rotation destroy flush"
10
11 CURDIR=$(dirname $0)/
12 TESTDIR=$CURDIR/../..
13 SESSION_NAME="rotation_destroy_flush"
14
15 NR_ITER=10
16 NUM_TESTS=$((13*$NR_ITER))
17 EVENT_NAME="lttng_test_filter_event"
18 CHANNEL_NAME="testchan"
19 PAGE_SIZE=$(getconf PAGE_SIZE)
20 SIZE_LIMIT=$PAGE_SIZE
21
22 TESTCMD="echo -n 10000 > /proc/lttng-test-filter-event"
23
24 # Ensure the daemons invoke abort on error.
25 export LTTNG_ABORT_ON_ERROR=1
26
27 source $TESTDIR/utils/utils.sh
28
29 function signal_cleanup()
30 {
31 diag "*** Exiting ***"
32 modprobe -r lttng-test
33 full_cleanup
34 }
35
36 function enable_kernel_lttng_channel_size_limit ()
37 {
38 sess_name="$1"
39 channel_name="$2"
40 tracefile_size_limit="$3"
41
42 test_name="Enable channel $channel_name "
43 test_name+="for session $sess_name: "
44 test_name+="$tracefile_size_limit bytes tracefile limit"
45
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
49
50 ok $? "$test_name"
51 }
52
53 function enable_kernel_lttng_event_per_channel ()
54 {
55 sess_name="$1"
56 event_name="$2"
57 channel_name="$3"
58
59 test_name="Enable event $event_name "
60 test_name+="for session $sess_name "
61 test_name+="in channel $channel_name"
62
63 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" \
64 -s $sess_name -k -c $channel_name >/dev/null 2>&1
65
66 ok $? "$test_name"
67 }
68
69 function test_rotation_destroy_flush_single()
70 {
71 start_lttng_sessiond
72 modprobe lttng-test
73
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
80 eval ${TESTCMD}
81 # stop and destroy
82 stop_lttng_tracing_ok $SESSION_NAME
83 destroy_lttng_session_ok $SESSION_NAME
84
85 rm -rf $TRACE_PATH
86
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
93 eval ${TESTCMD}
94 # destroy only
95 destroy_lttng_session_ok $SESSION_NAME
96
97 rm -rf $TRACE_PATH
98
99 modprobe -r lttng-test
100 stop_lttng_sessiond
101 }
102
103 function test_rotation_destroy_flush()
104 {
105 for a in $(seq 1 ${NR_ITER}); do
106 diag "Iteration ${a}/${NR_ITER}"
107 test_rotation_destroy_flush_single
108 done
109 }
110
111 # MUST set TESTDIR before calling those functions
112 plan_tests $NUM_TESTS
113
114 print_test_banner "$TEST_DESC"
115
116 TESTS=(
117 "test_rotation_destroy_flush"
118 )
119
120 TEST_COUNT=${#TESTS[@]}
121 i=0
122
123 if [ "$(id -u)" == "0" ]; then
124 isroot=1
125 else
126 isroot=0
127 fi
128
129 skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS ||
130 {
131 trap signal_cleanup SIGTERM SIGINT
132
133 while [ "$i" -lt "$TEST_COUNT" ]; do
134
135 TRACE_PATH=$(mktemp -d)
136
137 # Execute test
138 ${TESTS[$i]}
139
140 let "i++"
141 done
142 }
This page took 0.031949 seconds and 3 git commands to generate.