Mercurial > hg > nginx-tests
comparison http_header_buffers.t @ 1135:3f875d5be63f
Tests for large_client_header_buffers.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Mon, 20 Feb 2017 18:25:14 +0300 |
parents | |
children | 56d5efd16af6 |
comparison
equal
deleted
inserted
replaced
1134:d77c331affff | 1135:3f875d5be63f |
---|---|
1 #!/usr/bin/perl | |
2 | |
3 # (C) Maxim Dounin | |
4 # (C) Nginx, Inc. | |
5 | |
6 # Tests for large_client_header_buffers directive. | |
7 | |
8 ############################################################################### | |
9 | |
10 use warnings; | |
11 use strict; | |
12 | |
13 use Test::More; | |
14 | |
15 use Socket qw/ CRLF /; | |
16 | |
17 BEGIN { use FindBin; chdir($FindBin::Bin); } | |
18 | |
19 use lib 'lib'; | |
20 use Test::Nginx; | |
21 | |
22 ############################################################################### | |
23 | |
24 select STDERR; $| = 1; | |
25 select STDOUT; $| = 1; | |
26 | |
27 my $t = Test::Nginx->new()->has(qw/http rewrite/)->plan(2) | |
28 ->write_file_expand('nginx.conf', <<'EOF'); | |
29 | |
30 %%TEST_GLOBALS%% | |
31 | |
32 daemon off; | |
33 | |
34 events { | |
35 } | |
36 | |
37 http { | |
38 %%TEST_GLOBALS_HTTP%% | |
39 | |
40 connection_pool_size 64; | |
41 client_header_buffer_size 64; | |
42 | |
43 server { | |
44 listen 127.0.0.1:8080; | |
45 server_name five; | |
46 | |
47 large_client_header_buffers 5 128; | |
48 | |
49 return 204; | |
50 } | |
51 | |
52 server { | |
53 listen 127.0.0.1:8080; | |
54 server_name ten; | |
55 | |
56 large_client_header_buffers 10 128; | |
57 | |
58 return 204; | |
59 } | |
60 | |
61 server { | |
62 listen 127.0.0.1:8080; | |
63 server_name one; | |
64 | |
65 large_client_header_buffers 1 128; | |
66 | |
67 return 204; | |
68 } | |
69 } | |
70 | |
71 EOF | |
72 | |
73 $t->run(); | |
74 | |
75 ############################################################################### | |
76 | |
77 TODO: { | |
78 todo_skip 'overflow', 2 unless $ENV{TEST_NGINX_UNSAFE}; | |
79 | |
80 # if hc->busy is allocated before the virtual server is selected, | |
81 # and then additional buffers are allocated in a virtual server with larger | |
82 # number of buffers configured, hc->busy will be overflowed | |
83 | |
84 like(http( | |
85 "GET / HTTP/1.0" . CRLF . | |
86 "X-Foo: " . ("1234567890" x 10) . CRLF . | |
87 "Host: ten" . CRLF . | |
88 "X-Foo: " . ("1234567890" x 10) . CRLF . | |
89 "X-Foo: " . ("1234567890" x 10) . CRLF . | |
90 "X-Foo: " . ("1234567890" x 10) . CRLF . | |
91 "X-Foo: " . ("1234567890" x 10) . CRLF . | |
92 "X-Foo: " . ("1234567890" x 10) . CRLF . CRLF | |
93 ), qr/204|400/, 'additional buffers in virtual server'); | |
94 | |
95 # for pipelined requests large header buffers are saved to hc->free; | |
96 # it sized for number of buffers in the current virtual server, but | |
97 # saves previously allocated buffers, and there may be more buffers if | |
98 # allocatad before the virtual server was selected | |
99 | |
100 like(http( | |
101 "GET / HTTP/1.1" . CRLF . | |
102 "X-Foo: " . ("1234567890" x 10) . CRLF . | |
103 "X-Foo: " . ("1234567890" x 10) . CRLF . | |
104 "X-Foo: " . ("1234567890" x 10) . CRLF . | |
105 "X-Foo: " . ("1234567890" x 10) . CRLF . | |
106 "X-Foo: " . ("1234567890" x 10) . CRLF . | |
107 "Host: one" . CRLF . CRLF . | |
108 "GET / HTTP/1.1" . CRLF . | |
109 "Host: one" . CRLF . | |
110 "Connection: close" . CRLF . CRLF | |
111 ), qr/204/, 'pipelined with too many buffers'); | |
112 | |
113 } | |
114 | |
115 ############################################################################### |