]>
Commit | Line | Data |
---|---|---|
8ed182d8 EJ |
1 | AT_BANNER([vlog]) |
2 | ||
3 | AT_SETUP([vlog - Python]) | |
4 | AT_SKIP_IF([test $HAVE_PYTHON = no]) | |
8ed182d8 EJ |
5 | AT_CAPTURE_FILE([log_file]) |
6 | AT_CAPTURE_FILE([stderr_log]) | |
ea523221 BP |
7 | AT_CHECK([$PYTHON $srcdir/test-vlog.py --log-file log_file \ |
8 | -v dbg module_1:info module_2:warn syslog:off 2>stderr_log]) | |
8ed182d8 | 9 | |
a5ed8fe3 | 10 | AT_CHECK([sed -e 's/.*-.*-.*T..:..:..Z |//' \ |
7b7e43f5 | 11 | -e 's/File ".*", line [[0-9]][[0-9]]*,/File <name>, line <number>,/' \ |
8ed182d8 | 12 | stderr_log], [0], [dnl |
a5ed8fe3 DT |
13 | 0 | module_0 | EMER | emergency |
14 | 1 | module_0 | ERR | error | |
15 | 2 | module_0 | WARN | warning | |
16 | 3 | module_0 | INFO | information | |
17 | 4 | module_0 | DBG | debug | |
18 | 5 | module_0 | EMER | emergency exception | |
8ed182d8 EJ |
19 | Traceback (most recent call last): |
20 | File <name>, line <number>, in main | |
21 | assert fail | |
22 | AssertionError | |
a5ed8fe3 | 23 | 6 | module_0 | ERR | error exception |
8ed182d8 EJ |
24 | Traceback (most recent call last): |
25 | File <name>, line <number>, in main | |
26 | assert fail | |
27 | AssertionError | |
a5ed8fe3 | 28 | 7 | module_0 | WARN | warn exception |
8ed182d8 EJ |
29 | Traceback (most recent call last): |
30 | File <name>, line <number>, in main | |
31 | assert fail | |
32 | AssertionError | |
a5ed8fe3 | 33 | 8 | module_0 | INFO | information exception |
8ed182d8 EJ |
34 | Traceback (most recent call last): |
35 | File <name>, line <number>, in main | |
36 | assert fail | |
37 | AssertionError | |
a5ed8fe3 | 38 | 9 | module_0 | DBG | debug exception |
8ed182d8 EJ |
39 | Traceback (most recent call last): |
40 | File <name>, line <number>, in main | |
41 | assert fail | |
42 | AssertionError | |
a5ed8fe3 | 43 | 10 | module_0 | ERR | exception |
8ed182d8 EJ |
44 | Traceback (most recent call last): |
45 | File <name>, line <number>, in main | |
46 | assert fail | |
47 | AssertionError | |
a5ed8fe3 DT |
48 | 11 | module_1 | EMER | emergency |
49 | 12 | module_1 | ERR | error | |
50 | 13 | module_1 | WARN | warning | |
51 | 14 | module_1 | INFO | information | |
52 | 16 | module_1 | EMER | emergency exception | |
8ed182d8 EJ |
53 | Traceback (most recent call last): |
54 | File <name>, line <number>, in main | |
55 | assert fail | |
56 | AssertionError | |
a5ed8fe3 | 57 | 17 | module_1 | ERR | error exception |
8ed182d8 EJ |
58 | Traceback (most recent call last): |
59 | File <name>, line <number>, in main | |
60 | assert fail | |
61 | AssertionError | |
a5ed8fe3 | 62 | 18 | module_1 | WARN | warn exception |
8ed182d8 EJ |
63 | Traceback (most recent call last): |
64 | File <name>, line <number>, in main | |
65 | assert fail | |
66 | AssertionError | |
a5ed8fe3 | 67 | 19 | module_1 | INFO | information exception |
8ed182d8 EJ |
68 | Traceback (most recent call last): |
69 | File <name>, line <number>, in main | |
70 | assert fail | |
71 | AssertionError | |
a5ed8fe3 | 72 | 21 | module_1 | ERR | exception |
8ed182d8 EJ |
73 | Traceback (most recent call last): |
74 | File <name>, line <number>, in main | |
75 | assert fail | |
76 | AssertionError | |
a5ed8fe3 DT |
77 | 22 | module_2 | EMER | emergency |
78 | 23 | module_2 | ERR | error | |
79 | 24 | module_2 | WARN | warning | |
80 | 27 | module_2 | EMER | emergency exception | |
8ed182d8 EJ |
81 | Traceback (most recent call last): |
82 | File <name>, line <number>, in main | |
83 | assert fail | |
84 | AssertionError | |
a5ed8fe3 | 85 | 28 | module_2 | ERR | error exception |
8ed182d8 EJ |
86 | Traceback (most recent call last): |
87 | File <name>, line <number>, in main | |
88 | assert fail | |
89 | AssertionError | |
a5ed8fe3 | 90 | 29 | module_2 | WARN | warn exception |
8ed182d8 EJ |
91 | Traceback (most recent call last): |
92 | File <name>, line <number>, in main | |
93 | assert fail | |
94 | AssertionError | |
a5ed8fe3 | 95 | 32 | module_2 | ERR | exception |
8ed182d8 EJ |
96 | Traceback (most recent call last): |
97 | File <name>, line <number>, in main | |
98 | assert fail | |
99 | AssertionError | |
100 | ]) | |
101 | ||
102 | AT_CLEANUP | |
8ba37945 | 103 | |
3c016b8b BP |
104 | m4_divert_push([PREPARE_TESTS]) |
105 | vlog_filt () { | |
106 | sed 's/.*\(opened log file\).*/\1/ | |
107 | s/.*|//' "$@" | |
108 | } | |
109 | m4_divert_pop([PREPARE_TESTS]) | |
110 | ||
111 | AT_SETUP([vlog - vlog/reopen - C]) | |
112 | # This test won't work as-is on Windows because Windows doesn't allow | |
113 | # files that are open to be renamed. | |
114 | AT_SKIP_IF([test "$IS_WIN32" = "yes"]) | |
115 | on_exit 'kill `cat test-unixctl.pid`' | |
116 | ||
117 | AT_CAPTURE_FILE([log]) | |
118 | AT_CAPTURE_FILE([log.old]) | |
119 | AT_CHECK([ovstest test-unixctl --log-file=`pwd`/log --pidfile --detach], | |
120 | [0], [], [stderr]) | |
121 | AT_CHECK([vlog_filt stderr], [0], | |
122 | [opened log file | |
123 | ]) | |
124 | ||
125 | AT_CHECK([APPCTL -t test-unixctl log message]) | |
126 | mv log log.old | |
127 | AT_CHECK([APPCTL -t test-unixctl log message2]) | |
128 | AT_CHECK([APPCTL -t test-unixctl vlog/reopen]) | |
129 | AT_CHECK([APPCTL -t test-unixctl log message3]) | |
130 | AT_CHECK([APPCTL -t test-unixctl exit]) | |
131 | ||
132 | AT_CHECK([vlog_filt log.old], [0], [dnl | |
133 | opened log file | |
134 | Entering run loop. | |
135 | message | |
136 | message2 | |
137 | closing log file | |
138 | ]) | |
139 | AT_CHECK([vlog_filt log], [0], [dnl | |
140 | opened log file | |
141 | message3 | |
142 | ]) | |
143 | AT_CLEANUP | |
144 | ||
8ba37945 BP |
145 | AT_SETUP([vlog - vlog/reopen - Python]) |
146 | AT_SKIP_IF([test $HAVE_PYTHON = no]) | |
53eb8cb8 | 147 | on_exit 'kill `cat test-unixctl.py.pid`' |
8ba37945 BP |
148 | |
149 | AT_CAPTURE_FILE([log]) | |
150 | AT_CAPTURE_FILE([log.old]) | |
151 | AT_CHECK([$PYTHON $srcdir/test-unixctl.py --log-file=`pwd`/log --pidfile --detach]) | |
152 | ||
153 | AT_CHECK([APPCTL -t test-unixctl.py log message]) | |
154 | mv log log.old | |
155 | AT_CHECK([APPCTL -t test-unixctl.py log message2]) | |
156 | AT_CHECK([APPCTL -t test-unixctl.py vlog/reopen]) | |
157 | AT_CHECK([APPCTL -t test-unixctl.py log message3]) | |
158 | AT_CHECK([APPCTL -t test-unixctl.py exit]) | |
8ba37945 BP |
159 | |
160 | AT_CHECK([sed 's/.*|//' log.old], [0], [dnl | |
a5ed8fe3 DT |
161 | Entering run loop. |
162 | message | |
163 | message2 | |
8ba37945 BP |
164 | ]) |
165 | AT_CHECK([sed 's/.*|//' log], [0], [dnl | |
a5ed8fe3 | 166 | message3 |
8ba37945 BP |
167 | ]) |
168 | AT_CLEANUP | |
169 | ||
3c016b8b BP |
170 | AT_SETUP([vlog - vlog/reopen without log file - C]) |
171 | on_exit 'kill `cat test-unixctl.pid`' | |
172 | ||
173 | AT_CHECK([ovstest test-unixctl --pidfile --detach]) | |
174 | ||
175 | AT_CHECK([APPCTL -t test-unixctl vlog/reopen], [2], [], | |
176 | [Logging to file not configured | |
177 | ovs-appctl: test-unixctl: server returned an error | |
178 | ]) | |
179 | AT_CLEANUP | |
180 | ||
8ba37945 BP |
181 | AT_SETUP([vlog - vlog/reopen without log file - Python]) |
182 | AT_SKIP_IF([test $HAVE_PYTHON = no]) | |
53eb8cb8 | 183 | on_exit 'kill `cat test-unixctl.py.pid`' |
8ba37945 BP |
184 | |
185 | AT_CHECK([$PYTHON $srcdir/test-unixctl.py --pidfile --detach]) | |
186 | ||
187 | AT_CHECK([APPCTL -t test-unixctl.py vlog/reopen], [0], | |
188 | [Logging to file not configured | |
189 | ]) | |
190 | AT_CLEANUP | |
191 | ||
3c016b8b BP |
192 | dnl This checks that if vlog/reopen can't reopen the log file, |
193 | dnl nothing particularly bad (e.g. a crash) happens. | |
194 | AT_SETUP([vlog - vlog/reopen can't reopen log file - C]) | |
195 | # Verify that /dev/full is a character device that fails writes. | |
196 | AT_SKIP_IF([test ! -c /dev/full]) | |
197 | AT_SKIP_IF([echo > /dev/full]) | |
198 | ||
199 | on_exit 'kill `cat test-unixctl.pid`' | |
200 | ||
201 | AT_CHECK([ovstest test-unixctl --log-file=`pwd`/log --pidfile --detach], | |
202 | [0], [], [stderr]) | |
203 | AT_CHECK([vlog_filt stderr], [0], [opened log file | |
204 | ]) | |
205 | ||
206 | AT_CHECK([APPCTL -t test-unixctl log message]) | |
207 | mv log log.old | |
208 | ln -s /dev/full log | |
209 | AT_CHECK([APPCTL -t test-unixctl vlog/reopen]) | |
210 | AT_CHECK([APPCTL -t test-unixctl log message2]) | |
211 | rm log | |
212 | AT_CHECK([APPCTL -t test-unixctl vlog/reopen]) | |
213 | AT_CHECK([APPCTL -t test-unixctl log message3]) | |
214 | AT_CHECK([APPCTL -t test-unixctl exit]) | |
215 | AT_CHECK([vlog_filt log.old], [0], [dnl | |
216 | opened log file | |
217 | Entering run loop. | |
218 | message | |
219 | closing log file | |
220 | ]) | |
221 | AT_CHECK([vlog_filt log], [0], [dnl | |
222 | opened log file | |
223 | message3 | |
224 | ]) | |
225 | AT_CLEANUP | |
226 | ||
8ba37945 BP |
227 | dnl This checks that if vlog/reopen can't reopen the log file, |
228 | dnl nothing particularly bad (e.g. Python throws an exception and | |
229 | dnl aborts the program) happens. | |
230 | AT_SETUP([vlog - vlog/reopen can't reopen log file - Python]) | |
231 | AT_SKIP_IF([test $HAVE_PYTHON = no]) | |
232 | ||
233 | # Verify that /dev/full is a character device that fails writes. | |
234 | AT_SKIP_IF([test ! -c /dev/full]) | |
235 | AT_SKIP_IF([echo > /dev/full]) | |
236 | ||
53eb8cb8 | 237 | on_exit 'kill `cat test-unixctl.py.pid`' |
8ba37945 BP |
238 | |
239 | AT_CHECK([$PYTHON $srcdir/test-unixctl.py --log-file=`pwd`/log --pidfile --detach]) | |
240 | AT_CHECK([APPCTL -t test-unixctl.py log message]) | |
241 | mv log log.old | |
242 | ln -s /dev/full log | |
243 | AT_CHECK([APPCTL -t test-unixctl.py vlog/reopen]) | |
244 | AT_CHECK([APPCTL -t test-unixctl.py log message2]) | |
245 | rm log | |
246 | AT_CHECK([APPCTL -t test-unixctl.py vlog/reopen]) | |
247 | AT_CHECK([APPCTL -t test-unixctl.py log message3]) | |
248 | AT_CHECK([APPCTL -t test-unixctl.py exit]) | |
249 | AT_CHECK([sed 's/.*|//' log.old], [0], [dnl | |
a5ed8fe3 DT |
250 | Entering run loop. |
251 | message | |
8ba37945 BP |
252 | ]) |
253 | AT_CHECK([sed 's/.*|//' log], [0], [dnl | |
a5ed8fe3 | 254 | message3 |
8ba37945 BP |
255 | ]) |
256 | AT_CLEANUP | |
f26ddb5b | 257 | |
3c016b8b BP |
258 | AT_SETUP([vlog - vlog/set and vlog/list - C]) |
259 | on_exit 'kill `cat test-unixctl.pid`' | |
260 | ||
261 | AT_CAPTURE_FILE([log]) | |
262 | AT_CHECK([ovstest test-unixctl --log-file=`pwd`/log --pidfile --detach], | |
263 | [0], [], [stderr]) | |
264 | AT_CHECK([vlog_filt stderr], [0], [opened log file | |
265 | ]) | |
266 | ||
267 | AT_CHECK([APPCTL -t test-unixctl vlog/list | sed -n '1,2p | |
268 | /\(test_unixctl\|daemon\) /p'], [0], [dnl | |
269 | console syslog file | |
270 | ------- ------ ------ | |
271 | daemon OFF INFO INFO | |
272 | test_unixctl OFF INFO INFO | |
273 | ]) | |
274 | ||
275 | AT_CHECK([APPCTL -t test-unixctl vlog/set daemon:syslog:err]) | |
276 | AT_CHECK([APPCTL -t test-unixctl vlog/set file:dbg]) | |
277 | AT_CHECK([APPCTL -t test-unixctl vlog/set nonexistent], [2], [], | |
278 | [no destination, level, or module "nonexistent" | |
279 | ovs-appctl: test-unixctl: server returned an error | |
280 | ]) | |
281 | AT_CHECK([APPCTL -t test-unixctl vlog/list | sed -n '1,2p | |
282 | /\(test_unixctl\|daemon\) /p'], [0], [dnl | |
283 | console syslog file | |
284 | ------- ------ ------ | |
285 | daemon OFF ERR DBG | |
286 | test_unixctl OFF INFO DBG | |
287 | ]) | |
288 | ||
289 | AT_CHECK([APPCTL -t test-unixctl vlog/set pattern], [2], [], | |
290 | [missing destination | |
291 | ovs-appctl: test-unixctl: server returned an error | |
292 | ]) | |
293 | AT_CHECK([APPCTL -t test-unixctl vlog/set pattern:nonexistent], [2], [], | |
294 | [unknown destination "nonexistent" | |
295 | ovs-appctl: test-unixctl: server returned an error | |
296 | ]) | |
297 | AT_CHECK([APPCTL -t test-unixctl vlog/set pattern:file:'I<3OVS|%m']) | |
298 | AT_CHECK([APPCTL -t test-unixctl log patterntest]) | |
299 | AT_CHECK([grep -q 'I<3OVS' log]) | |
300 | AT_CLEANUP | |
301 | ||
f26ddb5b BP |
302 | AT_SETUP([vlog - vlog/set and vlog/list - Python]) |
303 | AT_SKIP_IF([test $HAVE_PYTHON = no]) | |
53eb8cb8 | 304 | on_exit 'kill `cat test-unixctl.py.pid`' |
f26ddb5b BP |
305 | |
306 | AT_CAPTURE_FILE([log]) | |
307 | AT_CHECK([$PYTHON $srcdir/test-unixctl.py --log-file=`pwd`/log --pidfile --detach]) | |
308 | ||
309 | AT_CHECK([APPCTL -t test-unixctl.py vlog/list], [0], [dnl | |
310 | console syslog file | |
311 | ------- ------ ------ | |
312 | daemon info info info | |
313 | fatal-signal info info info | |
314 | jsonrpc info info info | |
315 | poller info info info | |
316 | reconnect info info info | |
317 | socket_util info info info | |
318 | stream info info info | |
319 | test-unixctl info info info | |
320 | unixctl_server info info info | |
321 | ]) | |
322 | ||
323 | AT_CHECK([APPCTL -t test-unixctl.py vlog/set daemon:syslog:err]) | |
324 | AT_CHECK([APPCTL -t test-unixctl.py vlog/set file:dbg]) | |
325 | AT_CHECK([APPCTL -t test-unixctl.py vlog/set nonexistent], [0], | |
d5460484 | 326 | [no destination, level, or module "nonexistent" |
f26ddb5b BP |
327 | ]) |
328 | AT_CHECK([APPCTL -t test-unixctl.py vlog/list], [0], [dnl | |
329 | console syslog file | |
330 | ------- ------ ------ | |
331 | daemon info err dbg | |
332 | fatal-signal info info dbg | |
333 | jsonrpc info info dbg | |
334 | poller info info dbg | |
335 | reconnect info info dbg | |
336 | socket_util info info dbg | |
337 | stream info info dbg | |
338 | test-unixctl info info dbg | |
339 | unixctl_server info info dbg | |
340 | ]) | |
a5ed8fe3 DT |
341 | |
342 | AT_CHECK([APPCTL -t test-unixctl.py vlog/set pattern], [0], | |
d5460484 | 343 | [Please supply a valid pattern and destination |
a5ed8fe3 DT |
344 | ]) |
345 | AT_CHECK([APPCTL -t test-unixctl.py vlog/set pattern:nonexistent], [0], | |
d5460484 | 346 | [Destination nonexistent does not exist |
a5ed8fe3 DT |
347 | ]) |
348 | AT_CHECK([APPCTL -t test-unixctl.py vlog/set pattern:file:'I<3OVS|%m']) | |
349 | AT_CHECK([APPCTL -t test-unixctl.py log patterntest]) | |
350 | AT_CHECK([grep -q 'I<3OVS' log]) | |
f26ddb5b | 351 | AT_CLEANUP |
d69d61c7 GS |
352 | |
353 | AT_SETUP([vlog - RFC5424 facility]) | |
53eb8cb8 | 354 | on_exit 'kill `cat ovsdb-server.pid`' |
d69d61c7 GS |
355 | |
356 | dnl Create database. | |
357 | touch .conf.db.~lock~ | |
358 | AT_CHECK([ovsdb-tool create conf.db $abs_top_srcdir/vswitchd/vswitch.ovsschema]) | |
359 | ||
360 | AT_CHECK([ovsdb-server --detach --no-chdir --pidfile \ | |
361 | --remote=punix:$OVS_RUNDIR/db.sock -vPATTERN:file:"<%B>1 %A %m" \ | |
362 | --log-file], [0], [], [stderr]) | |
363 | AT_CHECK([ovs-appctl -t ovsdb-server exit]) | |
364 | ||
365 | # A default facility of LOG_LOCAL0 while writing to file. | |
38b0b29f | 366 | AT_CHECK([head -1 ovsdb-server.log | awk '{print $1}'], [0], [<133>1 |
d69d61c7 GS |
367 | ]) |
368 | rm ovsdb-server.log | |
369 | ||
370 | AT_CHECK([ovsdb-server --detach --no-chdir --pidfile \ | |
371 | --remote=punix:$OVS_RUNDIR/db.sock -vPATTERN:file:"<%B>1 %A %m" \ | |
372 | -vFACILITY:daemon --log-file], [0], [], [stderr]) | |
373 | ||
38b0b29f | 374 | AT_CHECK([head -1 ovsdb-server.log | awk '{print $1}'], [0], [<29>1 |
d69d61c7 GS |
375 | ]) |
376 | ||
377 | AT_CHECK([ovs-appctl -t ovsdb-server vlog/set FACILITY:invalid], [2], [], | |
378 | [invalid facility | |
379 | ovs-appctl: ovsdb-server: server returned an error | |
380 | ]) | |
381 | ||
382 | AT_CHECK([ovs-appctl -t ovsdb-server vlog/set FACILITY:local7]) | |
383 | AT_CHECK([ovs-appctl -t ovsdb-server vlog/set ANY:file:DBG]) | |
384 | AT_CHECK([ovs-appctl -t ovsdb-server exit]) | |
385 | ||
38b0b29f | 386 | AT_CHECK([tail -1 ovsdb-server.log | awk '{print $1}'], [0], [<191>1 |
d69d61c7 GS |
387 | ]) |
388 | AT_CLEANUP | |
389 | ||
390 | AT_SETUP([vlog - RFC5424 facility - Python]) | |
391 | AT_SKIP_IF([test $HAVE_PYTHON = no]) | |
53eb8cb8 | 392 | on_exit 'kill `cat test-unixctl.py.pid`' |
d69d61c7 GS |
393 | |
394 | AT_CHECK([$PYTHON $srcdir/test-unixctl.py --log-file=`pwd`/log --pidfile \ | |
395 | -vFACILITY:invalid --detach], [1], [], [test-unixctl.py: processing "FACILITY:invalid": Facility invalid is invalid | |
396 | ]) | |
397 | ||
398 | AT_CHECK([$PYTHON $srcdir/test-unixctl.py --log-file=`pwd`/log --pidfile \ | |
399 | -vFACILITY:daemon --detach]) | |
400 | ||
401 | AT_CHECK([ovs-appctl -t test-unixctl.py vlog/set FACILITY:invalid], [0], | |
402 | [Facility invalid is invalid | |
403 | ]) | |
404 | ||
405 | AT_CHECK([ovs-appctl -t test-unixctl.py vlog/set FACILITY:local0]) | |
406 | AT_CLEANUP |