Mercurial > hg > nginx-tests
annotate fastcgi_header_params.t @ 836:a9c4cebcfe69
Tests: adjusted http resolver test with resend.
Don't bother with socket error to force resolver resend. Nginx doesn't handle
well ECONNREFUSED send() error, which results in "500 Internal Server Error".
It may deserve a separate test, though.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Fri, 29 Jan 2016 00:40:05 +0300 |
parents | a9569f57da98 |
children | e9064d691790 |
rev | line source |
---|---|
153
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
2 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
3 # (C) Maxim Dounin |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
4 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
5 # Test for fastcgi header params. |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
6 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
7 ############################################################################### |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
8 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
9 use warnings; |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
10 use strict; |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
11 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
12 use Test::More; |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
13 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
14 BEGIN { use FindBin; chdir($FindBin::Bin); } |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
15 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
16 use lib 'lib'; |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
17 use Test::Nginx; |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
18 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
19 ############################################################################### |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
20 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
21 select STDERR; $| = 1; |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
22 select STDOUT; $| = 1; |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
23 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
24 eval { require FCGI; }; |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
25 plan(skip_all => 'FCGI not installed') if $@; |
221
8d2c6358d830
Tests: avoid using FCGI on win32.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
26 plan(skip_all => 'win32') if $^O eq 'MSWin32'; |
153
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
27 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
28 my $t = Test::Nginx->new()->has(qw/http fastcgi/)->plan(1) |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
29 ->write_file_expand('nginx.conf', <<'EOF'); |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
30 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
31 %%TEST_GLOBALS%% |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
32 |
249
6a0d934950bc
Tests: remove extra spaces in "daemon off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
241
diff
changeset
|
33 daemon off; |
153
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
34 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
35 events { |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
36 } |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
37 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
38 http { |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
39 %%TEST_GLOBALS_HTTP%% |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
40 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
41 server { |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
42 listen 127.0.0.1:8080; |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
43 server_name localhost; |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
44 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
45 location / { |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
46 fastcgi_pass 127.0.0.1:8081; |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
47 fastcgi_param HTTP_X_BLAH "blah"; |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
48 } |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
49 } |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
50 } |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
51 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
52 EOF |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
53 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
54 $t->run_daemon(\&fastcgi_daemon); |
295
6fe0459b6668
Tests: eliminate startup races in proxy and fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
249
diff
changeset
|
55 $t->run()->waitforsocket('127.0.0.1:8081'); |
153
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
56 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
57 ############################################################################### |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
58 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
59 like(http_get_headers('/'), qr/SEE-THIS/, |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
60 'fastcgi request with many ignored headers'); |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
61 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
62 ############################################################################### |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
63 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
64 sub http_get_headers { |
589
a9569f57da98
Tests: whitespaces fix.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
295
diff
changeset
|
65 my ($url, %extra) = @_; |
a9569f57da98
Tests: whitespaces fix.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
295
diff
changeset
|
66 return http(<<EOF, %extra); |
153
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
67 GET $url HTTP/1.0 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
68 Host: localhost |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
69 X-Blah: ignored header |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
70 X-Blah: ignored header |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
71 X-Blah: ignored header |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
72 X-Blah: ignored header |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
73 X-Blah: ignored header |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
74 X-Blah: ignored header |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
75 X-Blah: ignored header |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
76 X-Blah: ignored header |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
77 X-Blah: ignored header |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
78 X-Blah: ignored header |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
79 X-Blah: ignored header |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
80 X-Blah: ignored header |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
81 X-Blah: ignored header |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
82 X-Blah: ignored header |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
83 X-Blah: ignored header |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
84 X-Blah: ignored header |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
85 X-Blah: ignored header |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
86 X-Blah: ignored header |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
87 X-Blah: ignored header |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
88 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
89 EOF |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
90 } |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
91 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
92 ############################################################################### |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
93 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
94 sub fastcgi_daemon { |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
95 my $socket = FCGI::OpenSocket('127.0.0.1:8081', 5); |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
96 my $request = FCGI::Request(\*STDIN, \*STDOUT, \*STDERR, \%ENV, |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
97 $socket); |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
98 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
99 my $count; |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
100 while( $request->Accept() >= 0 ) { |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
101 $count++; |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
102 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
103 print <<EOF; |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
104 Location: http://127.0.0.1:8080/redirect |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
105 Content-Type: text/html |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
106 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
107 SEE-THIS |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
108 $count |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
109 EOF |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
110 } |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
111 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
112 FCGI::CloseSocket($socket); |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
113 } |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
114 |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
115 ############################################################################### |