Mercurial > hg > nginx-tests
annotate fastcgi_header_params.t @ 251:df984d23f9d1
Tests: improve fastcgi keepalive tests.
On some platforms fastcgi_keepalive.t tests failed due to problems in
handling of data split into multiple packets. Harden tests to fail
on all platforms by adding more sleeps, and mark them as TODO till
underlying problems are fixed.
Additionally, add some padding testing.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Fri, 25 Jan 2013 20:53:53 +0400 |
parents | 6a0d934950bc |
children | 6fe0459b6668 |
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); |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
55 $t->run(); |
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 { |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
65 my ($url, %extra) = @_; |
26cf61c5ac35
Tests: fastcgi header params test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
66 return http(<<EOF, %extra); |
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 ############################################################################### |