Mercurial > hg > nginx-tests
comparison mail_error_log.t @ 970:c227348453db
Tests: simplified parallel modifications in mail tests.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Fri, 08 Jul 2016 02:21:16 +0300 |
parents | e9064d691790 |
children | a8b8dd6e8ae1 |
comparison
equal
deleted
inserted
replaced
969:1edb092149e2 | 970:c227348453db |
---|---|
26 select STDOUT; $| = 1; | 26 select STDOUT; $| = 1; |
27 | 27 |
28 plan(skip_all => 'win32') if $^O eq 'MSWin32'; | 28 plan(skip_all => 'win32') if $^O eq 'MSWin32'; |
29 | 29 |
30 my $t = Test::Nginx->new()->has(qw/mail imap http rewrite/) | 30 my $t = Test::Nginx->new()->has(qw/mail imap http rewrite/) |
31 ->run_daemon(\&Test::Nginx::IMAP::imap_test_daemon, port(4)); | 31 ->run_daemon(\&Test::Nginx::IMAP::imap_test_daemon, port(8144)); |
32 | 32 |
33 plan(skip_all => 'no error_log') unless $t->has_version('1.9.0'); | 33 plan(skip_all => 'no error_log') unless $t->has_version('1.9.0'); |
34 | 34 |
35 $t->plan(30)->write_file_expand('nginx.conf', <<'EOF'); | 35 $t->plan(30)->write_file_expand('nginx.conf', <<'EOF'); |
36 | 36 |
37 %%TEST_GLOBALS%% | 37 %%TEST_GLOBALS%% |
38 | 38 |
39 error_log %%TESTDIR%%/e_glob.log info; | 39 error_log %%TESTDIR%%/e_glob.log info; |
40 error_log %%TESTDIR%%/e_glob2.log info; | 40 error_log %%TESTDIR%%/e_glob2.log info; |
41 error_log syslog:server=127.0.0.1:%%PORT_1_UDP%% info; | 41 error_log syslog:server=127.0.0.1:%%PORT_8081_UDP%% info; |
42 | 42 |
43 daemon off; | 43 daemon off; |
44 | 44 |
45 events { | 45 events { |
46 } | 46 } |
47 | 47 |
48 mail { | 48 mail { |
49 auth_http http://127.0.0.1:%%PORT_0%%/mail/auth; | 49 auth_http http://127.0.0.1:8080/mail/auth; |
50 | 50 |
51 server { | 51 server { |
52 listen 127.0.0.1:%%PORT_3%%; | 52 listen 127.0.0.1:8143; |
53 protocol imap; | 53 protocol imap; |
54 | 54 |
55 error_log %%TESTDIR%%/e_debug.log debug; | 55 error_log %%TESTDIR%%/e_debug.log debug; |
56 error_log %%TESTDIR%%/e_info.log info; | 56 error_log %%TESTDIR%%/e_info.log info; |
57 error_log syslog:server=127.0.0.1:%%PORT_2_UDP%% info; | 57 error_log syslog:server=127.0.0.1:%%PORT_8082_UDP%% info; |
58 error_log stderr info; | 58 error_log stderr info; |
59 } | 59 } |
60 | 60 |
61 server { | 61 server { |
62 listen 127.0.0.1:%%PORT_5%%; | 62 listen 127.0.0.1:8145; |
63 protocol imap; | 63 protocol imap; |
64 | 64 |
65 error_log syslog:server=127.0.0.1:%%PORT_6_UDP%% info; | 65 error_log syslog:server=127.0.0.1:%%PORT_8083_UDP%% info; |
66 } | 66 } |
67 } | 67 } |
68 | 68 |
69 http { | 69 http { |
70 %%TEST_GLOBALS_HTTP%% | 70 %%TEST_GLOBALS_HTTP%% |
71 | 71 |
72 server { | 72 server { |
73 listen 127.0.0.1:%%PORT_0%%; | 73 listen 127.0.0.1:8080; |
74 server_name localhost; | 74 server_name localhost; |
75 | 75 |
76 location = /mail/auth { | 76 location = /mail/auth { |
77 add_header Auth-Status OK; | 77 add_header Auth-Status OK; |
78 add_header Auth-Server 127.0.0.1; | 78 add_header Auth-Server 127.0.0.1; |
79 add_header Auth-Port %%PORT_4%%; | 79 add_header Auth-Port %%PORT_8144%%; |
80 add_header Auth-Wait 1; | 80 add_header Auth-Wait 1; |
81 return 204; | 81 return 204; |
82 } | 82 } |
83 } | 83 } |
84 } | 84 } |
88 open OLDERR, ">&", \*STDERR; | 88 open OLDERR, ">&", \*STDERR; |
89 open STDERR, '>', $t->testdir() . '/stderr' or die "Can't reopen STDERR: $!"; | 89 open STDERR, '>', $t->testdir() . '/stderr' or die "Can't reopen STDERR: $!"; |
90 open my $stderr, '<', $t->testdir() . '/stderr' | 90 open my $stderr, '<', $t->testdir() . '/stderr' |
91 or die "Can't open stderr file: $!"; | 91 or die "Can't open stderr file: $!"; |
92 | 92 |
93 $t->run_daemon(\&syslog_daemon, port(1), $t, 's_glob.log'); | 93 $t->run_daemon(\&syslog_daemon, port(8081), $t, 's_glob.log'); |
94 $t->run_daemon(\&syslog_daemon, port(2), $t, 's_info.log'); | 94 $t->run_daemon(\&syslog_daemon, port(8082), $t, 's_info.log'); |
95 | 95 |
96 $t->waitforfile($t->testdir . '/s_glob.log'); | 96 $t->waitforfile($t->testdir . '/s_glob.log'); |
97 $t->waitforfile($t->testdir . '/s_info.log'); | 97 $t->waitforfile($t->testdir . '/s_info.log'); |
98 | 98 |
99 $t->run(); | 99 $t->run(); |
100 | 100 |
101 open STDERR, ">&", \*OLDERR; | 101 open STDERR, ">&", \*OLDERR; |
102 | 102 |
103 ############################################################################### | 103 ############################################################################### |
104 | 104 |
105 my $s = Test::Nginx::IMAP->new(PeerAddr => '127.0.0.1:' . port(3)); | 105 my $s = Test::Nginx::IMAP->new(); |
106 $s->ok('greeting'); | 106 $s->ok('greeting'); |
107 | 107 |
108 # error_log levels | 108 # error_log levels |
109 | 109 |
110 SKIP: { | 110 SKIP: { |
126 is_deeply(levels($t, 'e_glob.log'), levels($t, 'e_glob2.log'), | 126 is_deeply(levels($t, 'e_glob.log'), levels($t, 'e_glob2.log'), |
127 'multiple error global'); | 127 'multiple error global'); |
128 | 128 |
129 # syslog | 129 # syslog |
130 | 130 |
131 parse_syslog_message('syslog', get_syslog(port(6))); | 131 parse_syslog_message('syslog', get_syslog()); |
132 | 132 |
133 is_deeply(levels($t, 's_glob.log'), levels($t, 'e_glob.log'), | 133 is_deeply(levels($t, 's_glob.log'), levels($t, 'e_glob.log'), |
134 'global syslog messages'); | 134 'global syslog messages'); |
135 is_deeply(levels($t, 's_info.log'), levels($t, 'e_info.log'), | 135 is_deeply(levels($t, 's_info.log'), levels($t, 'e_info.log'), |
136 'mail syslog messages'); | 136 'mail syslog messages'); |
159 | 159 |
160 return \%levels_hash; | 160 return \%levels_hash; |
161 } | 161 } |
162 | 162 |
163 sub get_syslog { | 163 sub get_syslog { |
164 my ($port) = @_; | |
165 my $data = ''; | 164 my $data = ''; |
166 my ($s); | 165 my ($s); |
167 | 166 |
168 eval { | 167 eval { |
169 local $SIG{ALRM} = sub { die "timeout\n" }; | 168 local $SIG{ALRM} = sub { die "timeout\n" }; |
170 local $SIG{PIPE} = sub { die "sigpipe\n" }; | 169 local $SIG{PIPE} = sub { die "sigpipe\n" }; |
171 alarm(1); | 170 alarm(1); |
172 $s = IO::Socket::INET->new( | 171 $s = IO::Socket::INET->new( |
173 Proto => 'udp', | 172 Proto => 'udp', |
174 LocalAddr => "127.0.0.1:$port" | 173 LocalAddr => '127.0.0.1:' . port(8083) |
175 ); | 174 ); |
176 alarm(0); | 175 alarm(0); |
177 }; | 176 }; |
178 alarm(0); | 177 alarm(0); |
179 if ($@) { | 178 if ($@) { |
180 log_in("died: $@"); | 179 log_in("died: $@"); |
181 return undef; | 180 return undef; |
182 } | 181 } |
183 | 182 |
184 Test::Nginx::IMAP->new(PeerAddr => '127.0.0.1:' . port(5))->read(); | 183 Test::Nginx::IMAP->new(PeerAddr => '127.0.0.1:' . port(8145))->read(); |
185 | 184 |
186 IO::Select->new($s)->can_read(1.5); | 185 IO::Select->new($s)->can_read(1.5); |
187 while (IO::Select->new($s)->can_read(0.1)) { | 186 while (IO::Select->new($s)->can_read(0.1)) { |
188 my $buffer; | 187 my $buffer; |
189 sysread($s, $buffer, 4096); | 188 sysread($s, $buffer, 4096); |