Commit | Line | Data |
---|---|---|
10a8a223 | 1 | #!/src/bin/bash |
d3e8f6bb DG |
2 | # |
3 | # Copyright (C) - 2012 David Goulet <dgoulet@efficios.com> | |
4 | # | |
5 | # This library is free software; you can redistribute it and/or modify it under | |
6 | # the terms of the GNU Lesser General Public License as published by the Free | |
7 | # Software Foundation; version 2.1 of the License. | |
8 | # | |
9 | # This library is distributed in the hope that it will be useful, but WITHOUT | |
10 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | |
11 | # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more | |
12 | # details. | |
13 | # | |
14 | # You should have received a copy of the GNU Lesser General Public License | |
15 | # along with this library; if not, write to the Free Software Foundation, Inc., | |
16 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
17 | ||
18 | SESSIOND_BIN="lttng-sessiond" | |
19 | LTTNG_BIN="lttng" | |
20 | BABELTRACE_BIN="babeltrace" | |
21 | ||
fd4dfcec DG |
22 | # Minimal kernel version supported for session daemon tests |
23 | KERNEL_MAJOR_VERSION=2 | |
24 | KERNEL_MINOR_VERSION=6 | |
25 | KERNEL_PATCHLEVEL_VERSION=27 | |
26 | ||
27 | function validate_kernel_version () | |
28 | { | |
29 | kern_version=($(uname -r | awk -F. '{ printf("%d.%d.%d\n",$1,$2,$3); }' | tr '.' '\n')) | |
30 | if [ ${kern_version[0]} -gt $KERNEL_MAJOR_VERSION ]; then | |
31 | return 0 | |
32 | fi | |
33 | if [ ${kern_version[1]} -gt $KERNEL_MINOR_VERSION ]; then | |
34 | return 0 | |
35 | fi | |
36 | if [ ${kern_version[2]} -ge $KERNEL_PATCHLEVEL_VERSION ]; then | |
37 | return 0 | |
38 | fi | |
39 | return 1 | |
40 | } | |
41 | ||
355f483d | 42 | function spawn_sessiond () |
d3e8f6bb | 43 | { |
317eef93 DG |
44 | echo "" |
45 | echo -n "Starting session daemon... " | |
fd4dfcec DG |
46 | validate_kernel_version |
47 | if [ $? -ne 0 ]; then | |
48 | echo -e "\n*** Kernel to old for session daemon tests ***\n" | |
49 | return 2 | |
50 | fi | |
51 | ||
2e6a03f6 | 52 | DIR=$(readlink -f $TESTDIR) |
355f483d | 53 | |
317eef93 | 54 | if [ -z $(pidof lt-$SESSIOND_BIN) ]; then |
355f483d | 55 | $DIR/../src/bin/lttng-sessiond/$SESSIOND_BIN --daemonize --quiet --consumerd32-path="$DIR/../src/bin/lttng-consumerd/lttng-consumerd" --consumerd64-path="$DIR/../src/bin/lttng-consumerd/lttng-consumerd" |
d3e8f6bb DG |
56 | if [ $? -eq 1 ]; then |
57 | echo -e "\e[1;31mFAILED\e[0m" | |
58 | return 1 | |
59 | else | |
60 | echo -e "\e[1;32mOK\e[0m" | |
61 | fi | |
62 | fi | |
fd4dfcec DG |
63 | |
64 | return 0 | |
d3e8f6bb DG |
65 | } |
66 | ||
355f483d DG |
67 | function start_sessiond() |
68 | { | |
69 | if [ -n $TEST_NO_SESSIOND ] && [ "$TEST_NO_SESSIOND" == "1" ]; then | |
70 | # Env variable requested no session daemon | |
71 | return | |
72 | fi | |
73 | ||
74 | spawn_sessiond | |
75 | out=$? | |
76 | if [ $out -eq 2 ]; then | |
77 | # Kernel version is not compatible. | |
78 | exit 0 | |
79 | elif [ $out -ne 0 ]; then | |
80 | echo "NOT bad $?" | |
81 | exit 1 | |
82 | fi | |
83 | ||
84 | # Simply wait for the session daemon bootstrap | |
85 | echo "Waiting for the session daemon to bootstrap (2 secs)" | |
86 | sleep 2 | |
87 | } | |
88 | ||
d3e8f6bb DG |
89 | function stop_sessiond () |
90 | { | |
355f483d DG |
91 | if [ -n $TEST_NO_SESSIOND ] && [ "$TEST_NO_SESSIOND" == "1" ]; then |
92 | # Env variable requested no session daemon | |
93 | return | |
94 | fi | |
95 | ||
d3e8f6bb DG |
96 | PID_SESSIOND=`pidof lt-$SESSIOND_BIN` |
97 | ||
98 | echo -e -n "Killing session daemon... " | |
99 | kill $PID_SESSIOND >/dev/null 2>&1 | |
100 | if [ $? -eq 1 ]; then | |
101 | echo -e "\e[1;31mFAILED\e[0m" | |
102 | return 1 | |
103 | else | |
104 | echo -e "\e[1;32mOK\e[0m" | |
105 | fi | |
106 | } | |
107 | ||
108 | function create_lttng_session () | |
109 | { | |
110 | sess_name=$1 | |
111 | trace_path=$2 | |
112 | ||
d4018451 | 113 | echo -n "Creating lttng session $sess_name in $trace_path" |
10a8a223 | 114 | $TESTDIR/../src/bin/lttng/$LTTNG_BIN create $sess_name -o $trace_path >/dev/null 2>&1 |
d3e8f6bb DG |
115 | if [ $? -eq 1 ]; then |
116 | echo -e "\e[1;31mFAILED\e[0m" | |
117 | return 1 | |
118 | else | |
119 | echo -e "\e[1;32mOK\e[0m" | |
d4018451 DG |
120 | fi |
121 | } | |
122 | ||
123 | function enable_lttng_channel() | |
124 | { | |
125 | sess_name=$1 | |
126 | channel_name=$2 | |
127 | ||
128 | echo -n "Enabling lttng channel $channel_name for session $sess_name" | |
129 | $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel $channel_name -s $sess_name >/dev/null 2>&1 | |
130 | if [ $? -eq 1 ]; then | |
131 | echo -e "\e[1;31mFAILED\e[0m" | |
132 | return 1 | |
133 | else | |
134 | echo -e "\e[1;32mOK\e[0m" | |
135 | fi | |
136 | } | |
137 | ||
138 | function disable_lttng_channel() | |
139 | { | |
140 | sess_name=$1 | |
141 | channel_name=$2 | |
142 | ||
143 | echo -n "Disabling lttng channel $channel_name for session $sess_name" | |
144 | $TESTDIR/../src/bin/lttng/$LTTNG_BIN disable-channel $channel_name -s $sess_name >/dev/null 2>&1 | |
145 | if [ $? -eq 1 ]; then | |
146 | echo -e "\e[1;31mFAILED\e[0m" | |
147 | return 1 | |
148 | else | |
149 | echo -e "\e[1;32mOK\e[0m" | |
d3e8f6bb DG |
150 | fi |
151 | } | |
152 | ||
153 | function enable_ust_lttng_event () | |
154 | { | |
155 | sess_name=$1 | |
156 | event_name=$2 | |
157 | ||
158 | echo -n "Enabling lttng event $event_name for session $sess_name " | |
10a8a223 | 159 | $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event $event_name -s $sess_name -u >/dev/null 2>&1 |
d3e8f6bb DG |
160 | if [ $? -eq 1 ]; then |
161 | echo -e '\e[1;31mFAILED\e[0m' | |
162 | return 1 | |
163 | else | |
164 | echo -e "\e[1;32mOK\e[0m" | |
165 | fi | |
166 | } | |
167 | ||
168 | function start_tracing () | |
169 | { | |
170 | sess_name=$1 | |
171 | ||
172 | echo -n "Start lttng tracing for session $sess_name " | |
10a8a223 | 173 | $TESTDIR/../src/bin/lttng/$LTTNG_BIN start $sess_name >/dev/null 2>&1 |
d3e8f6bb DG |
174 | if [ $? -eq 1 ]; then |
175 | echo -e '\e[1;31mFAILED\e[0m' | |
176 | return 1 | |
177 | else | |
178 | echo -e "\e[1;32mOK\e[0m" | |
179 | fi | |
180 | } | |
181 | ||
182 | function stop_tracing () | |
183 | { | |
184 | sess_name=$1 | |
185 | ||
186 | echo -n "Stop lttng tracing for session $sess_name " | |
10a8a223 | 187 | $TESTDIR/../src/bin/lttng/$LTTNG_BIN stop $sess_name >/dev/null 2>&1 |
d3e8f6bb DG |
188 | if [ $? -eq 1 ]; then |
189 | echo -e '\e[1;31mFAILED\e[0m' | |
190 | return 1 | |
191 | else | |
192 | echo -e "\e[1;32mOK\e[0m" | |
193 | fi | |
194 | } | |
195 | ||
196 | function destroy_lttng_session () | |
197 | { | |
198 | sess_name=$1 | |
199 | ||
200 | echo -n "Destroy lttng session $sess_name " | |
10a8a223 | 201 | $TESTDIR/../src/bin/lttng/$LTTNG_BIN destroy $sess_name >/dev/null 2>&1 |
d3e8f6bb DG |
202 | if [ $? -eq 1 ]; then |
203 | echo -e '\e[1;31mFAILED\e[0m' | |
204 | return 1 | |
205 | else | |
206 | echo -e "\e[1;32mOK\e[0m" | |
207 | fi | |
208 | } | |
209 | ||
210 | function trace_matches () | |
211 | { | |
212 | event_name=$1 | |
213 | nr_iter=$2 | |
214 | trace_path=$3 | |
215 | ||
317eef93 DG |
216 | which $BABELTRACE_BIN >/dev/null |
217 | if [ $? -eq 1 ]; then | |
218 | echo "Babeltrace binary not found. Skipping trace matches" | |
219 | return 0 | |
220 | fi | |
221 | ||
d3e8f6bb DG |
222 | echo -n "Looking for $nr_iter $event_name in $trace_path " |
223 | ||
224 | count=$($BABELTRACE_BIN $trace_path | grep $event_name | wc -l) | |
225 | if [ "$count" -ne "$nr_iter" ]; then | |
226 | echo -e "$count found in trace \e[1;31mFAILED\e[0m" | |
227 | return 1 | |
228 | else | |
229 | echo -e "Trace is coherent \e[1;32mOK\e[0m" | |
230 | return 0 | |
231 | fi | |
232 | } |