Mercurial > hg > nginx-tests
annotate stream_error_log.t @ 570:f7bc1f74970a
Tests: avoid send errors in syslog tests with mail error_log.
Use a separate mail server block for syslog parsing tests to make sure
that syslog messages are always read by the receiver on the remote side.
Otherwise, syslog message might not be sent due to a pending socket error.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Thu, 07 May 2015 14:28:44 +0300 |
parents | 22bade4c7e12 |
children | 77359b849cd5 |
rev | line source |
---|---|
558
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
2 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
3 # (C) Sergey Kandaurov |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
5 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
6 # Stream tests for error_log. |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
7 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
8 ############################################################################### |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
9 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
10 use warnings; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
11 use strict; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
12 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
13 use Test::More; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
14 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
15 use IO::Select; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
16 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
17 BEGIN { use FindBin; chdir($FindBin::Bin); } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
18 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
19 use lib 'lib'; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
20 use Test::Nginx; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
21 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
22 ############################################################################### |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
23 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
24 select STDERR; $| = 1; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
25 select STDOUT; $| = 1; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
26 |
562
abf5f3197967
Tests: skipped stream_error_log.t on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents:
558
diff
changeset
|
27 plan(skip_all => 'win32') if $^O eq 'MSWin32'; |
abf5f3197967
Tests: skipped stream_error_log.t on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents:
558
diff
changeset
|
28 |
567
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
29 my $t = Test::Nginx->new()->has(qw/stream/)->plan(34); |
558
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
30 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
31 $t->write_file_expand('nginx.conf', <<'EOF'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
32 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
33 %%TEST_GLOBALS%% |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
34 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
35 error_log %%TESTDIR%%/e_glob.log info; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
36 error_log %%TESTDIR%%/e_glob2.log info; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
37 error_log syslog:server=127.0.0.1:8083 info; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
38 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
39 daemon off; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
40 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
41 events { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
42 } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
43 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
44 stream { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
45 upstream u { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
46 server 127.0.0.1:8083 down; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
47 } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
48 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
49 server { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
50 listen 127.0.0.1:8080; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
51 proxy_pass u; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
52 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
53 error_log %%TESTDIR%%/e_debug.log debug; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
54 error_log %%TESTDIR%%/e_info.log info; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
55 error_log %%TESTDIR%%/e_emerg.log emerg; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
56 error_log stderr info; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
57 } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
58 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
59 server { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
60 listen 127.0.0.1:8082; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
61 proxy_pass 127.0.0.1:8081; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
62 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
63 error_log %%TESTDIR%%/e_stream.log info; |
567
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
64 error_log syslog:server=127.0.0.1:8080 info; |
558
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
65 error_log syslog:server=127.0.0.1:8084 info; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
66 } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
67 } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
68 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
69 EOF |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
70 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
71 open OLDERR, ">&", \*STDERR; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
72 open STDERR, '>', $t->testdir() . '/stderr' or die "Can't reopen STDERR: $!"; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
73 open my $stderr, '<', $t->testdir() . '/stderr' |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
74 or die "Can't open stderr file: $!"; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
75 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
76 $t->run_daemon(\&stream_daemon); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
77 $t->run_daemon(\&syslog_daemon, 8083, $t, 's_glob.log'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
78 $t->run_daemon(\&syslog_daemon, 8084, $t, 's_stream.log'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
79 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
80 $t->waitforsocket('127.0.0.1:8081'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
81 $t->waitforfile($t->testdir . '/s_glob.log'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
82 $t->waitforfile($t->testdir . '/s_stream.log'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
83 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
84 $t->run(); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
85 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
86 open STDERR, ">&", \*OLDERR; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
87 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
88 ############################################################################### |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
89 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
90 stream_get('data'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
91 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
92 # error_log levels |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
93 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
94 SKIP: { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
95 skip "no --with-debug", 1 unless $t->has_module('--with-debug'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
96 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
97 isnt(lines($t, 'e_debug.log', '[debug]'), 0, 'file debug in debug'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
98 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
99 } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
100 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
101 isnt(lines($t, 'e_info.log', '[info]'), 0, 'file info in info'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
102 is(lines($t, 'e_info.log', '[debug]'), 0, 'file debug in info'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
103 isnt(lines($t, 'stderr', '[info]'), 0, 'stderr info in info'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
104 is(lines($t, 'stderr', '[debug]'), 0, 'stderr debug in info'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
105 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
106 # multiple error_log |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
107 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
108 like($t->read_file('e_glob.log'), qr!nginx/[.0-9]+!, 'error global'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
109 like($t->read_file('e_glob2.log'), qr!nginx/[.0-9]+!, 'error global 2'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
110 is_deeply(levels($t, 'e_glob.log'), levels($t, 'e_glob2.log'), |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
111 'multiple error global'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
112 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
113 # syslog |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
114 |
567
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
115 parse_syslog_message('syslog', get_syslog('data2', '127.0.0.1:8082')); |
558
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
116 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
117 is_deeply(levels($t, 's_glob.log'), levels($t, 'e_glob.log'), |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
118 'global syslog messages'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
119 is_deeply(levels($t, 's_stream.log'), levels($t, 'e_stream.log'), |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
120 'stream syslog messages'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
121 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
122 # error_log context |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
123 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
124 SKIP: { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
125 skip "relies on error log contents", 5 unless $ENV{TEST_NGINX_UNSAFE}; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
126 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
127 my $msg = 'no live upstreams while connecting to upstream, ' |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
128 . 'client: 127.0.0.1, server: 127.0.0.1:8080, upstream: "u"'; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
129 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
130 unlike($t->read_file('e_glob.log'), qr/$msg/ms, 'stream error in global'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
131 like($t->read_file('e_info.log'), qr/$msg/ms, 'stream error in info'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
132 like($t->read_file('stderr'), qr/$msg/ms, 'stream error in info stderr'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
133 unlike($t->read_file('e_emerg.log'), qr/$msg/ms, 'stream error in emerg'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
134 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
135 $msg = "bytes from/to client:5/4, bytes from/to upstream:4/5"; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
136 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
137 like($t->read_file('e_stream.log'), qr/$msg/ms, 'stream byte counters'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
138 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
139 } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
140 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
141 ############################################################################### |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
142 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
143 sub lines { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
144 my ($t, $file, $pattern) = @_; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
145 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
146 if ($file eq 'stderr') { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
147 return map { $_ =~ /\Q$pattern\E/ } (<$stderr>); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
148 } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
149 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
150 my $path = $t->testdir() . '/' . $file; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
151 open my $fh, '<', $path or return "$!"; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
152 my $value = map { $_ =~ /\Q$pattern\E/ } (<$fh>); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
153 close $fh; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
154 return $value; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
155 } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
156 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
157 sub levels { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
158 my ($t, $file) = @_; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
159 my %levels_hash; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
160 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
161 map { $levels_hash{$_}++; } ($t->read_file($file) =~ /(\[\w+\])/g); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
162 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
163 return \%levels_hash; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
164 } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
165 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
166 sub stream_get { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
167 my ($data, $peer) = @_; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
168 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
169 $peer = '127.0.0.1:8080' unless defined $peer; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
170 my $s = stream_connect($peer); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
171 stream_write($s, $data); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
172 |
565
ff49e1c00b35
Tests: in stream tests, try to read all the data where appropriate.
Sergey Kandaurov <pluknet@nginx.com>
parents:
562
diff
changeset
|
173 $data = ''; |
ff49e1c00b35
Tests: in stream tests, try to read all the data where appropriate.
Sergey Kandaurov <pluknet@nginx.com>
parents:
562
diff
changeset
|
174 while (my $buf = stream_read($s)) { |
ff49e1c00b35
Tests: in stream tests, try to read all the data where appropriate.
Sergey Kandaurov <pluknet@nginx.com>
parents:
562
diff
changeset
|
175 $data .= $buf; |
ff49e1c00b35
Tests: in stream tests, try to read all the data where appropriate.
Sergey Kandaurov <pluknet@nginx.com>
parents:
562
diff
changeset
|
176 } |
ff49e1c00b35
Tests: in stream tests, try to read all the data where appropriate.
Sergey Kandaurov <pluknet@nginx.com>
parents:
562
diff
changeset
|
177 return $data; |
558
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
178 } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
179 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
180 sub stream_connect { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
181 my $peer = shift; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
182 my $s = IO::Socket::INET->new( |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
183 Proto => 'tcp', |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
184 PeerAddr => $peer || '127.0.0.1:8080' |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
185 ) |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
186 or die "Can't connect to nginx: $!\n"; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
187 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
188 return $s; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
189 } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
190 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
191 sub stream_write { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
192 my ($s, $message) = @_; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
193 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
194 local $SIG{PIPE} = 'IGNORE'; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
195 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
196 $s->blocking(0); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
197 while (IO::Select->new($s)->can_write(1.5)) { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
198 my $n = $s->syswrite($message); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
199 last unless $n; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
200 $message = substr($message, $n); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
201 last unless length $message; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
202 } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
203 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
204 if (length $message) { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
205 $s->close(); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
206 } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
207 } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
208 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
209 sub stream_read { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
210 my ($s) = @_; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
211 my ($buf); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
212 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
213 $s->blocking(0); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
214 if (IO::Select->new($s)->can_read(5)) { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
215 $s->sysread($buf, 1024); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
216 }; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
217 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
218 log_in($buf); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
219 return $buf; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
220 } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
221 |
567
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
222 sub get_syslog { |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
223 my ($data, $peer, $port) = @_; |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
224 my ($s); |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
225 my $rfd = ''; |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
226 |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
227 $port = 8080 unless defined $port; |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
228 |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
229 eval { |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
230 local $SIG{ALRM} = sub { die "timeout\n" }; |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
231 local $SIG{PIPE} = sub { die "sigpipe\n" }; |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
232 alarm(1); |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
233 $s = IO::Socket::INET->new( |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
234 Proto => 'udp', |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
235 LocalAddr => "127.0.0.1:$port" |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
236 ); |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
237 alarm(0); |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
238 }; |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
239 alarm(0); |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
240 if ($@) { |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
241 log_in("died: $@"); |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
242 return undef; |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
243 } |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
244 |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
245 stream_get($data, $peer); |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
246 $data = ''; |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
247 |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
248 IO::Select->new($s)->can_read(1.5); |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
249 while (IO::Select->new($s)->can_read(0.1)) { |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
250 my $buffer; |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
251 sysread($s, $buffer, 4096); |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
252 $data .= $buffer; |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
253 } |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
254 $s->close(); |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
255 return $data; |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
256 } |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
257 |
558
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
258 sub parse_syslog_message { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
259 my ($desc, $line) = @_; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
260 |
567
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
261 ok($line, $desc); |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
262 |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
263 SKIP: { |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
264 skip "$desc timeout", 18 unless $line; |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
265 |
558
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
266 my @months = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
267 'Sep', 'Oct', 'Nov', 'Dec'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
268 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
269 my ($pri, $mon, $mday, $hour, $minute, $sec, $host, $tag, $msg) = |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
270 $line =~ /^<(\d{1,3})> # PRI |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
271 ([A-Z][a-z]{2})\s # mon |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
272 ([ \d]\d)\s(\d{2}):(\d{2}):(\d{2})\s # date |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
273 ([\S]*)\s # host |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
274 (\w{1,32}):\s # tag |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
275 (.*)/x; # MSG |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
276 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
277 my $sev = $pri & 0x07; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
278 my $fac = ($pri & 0x03f8) >> 3; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
279 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
280 ok(defined($pri), "$desc has PRI"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
281 ok($sev >= 0 && $sev <= 7, "$desc valid severity"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
282 ok($fac >= 0 && $fac < 24, "$desc valid facility"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
283 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
284 ok(defined($mon), "$desc has month"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
285 ok((grep $mon, @months), "$desc valid month"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
286 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
287 ok(defined($mday), "$desc has day"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
288 ok($mday <= 31, "$desc valid day"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
289 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
290 ok(defined($hour), "$desc has hour"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
291 ok($hour < 24, "$desc valid hour"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
292 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
293 ok(defined($minute), "$desc has minutes"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
294 ok($minute < 60, "$desc valid minutes"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
295 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
296 ok(defined($sec), "$desc has seconds"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
297 ok($sec < 60, "$desc valid seconds"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
298 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
299 ok(defined($host), "$desc has host"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
300 chomp(my $hostname = lc `hostname`); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
301 is($host , $hostname, "$desc valid host"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
302 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
303 ok(defined($tag), "$desc has tag"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
304 like($tag, qr'\w+', "$desc valid tag"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
305 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
306 ok(length($msg) > 0, "$desc valid CONTENT"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
307 } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
308 |
567
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
309 } |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
310 |
558
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
311 ############################################################################### |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
312 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
313 sub syslog_daemon { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
314 my ($port, $t, $file) = @_; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
315 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
316 my $s = IO::Socket::INET->new( |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
317 Proto => 'udp', |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
318 LocalAddr => "127.0.0.1:$port" |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
319 ); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
320 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
321 open my $fh, '>', $t->testdir() . '/' . $file; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
322 select $fh; $| = 1; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
323 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
324 while (1) { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
325 my $buffer; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
326 $s->recv($buffer, 4096); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
327 print $fh $buffer . "\n"; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
328 } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
329 } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
330 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
331 sub stream_daemon { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
332 my $server = IO::Socket::INET->new( |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
333 Proto => 'tcp', |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
334 LocalHost => '127.0.0.1', |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
335 LocalPort => 8081, |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
336 Listen => 5, |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
337 Reuse => 1 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
338 ) |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
339 or die "Can't create listening socket: $!\n"; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
340 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
341 local $SIG{PIPE} = 'IGNORE'; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
342 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
343 while (my $client = $server->accept()) { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
344 $client->autoflush(1); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
345 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
346 log2c("(new connection $client)"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
347 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
348 $client->sysread(my $buffer, 65536) or next; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
349 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
350 log2i("$client $buffer"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
351 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
352 $buffer = $client->sockport(); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
353 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
354 log2o("$client $buffer"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
355 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
356 $client->syswrite($buffer); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
357 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
358 close $client; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
359 } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
360 } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
361 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
362 sub log2i { Test::Nginx::log_core('|| <<', @_); } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
363 sub log2o { Test::Nginx::log_core('|| >>', @_); } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
364 sub log2c { Test::Nginx::log_core('||', @_); } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
365 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
366 ############################################################################### |