Mercurial > hg > nginx-tests
annotate stream_error_log.t @ 1752:ba6e24e38f03
Tests: improved stop_daemons() to send signal again.
As was observed, it's possible that a signal to complete a uwsgi daemon
can be ignored while it is starting up, which results in tests hang due
to eternal waiting on child processes termination. Notably, it is seen
when running tests with a high number of prove jobs on a low-profile VM
against nginx with broken modules and/or configuration. To reproduce:
$ TEST_NGINX_GLOBALS=ERROR prove -j16 uwsgi*.t
Inspecting uwsgi under ktrace on FreeBSD confirms that a SIGTERM signal
is ignored at the very beginning of uwsgi startup. It is then replaced
with a default action after listen(), thus waiting until uwsgi is ready
to accept new TCP connections doesn't completely solve the hang window.
The fix is to retry sending a signal some time after waitpid(WNOHANG)
continuously demonstrated no progress with reaping a signaled process.
It is modelled after f13ead27f89c that improved stop() for nginx.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Wed, 29 Dec 2021 22:29:23 +0300 |
parents | f3ba4c74de31 |
children | 38f1fd9ca3e6 |
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; |
1600
b61e820caa83
Tests: using Sys::Hostname to get hostname in a portable way.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1237
diff
changeset
|
16 use Sys::Hostname; |
558
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
17 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
18 BEGIN { use FindBin; chdir($FindBin::Bin); } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
19 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
20 use lib 'lib'; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
21 use Test::Nginx; |
816
77359b849cd5
Tests: stream package.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
567
diff
changeset
|
22 use Test::Nginx::Stream qw/ stream /; |
558
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 ############################################################################### |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
25 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
26 select STDERR; $| = 1; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
27 select STDOUT; $| = 1; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
28 |
562
abf5f3197967
Tests: skipped stream_error_log.t on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents:
558
diff
changeset
|
29 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
|
30 |
567
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
31 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
|
32 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
33 $t->write_file_expand('nginx.conf', <<'EOF'); |
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 %%TEST_GLOBALS%% |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
36 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
37 error_log %%TESTDIR%%/e_glob.log info; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
38 error_log %%TESTDIR%%/e_glob2.log info; |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1235
diff
changeset
|
39 error_log syslog:server=127.0.0.1:%%PORT_8983_UDP%% info; |
558
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 daemon off; |
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 events { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
44 } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
45 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
46 stream { |
1609
f3ba4c74de31
Tests: added TEST_GLOBALS_STREAM variable support.
Andrei Belov <defan@nginx.com>
parents:
1600
diff
changeset
|
47 %%TEST_GLOBALS_STREAM%% |
f3ba4c74de31
Tests: added TEST_GLOBALS_STREAM variable support.
Andrei Belov <defan@nginx.com>
parents:
1600
diff
changeset
|
48 |
558
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
49 upstream u { |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1235
diff
changeset
|
50 server 127.0.0.1:%%PORT_8983_UDP%% down; |
558
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
51 } |
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 server { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
54 listen 127.0.0.1:8080; |
558
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
55 proxy_pass u; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
56 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
57 error_log %%TESTDIR%%/e_debug.log debug; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
58 error_log %%TESTDIR%%/e_info.log info; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
59 error_log %%TESTDIR%%/e_emerg.log emerg; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
60 error_log stderr info; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
61 } |
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 server { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
64 listen 127.0.0.1:8082; |
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
65 proxy_pass 127.0.0.1:8081; |
558
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 error_log %%TESTDIR%%/e_stream.log info; |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1235
diff
changeset
|
68 error_log syslog:server=127.0.0.1:%%PORT_8985_UDP%% info; |
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1235
diff
changeset
|
69 error_log syslog:server=127.0.0.1:%%PORT_8984_UDP%% info; |
558
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 } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
72 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
73 EOF |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
74 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
75 open OLDERR, ">&", \*STDERR; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
76 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
|
77 open my $stderr, '<', $t->testdir() . '/stderr' |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
78 or die "Can't open stderr file: $!"; |
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->run_daemon(\&stream_daemon); |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1235
diff
changeset
|
81 $t->run_daemon(\&syslog_daemon, port(8983), $t, 's_glob.log'); |
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1235
diff
changeset
|
82 $t->run_daemon(\&syslog_daemon, port(8984), $t, 's_stream.log'); |
558
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
83 |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
84 $t->waitforsocket('127.0.0.1:' . port(8081)); |
558
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
85 $t->waitforfile($t->testdir . '/s_glob.log'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
86 $t->waitforfile($t->testdir . '/s_stream.log'); |
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 $t->run(); |
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 open STDERR, ">&", \*OLDERR; |
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 ############################################################################### |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
93 |
1235
3fc6817cd84a
Tests: explicit peer port in stream tests now required.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
974
diff
changeset
|
94 stream('127.0.0.1:' . port(8080))->io('data'); |
558
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
95 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
96 # error_log levels |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
97 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
98 SKIP: { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
99 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
|
100 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
101 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
|
102 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
103 } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
104 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
105 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
|
106 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
|
107 isnt(lines($t, 'stderr', '[info]'), 0, 'stderr info in info'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
108 is(lines($t, 'stderr', '[debug]'), 0, 'stderr debug in info'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
109 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
110 # multiple error_log |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
111 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
112 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
|
113 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
|
114 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
|
115 'multiple error global'); |
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 # syslog |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
118 |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
119 parse_syslog_message('syslog', get_syslog('data2', '127.0.0.1:' . port(8082), |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1235
diff
changeset
|
120 port(8985))); |
558
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 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
|
123 'global syslog messages'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
124 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
|
125 'stream syslog messages'); |
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 # error_log context |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
128 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
129 SKIP: { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
130 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
|
131 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
132 my $msg = 'no live upstreams while connecting to upstream, ' |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
133 . 'client: 127.0.0.1, server: 127.0.0.1:' . port(8080) |
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
134 . ', upstream: "u"'; |
558
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
135 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
136 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
|
137 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
|
138 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
|
139 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
|
140 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
141 $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
|
142 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
143 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
|
144 |
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 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
147 ############################################################################### |
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 sub lines { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
150 my ($t, $file, $pattern) = @_; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
151 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
152 if ($file eq 'stderr') { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
153 return map { $_ =~ /\Q$pattern\E/ } (<$stderr>); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
154 } |
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 my $path = $t->testdir() . '/' . $file; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
157 open my $fh, '<', $path or return "$!"; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
158 my $value = map { $_ =~ /\Q$pattern\E/ } (<$fh>); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
159 close $fh; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
160 return $value; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
161 } |
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 sub levels { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
164 my ($t, $file) = @_; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
165 my %levels_hash; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
166 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
167 map { $levels_hash{$_}++; } ($t->read_file($file) =~ /(\[\w+\])/g); |
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 return \%levels_hash; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
170 } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
171 |
567
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
172 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
|
173 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
|
174 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
|
175 |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
176 eval { |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
177 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
|
178 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
|
179 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
|
180 $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
|
181 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
|
182 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
|
183 ); |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
184 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
|
185 }; |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
186 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
|
187 if ($@) { |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
188 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
|
189 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
|
190 } |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
191 |
816
77359b849cd5
Tests: stream package.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
567
diff
changeset
|
192 stream($peer)->io($data); |
567
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
193 $data = ''; |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
194 |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
195 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
|
196 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
|
197 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
|
198 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
|
199 $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
|
200 } |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
201 $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
|
202 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
|
203 } |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
204 |
558
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
205 sub parse_syslog_message { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
206 my ($desc, $line) = @_; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
207 |
567
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
208 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
|
209 |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
210 SKIP: { |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
211 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
|
212 |
558
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
213 my @months = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
214 'Sep', 'Oct', 'Nov', 'Dec'); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
215 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
216 my ($pri, $mon, $mday, $hour, $minute, $sec, $host, $tag, $msg) = |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
217 $line =~ /^<(\d{1,3})> # PRI |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
218 ([A-Z][a-z]{2})\s # mon |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
219 ([ \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
|
220 ([\S]*)\s # host |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
221 (\w{1,32}):\s # tag |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
222 (.*)/x; # MSG |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
223 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
224 my $sev = $pri & 0x07; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
225 my $fac = ($pri & 0x03f8) >> 3; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
226 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
227 ok(defined($pri), "$desc has PRI"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
228 ok($sev >= 0 && $sev <= 7, "$desc valid severity"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
229 ok($fac >= 0 && $fac < 24, "$desc valid facility"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
230 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
231 ok(defined($mon), "$desc has month"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
232 ok((grep $mon, @months), "$desc valid month"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
233 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
234 ok(defined($mday), "$desc has day"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
235 ok($mday <= 31, "$desc valid day"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
236 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
237 ok(defined($hour), "$desc has hour"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
238 ok($hour < 24, "$desc valid hour"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
239 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
240 ok(defined($minute), "$desc has minutes"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
241 ok($minute < 60, "$desc valid minutes"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
242 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
243 ok(defined($sec), "$desc has seconds"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
244 ok($sec < 60, "$desc valid seconds"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
245 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
246 ok(defined($host), "$desc has host"); |
1600
b61e820caa83
Tests: using Sys::Hostname to get hostname in a portable way.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1237
diff
changeset
|
247 is($host, lc(hostname()), "$desc valid host"); |
558
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
248 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
249 ok(defined($tag), "$desc has tag"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
250 like($tag, qr'\w+', "$desc valid tag"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
251 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
252 ok(length($msg) > 0, "$desc valid CONTENT"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
253 } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
254 |
567
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
255 } |
22bade4c7e12
Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents:
565
diff
changeset
|
256 |
558
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
257 ############################################################################### |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
258 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
259 sub syslog_daemon { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
260 my ($port, $t, $file) = @_; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
261 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
262 my $s = IO::Socket::INET->new( |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
263 Proto => 'udp', |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
264 LocalAddr => "127.0.0.1:$port" |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
265 ); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
266 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
267 open my $fh, '>', $t->testdir() . '/' . $file; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
268 select $fh; $| = 1; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
269 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
270 while (1) { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
271 my $buffer; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
272 $s->recv($buffer, 4096); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
273 print $fh $buffer . "\n"; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
274 } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
275 } |
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 sub stream_daemon { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
278 my $server = IO::Socket::INET->new( |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
279 Proto => 'tcp', |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
280 LocalHost => '127.0.0.1', |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
281 LocalPort => port(8081), |
558
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
282 Listen => 5, |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
283 Reuse => 1 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
284 ) |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
285 or die "Can't create listening socket: $!\n"; |
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 local $SIG{PIPE} = 'IGNORE'; |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
288 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
289 while (my $client = $server->accept()) { |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
290 $client->autoflush(1); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
291 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
292 log2c("(new connection $client)"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
293 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
294 $client->sysread(my $buffer, 65536) or next; |
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 log2i("$client $buffer"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
297 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
298 $buffer = $client->sockport(); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
299 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
300 log2o("$client $buffer"); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
301 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
302 $client->syswrite($buffer); |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
303 |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
304 close $client; |
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 } |
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 sub log2i { Test::Nginx::log_core('|| <<', @_); } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
309 sub log2o { Test::Nginx::log_core('|| >>', @_); } |
27740a2dd781
Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
310 sub log2c { Test::Nginx::log_core('||', @_); } |
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 ############################################################################### |