annotate mail_max_errors.t @ 1728:6d5ecf445e57

Tests: added HTTP/2 test with big request body. Notably, it is useful with body buffering in filters, in which case the stream window is flow controlled based on the preread buffer.
author Sergey Kandaurov <pluknet@nginx.com>
date Sat, 04 Sep 2021 14:50:02 +0300
parents 41b213d611f5
children 2a0a6035a1af
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1687
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4 # (C) Nginx, Inc.
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6 # Tests for mail max_errors.
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8 ###############################################################################
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use warnings;
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11 use strict;
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13 use Test::More;
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14 use Socket qw/ CRLF /;
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16 BEGIN { use FindBin; chdir($FindBin::Bin); }
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18 use lib 'lib';
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 use Test::Nginx;
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20 use Test::Nginx::IMAP;
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21 use Test::Nginx::POP3;
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22 use Test::Nginx::SMTP;
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
24 ###############################################################################
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26 select STDERR; $| = 1;
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27 select STDOUT; $| = 1;
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
28
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
29 local $SIG{PIPE} = 'IGNORE';
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
30
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
31 my $t = Test::Nginx->new()->has(qw/mail imap pop3 smtp/)
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
32 ->write_file_expand('nginx.conf', <<'EOF');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
33
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34 %%TEST_GLOBALS%%
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
36 daemon off;
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38 events {
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
39 }
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41 mail {
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
42 auth_http http://127.0.0.1:8080; # unused
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
43
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
44 max_errors 2;
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
45
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
46 server {
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
47 listen 127.0.0.1:8143;
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
48 protocol imap;
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
49 }
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
50
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
51 server {
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
52 listen 127.0.0.1:8110;
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
53 protocol pop3;
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
54 }
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
55
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
56 server {
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
57 listen 127.0.0.1:8025;
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
58 protocol smtp;
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
59 }
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60 }
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
61
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
62 EOF
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
63
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
64 $t->try_run('no max_errors')->plan(18);
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
65
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
66 ###############################################################################
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
67
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
68 # imap
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
69
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
70 my $s = Test::Nginx::IMAP->new();
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
71 $s->read();
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
72
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
73 $s->send('a01 FOO');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
74 $s->check(qr/^a01 BAD/, 'imap first error');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
75 $s->send('a02 BAR');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
76 $s->check(qr/^a02 BAD/, 'imap second error');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
77 $s->send('a03 BAZZ');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
78 $s->check(qr/^$/, 'imap max errors');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
79
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
80 $s = Test::Nginx::IMAP->new();
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
81 $s->read();
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
82
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
83 $s->send('a01 FOO' . CRLF . 'a02 BAR' . CRLF . 'a03 BAZZ');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
84 $s->check(qr/^a01 BAD/, 'imap pipelined first error');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
85 $s->check(qr/^a02 BAD/, 'imap pipelined second error');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
86 $s->check(qr/^$/, 'imap pipelined max errors');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
87
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
88 # pop3
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
89
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
90 $s = Test::Nginx::POP3->new();
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
91 $s->read();
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
92
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
93 $s->send('FOO');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
94 $s->check(qr/^-ERR/, 'pop3 first error');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
95 $s->send('BAR');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
96 $s->check(qr/^-ERR/, 'pop3 second error');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
97 $s->send('BAZZ');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
98 $s->check(qr/^$/, 'pop3 max errors');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
99
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
100 $s = Test::Nginx::POP3->new();
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
101 $s->read();
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
102
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
103 $s->send('FOO' . CRLF . 'BAR' . CRLF . 'BAZZ');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
104 $s->check(qr/^-ERR/, 'pop3 pipelined first error');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
105 $s->check(qr/^-ERR/, 'pop3 pipelined second error');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
106 $s->check(qr/^$/, 'pop3 pipelined max errors');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
107
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
108 # smtp
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
109
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
110 $s = Test::Nginx::SMTP->new();
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
111 $s->read();
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
112
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
113 $s->send('FOO');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
114 $s->check(qr/^5.. /, 'smtp first error');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
115 $s->send('BAR');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
116 $s->check(qr/^5.. /, 'smtp second error');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
117 $s->send('BAZZ');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
118 $s->check(qr/^$/, 'smtp max errors');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
119
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
120 $s = Test::Nginx::SMTP->new();
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
121 $s->read();
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
122
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
123 $s->send('FOO' . CRLF . 'BAR' . CRLF . 'BAZZ');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
124 $s->check(qr/^5.. /, 'smtp pipelined first error');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
125 $s->check(qr/^5.. /, 'smtp pipelined second error');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
126 $s->check(qr/^$/, 'smtp pipelined max errors');
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
127
41b213d611f5 Tests: mail max_errors tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
128 ###############################################################################