annotate mail_error_log.t @ 1836:74cffa9d4c43

Tests: enabled session reuse via TLS session tickets. This fixes tests with TLSv1.3 enabled when using BoringSSL, since for TLSv1.3 it only supports session reuse via TLS session tickets, and not server-side session cache.
author Maxim Dounin <mdounin@mdounin.ru>
date Thu, 23 Mar 2023 19:50:02 +0300
parents 74986ebee2fd
children ce4a06d72256
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 {
1679
74986ebee2fd Tests: added proxy_timeout in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1600
diff changeset
47 proxy_timeout 15s;
970
c227348453db Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
48 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
49
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
50 server {
970
c227348453db Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
51 listen 127.0.0.1:8143;
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
52 protocol imap;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
53
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
54 error_log %%TESTDIR%%/e_debug.log debug;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
55 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
56 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
57 error_log stderr info;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
58 }
570
f7bc1f74970a Tests: avoid send errors in syslog tests with mail error_log.
Sergey Kandaurov <pluknet@nginx.com>
parents: 569
diff changeset
59
f7bc1f74970a Tests: avoid send errors in syslog tests with mail error_log.
Sergey Kandaurov <pluknet@nginx.com>
parents: 569
diff changeset
60 server {
970
c227348453db Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
61 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
62 protocol imap;
f7bc1f74970a Tests: avoid send errors in syslog tests with mail error_log.
Sergey Kandaurov <pluknet@nginx.com>
parents: 569
diff changeset
63
1237
e4974af3fb12 Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1020
diff changeset
64 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
65 }
564
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
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
68 http {
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
69 %%TEST_GLOBALS_HTTP%%
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
70
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
71 server {
970
c227348453db Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
72 listen 127.0.0.1:8080;
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
73 server_name localhost;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
74
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
75 location = /mail/auth {
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
76 add_header Auth-Status OK;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
77 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
78 add_header Auth-Port %%PORT_8144%%;
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
79 add_header Auth-Wait 1;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
80 return 204;
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
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
85 EOF
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
86
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
87 open OLDERR, ">&", \*STDERR;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
88 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
89 open my $stderr, '<', $t->testdir() . '/stderr'
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
90 or die "Can't open stderr file: $!";
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
91
976
a8b8dd6e8ae1 Tests: changed startup order in mail tests for consistency.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 970
diff changeset
92 $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
93 $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
94 $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
95
976
a8b8dd6e8ae1 Tests: changed startup order in mail tests for consistency.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 970
diff changeset
96 $t->waitforsocket('127.0.0.1:' . port(8144));
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
97 $t->waitforfile($t->testdir . '/s_glob.log');
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
98 $t->waitforfile($t->testdir . '/s_info.log');
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
99
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
100 $t->run();
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
101
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
102 open STDERR, ">&", \*OLDERR;
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 ###############################################################################
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
105
970
c227348453db Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
106 my $s = Test::Nginx::IMAP->new();
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
107 $s->ok('greeting');
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
108
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
109 # error_log levels
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
110
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
111 SKIP: {
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
112 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
113
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
114 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
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
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
118 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
119 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
120 isnt(lines($t, 'stderr', '[info]'), 0, 'stderr info in info');
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
121 is(lines($t, 'stderr', '[debug]'), 0, 'stderr debug in info');
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
122
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
123 # multiple error_log
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
124
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
125 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
126 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
127 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
128 'multiple error global');
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
129
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
130 # syslog
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
131
970
c227348453db Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
132 parse_syslog_message('syslog', get_syslog());
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
133
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
134 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
135 'global syslog messages');
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
136 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
137 'mail syslog messages');
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
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
141 sub lines {
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
142 my ($t, $file, $pattern) = @_;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
143
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
144 if ($file eq 'stderr') {
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
145 return map { $_ =~ /\Q$pattern\E/ } (<$stderr>);
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
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
148 my $path = $t->testdir() . '/' . $file;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
149 open my $fh, '<', $path or return "$!";
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
150 my $value = map { $_ =~ /\Q$pattern\E/ } (<$fh>);
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
151 close $fh;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
152 return $value;
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
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
155 sub levels {
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
156 my ($t, $file) = @_;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
157 my %levels_hash;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
158
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
159 map { $levels_hash{$_}++; } ($t->read_file($file) =~ /(\[\w+\])/g);
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
160
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
161 return \%levels_hash;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
162 }
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
163
569
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
164 sub get_syslog {
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
165 my $data = '';
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
166 my ($s);
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
167
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
168 eval {
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
169 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
170 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
171 alarm(1);
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
172 $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
173 Proto => 'udp',
1237
e4974af3fb12 Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1020
diff changeset
174 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
175 );
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
176 alarm(0);
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
177 };
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
178 alarm(0);
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
179 if ($@) {
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
180 log_in("died: $@");
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
181 return undef;
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
182 }
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
183
970
c227348453db Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
184 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
185
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
186 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
187 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
188 my $buffer;
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
189 sysread($s, $buffer, 4096);
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
190 $data .= $buffer;
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
191 }
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
192 $s->close();
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
193 return $data;
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
194 }
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
195
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
196 sub parse_syslog_message {
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
197 my ($desc, $line) = @_;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
198
569
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
199 ok($line, $desc);
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
200
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
201 SKIP: {
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
202 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
203
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
204 my @months = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug',
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
205 'Sep', 'Oct', 'Nov', 'Dec');
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
206
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
207 my ($pri, $mon, $mday, $hour, $minute, $sec, $host, $tag, $msg) =
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
208 $line =~ /^<(\d{1,3})> # PRI
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
209 ([A-Z][a-z]{2})\s # mon
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
210 ([ \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
211 ([\S]*)\s # host
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
212 (\w{1,32}):\s # tag
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
213 (.*)/x; # MSG
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
214
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
215 my $sev = $pri & 0x07;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
216 my $fac = ($pri & 0x03f8) >> 3;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
217
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
218 ok(defined($pri), "$desc has PRI");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
219 ok($sev >= 0 && $sev <= 7, "$desc valid severity");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
220 ok($fac >= 0 && $fac < 24, "$desc valid facility");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
221
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
222 ok(defined($mon), "$desc has month");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
223 ok((grep $mon, @months), "$desc valid month");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
224
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
225 ok(defined($mday), "$desc has day");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
226 ok($mday <= 31, "$desc valid day");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
227
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
228 ok(defined($hour), "$desc has hour");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
229 ok($hour < 24, "$desc valid hour");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
230
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
231 ok(defined($minute), "$desc has minutes");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
232 ok($minute < 60, "$desc valid minutes");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
233
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
234 ok(defined($sec), "$desc has seconds");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
235 ok($sec < 60, "$desc valid seconds");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
236
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
237 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
238 is($host, lc(hostname()), "$desc valid host");
564
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
239
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
240 ok(defined($tag), "$desc has tag");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
241 like($tag, qr'\w+', "$desc valid tag");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
242
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
243 ok(length($msg) > 0, "$desc valid CONTENT");
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
244 }
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
245
569
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
246 }
adbb9b5108aa Tests: fixed mail error_log test timeouts similar to 22bade4c7e12.
Sergey Kandaurov <pluknet@nginx.com>
parents: 564
diff changeset
247
564
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
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
250 sub syslog_daemon {
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
251 my ($port, $t, $file) = @_;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
252
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
253 my $s = IO::Socket::INET->new(
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
254 Proto => 'udp',
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
255 LocalAddr => "127.0.0.1:$port"
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
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
258 open my $fh, '>', $t->testdir() . '/' . $file;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
259 select $fh; $| = 1;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
260
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
261 while (1) {
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
262 my $buffer;
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
263 $s->recv($buffer, 4096);
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
264 print $fh $buffer . "\n";
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
a1c93746570d Tests: mail error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
268 ###############################################################################