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);