annotate scgi.t @ 1021:ebdf239722b9

Tests: relaxed proxy_cache_lock.t nolock tests to fix on Solaris. Assumed that the order of responses being arrived in nolock case may be ignored. An important part of such case is that the only last response should be cached.
author Sergey Kandaurov <pluknet@nginx.com>
date Fri, 02 Sep 2016 12:17:35 +0300
parents 882267679006
children be3ada2e9d24
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
158
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5 # Test for scgi backend.
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 ###############################################################################
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9 use warnings;
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use strict;
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12 use Test::More;
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14 BEGIN { use FindBin; chdir($FindBin::Bin); }
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16 use lib 'lib';
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17 use Test::Nginx;
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 ###############################################################################
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21 select STDERR; $| = 1;
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22 select STDOUT; $| = 1;
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
24 eval { require SCGI; };
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25 plan(skip_all => 'SCGI not installed') if $@;
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26
802
eca9b1d19021 Tests: tests for host expansion to an explicit upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 801
diff changeset
27 my $t = Test::Nginx->new()->has(qw/http scgi/)->plan(7)
158
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
28 ->write_file_expand('nginx.conf', <<'EOF');
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
29
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
30 %%TEST_GLOBALS%%
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
31
249
6a0d934950bc Tests: remove extra spaces in "daemon off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 241
diff changeset
32 daemon off;
158
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
33
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34 events {
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35 }
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
36
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37 http {
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38 %%TEST_GLOBALS_HTTP%%
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
39
802
eca9b1d19021 Tests: tests for host expansion to an explicit upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 801
diff changeset
40 upstream u {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 960
diff changeset
41 server 127.0.0.1:8081;
802
eca9b1d19021 Tests: tests for host expansion to an explicit upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 801
diff changeset
42 }
eca9b1d19021 Tests: tests for host expansion to an explicit upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 801
diff changeset
43
158
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
44 server {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 960
diff changeset
45 listen 127.0.0.1:8080;
158
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
46 server_name localhost;
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
47
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
48 location / {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 960
diff changeset
49 scgi_pass 127.0.0.1:8081;
158
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
50 scgi_param SCGI 1;
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
51 scgi_param REQUEST_URI $request_uri;
167
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
52 scgi_param HTTP_X_BLAH "blah";
158
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
53 }
801
d95c4b8e5517 Tests: more tests for passing requests to host given by expression.
Sergey Kandaurov <pluknet@nginx.com>
parents: 590
diff changeset
54
d95c4b8e5517 Tests: more tests for passing requests to host given by expression.
Sergey Kandaurov <pluknet@nginx.com>
parents: 590
diff changeset
55 location /var {
d95c4b8e5517 Tests: more tests for passing requests to host given by expression.
Sergey Kandaurov <pluknet@nginx.com>
parents: 590
diff changeset
56 scgi_pass $arg_b;
d95c4b8e5517 Tests: more tests for passing requests to host given by expression.
Sergey Kandaurov <pluknet@nginx.com>
parents: 590
diff changeset
57 scgi_param SCGI 1;
d95c4b8e5517 Tests: more tests for passing requests to host given by expression.
Sergey Kandaurov <pluknet@nginx.com>
parents: 590
diff changeset
58 scgi_param REQUEST_URI $request_uri;
d95c4b8e5517 Tests: more tests for passing requests to host given by expression.
Sergey Kandaurov <pluknet@nginx.com>
parents: 590
diff changeset
59 }
d95c4b8e5517 Tests: more tests for passing requests to host given by expression.
Sergey Kandaurov <pluknet@nginx.com>
parents: 590
diff changeset
60
158
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
61 }
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
62 }
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
63
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
64 EOF
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
65
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
66 $t->run_daemon(\&scgi_daemon);
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 960
diff changeset
67 $t->run()->waitforsocket('127.0.0.1:' . port(8081));
158
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
68
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
69 ###############################################################################
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
70
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
71 like(http_get('/'), qr/SEE-THIS/, 'scgi request');
491
d5bf5942a8b2 Tests: disambiguated parsing of the status code.
Sergey Kandaurov <pluknet@nginx.com>
parents: 249
diff changeset
72 like(http_get('/redir'), qr/ 302 /, 'scgi redirect');
158
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
73 like(http_get('/'), qr/^3$/m, 'scgi third request');
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
74
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
75 unlike(http_head('/'), qr/SEE-THIS/, 'no data in HEAD');
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
76
167
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
77 like(http_get_headers('/headers'), qr/SEE-THIS/,
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
78 'scgi request with many ignored headers');
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
79
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 960
diff changeset
80 like(http_get('/var?b=127.0.0.1:' . port(8081)), qr/SEE-THIS/,
952
e9064d691790 Tests: converted tests to run in parallel.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 802
diff changeset
81 'scgi with variables');
802
eca9b1d19021 Tests: tests for host expansion to an explicit upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 801
diff changeset
82 like(http_get('/var?b=u'), qr/SEE-THIS/, 'scgi with variables to upstream');
801
d95c4b8e5517 Tests: more tests for passing requests to host given by expression.
Sergey Kandaurov <pluknet@nginx.com>
parents: 590
diff changeset
83
167
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
84 ###############################################################################
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
85
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
86 sub http_get_headers {
590
dc2f8aac0553 Tests: whitespace fixes.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 491
diff changeset
87 my ($url, %extra) = @_;
dc2f8aac0553 Tests: whitespace fixes.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 491
diff changeset
88 return http(<<EOF, %extra);
167
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
89 GET $url HTTP/1.0
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
90 Host: localhost
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
91 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
92 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
93 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
94 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
95 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
96 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
97 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
98 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
99 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
100 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
101 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
102 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
103 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
104 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
105 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
106 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
107 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
108 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
109 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
110
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
111 EOF
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
112 }
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
113
158
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
114 ###############################################################################
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
115
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
116 sub scgi_daemon {
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
117 my $server = IO::Socket::INET->new(
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
118 Proto => 'tcp',
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 960
diff changeset
119 LocalHost => '127.0.0.1:' . port(8081),
158
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
120 Listen => 5,
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
121 Reuse => 1
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
122 )
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
123 or die "Can't create listening socket: $!\n";
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
124
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
125 my $scgi = SCGI->new($server, blocking => 1);
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
126 my $count = 0;
212
a7cc4371f4ad Tests: whitespace fixes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 167
diff changeset
127
158
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
128 while (my $request = $scgi->accept()) {
960
d4a0232425ee Tests: fixed race in SCGI tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
129 eval { $request->read_env(); };
d4a0232425ee Tests: fixed race in SCGI tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
130 next if $@;
d4a0232425ee Tests: fixed race in SCGI tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
131
158
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
132 $count++;
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
133
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
134 $request->connection()->print(<<EOF);
952
e9064d691790 Tests: converted tests to run in parallel.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 802
diff changeset
135 Location: http://localhost/redirect
158
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
136 Content-Type: text/html
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
137
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
138 SEE-THIS
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
139 $count
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
140 EOF
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
141 }
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
142 }
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
143
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
144 ###############################################################################