annotate mail_error_log.t @ 1606:e4e0695552ed

Tests: fixed stream_proxy_ssl_conf_command.t. The stream_proxy_ssl_conf_command.t test used stream return module to return the response. Since this ignores actual request, but the perl test code used http_get(). This might result in the request being sent after the response is returned and the connection closed by the server, resulting in RST being generated and no response seen by the client at all. Fix is to use "stream(...)->read()" instead of http_get(), so no request is sent at all, eliminating possibility of RST being generated.
author Maxim Dounin <mdounin@mdounin.ru>
date Tue, 10 Nov 2020 05:03:29 +0300
parents b61e820caa83
children 74986ebee2fd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
2
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
3 # (C) Sergey Kandaurov
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
5
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
6 # Tests for nginx mail imap module, error_log directive.
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
7
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
8 ###############################################################################
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
9
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
10 use warnings;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
11 use strict;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
12
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
13 use Test::More;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
14
569
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
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;
569
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
17
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
18 BEGIN { use FindBin; chdir($FindBin::Bin); }
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
19
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
20 use lib 'lib';
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
21 use Test::Nginx;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
22 use Test::Nginx::IMAP;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
23
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
24 ###############################################################################
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
25
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
26 select STDERR; $| = 1;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
27 select STDOUT; $| = 1;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
28
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
29 plan(skip_all => 'win32') if $^O eq 'MSWin32';
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
30
976
a8b8dd6e8ae1 Tests: changed startup order in mail tests for consistency.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 970
diff changeset
31 my $t = Test::Nginx->new()->has(qw/mail imap http rewrite/);
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
32
569
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
33 $t->plan(30)->write_file_expand('nginx.conf', <<'EOF');
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
34
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
35 %%TEST_GLOBALS%%
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
36
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
37 error_log %%TESTDIR%%/e_glob.log info;
a1c93746570d Tests: mail 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: 1020
diff changeset
39 error_log syslog:server=127.0.0.1:%%PORT_8981_UDP%% info;
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
40
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
41 daemon off;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
42
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
43 events {
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
44 }
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
45
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
46 mail {
970
c227348453db Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
47 auth_http http://127.0.0.1:8080/mail/auth;
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
48
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
49 server {
970
c227348453db Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
50 listen 127.0.0.1:8143;
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
51 protocol imap;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
52
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
53 error_log %%TESTDIR%%/e_debug.log debug;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
54 error_log %%TESTDIR%%/e_info.log info;
1237
e4974af3fb12 Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1020
diff changeset
55 error_log syslog:server=127.0.0.1:%%PORT_8982_UDP%% info;
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
56 error_log stderr info;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
57 }
570
f7bc1f74970a Tests: avoid send errors in syslog tests with mail error_log.
Sergey Kandaurov <pluknet@nginx.com>
parents: 569
diff changeset
58
f7bc1f74970a Tests: avoid send errors in syslog tests with mail error_log.
Sergey Kandaurov <pluknet@nginx.com>
parents: 569
diff changeset
59 server {
970
c227348453db Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
60 listen 127.0.0.1:8145;
570
f7bc1f74970a Tests: avoid send errors in syslog tests with mail error_log.
Sergey Kandaurov <pluknet@nginx.com>
parents: 569
diff changeset
61 protocol imap;
f7bc1f74970a Tests: avoid send errors in syslog tests with mail error_log.
Sergey Kandaurov <pluknet@nginx.com>
parents: 569
diff changeset
62
1237
e4974af3fb12 Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1020
diff changeset
63 error_log syslog:server=127.0.0.1:%%PORT_8983_UDP%% info;
570
f7bc1f74970a Tests: avoid send errors in syslog tests with mail error_log.
Sergey Kandaurov <pluknet@nginx.com>
parents: 569
diff changeset
64 }
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
65 }
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
66
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
67 http {
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
68 %%TEST_GLOBALS_HTTP%%
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
69
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
70 server {
970
c227348453db Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
71 listen 127.0.0.1:8080;
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
72 server_name localhost;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
73
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
74 location = /mail/auth {
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
75 add_header Auth-Status OK;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
76 add_header Auth-Server 127.0.0.1;
970
c227348453db Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
77 add_header Auth-Port %%PORT_8144%%;
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
78 add_header Auth-Wait 1;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
79 return 204;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
80 }
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
81 }
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
82 }
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
83
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
84 EOF
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
85
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
86 open OLDERR, ">&", \*STDERR;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
87 open STDERR, '>', $t->testdir() . '/stderr' or die "Can't reopen STDERR: $!";
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
88 open my $stderr, '<', $t->testdir() . '/stderr'
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
89 or die "Can't open stderr file: $!";
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
90
976
a8b8dd6e8ae1 Tests: changed startup order in mail tests for consistency.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 970
diff changeset
91 $t->run_daemon(\&Test::Nginx::IMAP::imap_test_daemon);
1237
e4974af3fb12 Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1020
diff changeset
92 $t->run_daemon(\&syslog_daemon, port(8981), $t, 's_glob.log');
e4974af3fb12 Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1020
diff changeset
93 $t->run_daemon(\&syslog_daemon, port(8982), $t, 's_info.log');
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
94
976
a8b8dd6e8ae1 Tests: changed startup order in mail tests for consistency.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 970
diff changeset
95 $t->waitforsocket('127.0.0.1:' . port(8144));
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
96 $t->waitforfile($t->testdir . '/s_glob.log');
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
97 $t->waitforfile($t->testdir . '/s_info.log');
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
98
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
99 $t->run();
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
100
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
101 open STDERR, ">&", \*OLDERR;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
102
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
103 ###############################################################################
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
104
970
c227348453db Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
105 my $s = Test::Nginx::IMAP->new();
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
106 $s->ok('greeting');
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
107
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
108 # error_log levels
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
109
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
110 SKIP: {
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
111 skip "no --with-debug", 1 unless $t->has_module('--with-debug');
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
112
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
113 isnt(lines($t, 'e_debug.log', '[debug]'), 0, 'file debug in debug');
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
114
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
115 }
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
116
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
117 isnt(lines($t, 'e_info.log', '[info]'), 0, 'file info in info');
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
118 is(lines($t, 'e_info.log', '[debug]'), 0, 'file debug in info');
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
119 isnt(lines($t, 'stderr', '[info]'), 0, 'stderr info in info');
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
120 is(lines($t, 'stderr', '[debug]'), 0, 'stderr debug in info');
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
121
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
122 # multiple error_log
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
123
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
124 like($t->read_file('e_glob.log'), qr!nginx/[.0-9]+!, 'error global');
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
125 like($t->read_file('e_glob2.log'), qr!nginx/[.0-9]+!, 'error global 2');
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
126 is_deeply(levels($t, 'e_glob.log'), levels($t, 'e_glob2.log'),
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
127 'multiple error global');
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
128
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
129 # syslog
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
130
970
c227348453db Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
131 parse_syslog_message('syslog', get_syslog());
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
132
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
133 is_deeply(levels($t, 's_glob.log'), levels($t, 'e_glob.log'),
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
134 'global syslog messages');
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
135 is_deeply(levels($t, 's_info.log'), levels($t, 'e_info.log'),
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
136 'mail syslog messages');
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
137
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
138 ###############################################################################
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
139
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
140 sub lines {
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
141 my ($t, $file, $pattern) = @_;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
142
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
143 if ($file eq 'stderr') {
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
144 return map { $_ =~ /\Q$pattern\E/ } (<$stderr>);
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
145 }
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
146
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
147 my $path = $t->testdir() . '/' . $file;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
148 open my $fh, '<', $path or return "$!";
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
149 my $value = map { $_ =~ /\Q$pattern\E/ } (<$fh>);
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
150 close $fh;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
151 return $value;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
152 }
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
153
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
154 sub levels {
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
155 my ($t, $file) = @_;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
156 my %levels_hash;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
157
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
158 map { $levels_hash{$_}++; } ($t->read_file($file) =~ /(\[\w+\])/g);
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
159
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
160 return \%levels_hash;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
161 }
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
162
569
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
163 sub get_syslog {
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
164 my $data = '';
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
165 my ($s);
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
166
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
167 eval {
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
168 local $SIG{ALRM} = sub { die "timeout\n" };
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
169 local $SIG{PIPE} = sub { die "sigpipe\n" };
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
170 alarm(1);
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
171 $s = IO::Socket::INET->new(
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
172 Proto => 'udp',
1237
e4974af3fb12 Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1020
diff changeset
173 LocalAddr => '127.0.0.1:' . port(8983)
569
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
174 );
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
175 alarm(0);
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
176 };
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
177 alarm(0);
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
178 if ($@) {
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
179 log_in("died: $@");
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
180 return undef;
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
181 }
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
182
970
c227348453db Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
183 Test::Nginx::IMAP->new(PeerAddr => '127.0.0.1:' . port(8145))->read();
569
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
184
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
185 IO::Select->new($s)->can_read(1.5);
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
186 while (IO::Select->new($s)->can_read(0.1)) {
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
187 my $buffer;
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
188 sysread($s, $buffer, 4096);
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
189 $data .= $buffer;
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
190 }
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
191 $s->close();
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
192 return $data;
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
193 }
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
194
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
195 sub parse_syslog_message {
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
196 my ($desc, $line) = @_;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
197
569
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
198 ok($line, $desc);
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
199
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
200 SKIP: {
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
201 skip "$desc timeout", 18 unless $line;
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
202
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
203 my @months = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug',
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
204 'Sep', 'Oct', 'Nov', 'Dec');
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
205
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
206 my ($pri, $mon, $mday, $hour, $minute, $sec, $host, $tag, $msg) =
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
207 $line =~ /^<(\d{1,3})> # PRI
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
208 ([A-Z][a-z]{2})\s # mon
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
209 ([ \d]\d)\s(\d{2}):(\d{2}):(\d{2})\s # date
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
210 ([\S]*)\s # host
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
211 (\w{1,32}):\s # tag
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
212 (.*)/x; # MSG
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
213
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
214 my $sev = $pri & 0x07;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
215 my $fac = ($pri & 0x03f8) >> 3;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
216
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
217 ok(defined($pri), "$desc has PRI");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
218 ok($sev >= 0 && $sev <= 7, "$desc valid severity");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
219 ok($fac >= 0 && $fac < 24, "$desc valid facility");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
220
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
221 ok(defined($mon), "$desc has month");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
222 ok((grep $mon, @months), "$desc valid month");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
223
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
224 ok(defined($mday), "$desc has day");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
225 ok($mday <= 31, "$desc valid day");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
226
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
227 ok(defined($hour), "$desc has hour");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
228 ok($hour < 24, "$desc valid hour");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
229
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
230 ok(defined($minute), "$desc has minutes");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
231 ok($minute < 60, "$desc valid minutes");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
232
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
233 ok(defined($sec), "$desc has seconds");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
234 ok($sec < 60, "$desc valid seconds");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
235
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
236 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
237 is($host, lc(hostname()), "$desc valid host");
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
238
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
239 ok(defined($tag), "$desc has tag");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
240 like($tag, qr'\w+', "$desc valid tag");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
241
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
242 ok(length($msg) > 0, "$desc valid CONTENT");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
243 }
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
244
569
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
245 }
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
246
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
247 ###############################################################################
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
248
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
249 sub syslog_daemon {
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
250 my ($port, $t, $file) = @_;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
251
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
252 my $s = IO::Socket::INET->new(
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
253 Proto => 'udp',
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
254 LocalAddr => "127.0.0.1:$port"
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
255 );
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
256
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
257 open my $fh, '>', $t->testdir() . '/' . $file;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
258 select $fh; $| = 1;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
259
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
260 while (1) {
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
261 my $buffer;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
262 $s->recv($buffer, 4096);
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
263 print $fh $buffer . "\n";
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
264 }
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
265 }
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
266
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
267 ###############################################################################