annotate fastcgi.t @ 1248:70192b1baf01

Tests: added exception test to stream_js.t using 'require'. The stream js tests introduced in edf5a3c9e36a fail on njs 0.1.14. It doesn't currently provide an easy way to check its version, whilst we are obligated to gracefully handle such cases somehow. With such an addition of 'require', now the tests are skipped instead on the previous versions.
author Sergey Kandaurov <pluknet@nginx.com>
date Tue, 21 Nov 2017 13:16:39 +0300
parents 882267679006
children 5ac92857e419
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
30
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5 # Test for fastcgi backend.
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 ###############################################################################
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9 use warnings;
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use strict;
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12 use Test::More;
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14 BEGIN { use FindBin; chdir($FindBin::Bin); }
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16 use lib 'lib';
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17 use Test::Nginx;
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 ###############################################################################
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21 select STDERR; $| = 1;
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22 select STDOUT; $| = 1;
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
24 eval { require FCGI; };
31
baf9c51d166c Tests: fix typo in fastcgi test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 30
diff changeset
25 plan(skip_all => 'FCGI not installed') if $@;
221
8d2c6358d830 Tests: avoid using FCGI on win32.
Maxim Dounin <mdounin@mdounin.ru>
parents: 212
diff changeset
26 plan(skip_all => 'win32') if $^O eq 'MSWin32';
30
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27
802
eca9b1d19021 Tests: tests for host expansion to an explicit upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 801
diff changeset
28 my $t = Test::Nginx->new()->has(qw/http fastcgi/)->plan(7)
30
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
29 ->write_file_expand('nginx.conf', <<'EOF');
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
30
107
1c0ec30614c6 Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
31 %%TEST_GLOBALS%%
1c0ec30614c6 Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
32
249
6a0d934950bc Tests: remove extra spaces in "daemon off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 221
diff changeset
33 daemon off;
30
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35 events {
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
36 }
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38 http {
107
1c0ec30614c6 Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
39 %%TEST_GLOBALS_HTTP%%
35
7bf0e8a1d66c Tests: always define temp paths.
Maxim Dounin <mdounin@mdounin.ru>
parents: 31
diff changeset
40
802
eca9b1d19021 Tests: tests for host expansion to an explicit upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 801
diff changeset
41 upstream u {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
42 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
43 }
eca9b1d19021 Tests: tests for host expansion to an explicit upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 801
diff changeset
44
30
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
45 server {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
46 listen 127.0.0.1:8080;
30
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
47 server_name localhost;
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
48
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
49 location / {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
50 fastcgi_pass 127.0.0.1:8081;
131
21a428b31f37 Tests: add test for fastcgi regression introduced in 0.8.34.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
51 fastcgi_param REQUEST_URI $request_uri;
30
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
52 }
801
d95c4b8e5517 Tests: more tests for passing requests to host given by expression.
Sergey Kandaurov <pluknet@nginx.com>
parents: 491
diff changeset
53
d95c4b8e5517 Tests: more tests for passing requests to host given by expression.
Sergey Kandaurov <pluknet@nginx.com>
parents: 491
diff changeset
54 location /var {
d95c4b8e5517 Tests: more tests for passing requests to host given by expression.
Sergey Kandaurov <pluknet@nginx.com>
parents: 491
diff changeset
55 fastcgi_pass $arg_b;
d95c4b8e5517 Tests: more tests for passing requests to host given by expression.
Sergey Kandaurov <pluknet@nginx.com>
parents: 491
diff changeset
56 fastcgi_param REQUEST_URI $request_uri;
d95c4b8e5517 Tests: more tests for passing requests to host given by expression.
Sergey Kandaurov <pluknet@nginx.com>
parents: 491
diff changeset
57 }
30
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
58 }
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
59 }
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
61 EOF
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
62
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
63 $t->run_daemon(\&fastcgi_daemon);
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
64 $t->run()->waitforsocket('127.0.0.1:' . port(8081));
30
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
65
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
66 ###############################################################################
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
67
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
68 like(http_get('/'), qr/SEE-THIS/, 'fastcgi request');
491
d5bf5942a8b2 Tests: disambiguated parsing of the status code.
Sergey Kandaurov <pluknet@nginx.com>
parents: 295
diff changeset
69 like(http_get('/redir'), qr/ 302 /, 'fastcgi redirect');
30
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
70 like(http_get('/'), qr/^3$/m, 'fastcgi third request');
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
71
41
1b3c22a87e5d Tests: add some HEAD tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 40
diff changeset
72 unlike(http_head('/'), qr/SEE-THIS/, 'no data in HEAD');
1b3c22a87e5d Tests: add some HEAD tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 40
diff changeset
73
131
21a428b31f37 Tests: add test for fastcgi regression introduced in 0.8.34.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
74 like(http_get('/stderr'), qr/SEE-THIS/, 'large stderr handled');
21a428b31f37 Tests: add test for fastcgi regression introduced in 0.8.34.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
75
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
76 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
77 'fastcgi with variables');
802
eca9b1d19021 Tests: tests for host expansion to an explicit upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 801
diff changeset
78 like(http_get('/var?b=u'), qr/SEE-THIS/, 'fastcgi with variables to upstream');
801
d95c4b8e5517 Tests: more tests for passing requests to host given by expression.
Sergey Kandaurov <pluknet@nginx.com>
parents: 491
diff changeset
79
30
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
80 ###############################################################################
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
81
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
82 sub fastcgi_daemon {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
83 my $socket = FCGI::OpenSocket('127.0.0.1:' . port(8081), 5);
30
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
84 my $request = FCGI::Request(\*STDIN, \*STDOUT, \*STDERR, \%ENV,
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
85 $socket);
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
86
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
87 my $count;
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
88 while( $request->Accept() >= 0 ) {
40
3325fa3f515c Tests: avoid using \r\n.
Maxim Dounin <mdounin@mdounin.ru>
parents: 36
diff changeset
89 $count++;
131
21a428b31f37 Tests: add test for fastcgi regression introduced in 0.8.34.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
90
21a428b31f37 Tests: add test for fastcgi regression introduced in 0.8.34.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
91 if ($ENV{REQUEST_URI} eq '/stderr') {
21a428b31f37 Tests: add test for fastcgi regression introduced in 0.8.34.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
92 warn "sample stderr text" x 512;
21a428b31f37 Tests: add test for fastcgi regression introduced in 0.8.34.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
93 }
212
a7cc4371f4ad Tests: whitespace fixes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
94
40
3325fa3f515c Tests: avoid using \r\n.
Maxim Dounin <mdounin@mdounin.ru>
parents: 36
diff changeset
95 print <<EOF;
952
e9064d691790 Tests: converted tests to run in parallel.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 802
diff changeset
96 Location: http://localhost/redirect
40
3325fa3f515c Tests: avoid using \r\n.
Maxim Dounin <mdounin@mdounin.ru>
parents: 36
diff changeset
97 Content-Type: text/html
3325fa3f515c Tests: avoid using \r\n.
Maxim Dounin <mdounin@mdounin.ru>
parents: 36
diff changeset
98
3325fa3f515c Tests: avoid using \r\n.
Maxim Dounin <mdounin@mdounin.ru>
parents: 36
diff changeset
99 SEE-THIS
3325fa3f515c Tests: avoid using \r\n.
Maxim Dounin <mdounin@mdounin.ru>
parents: 36
diff changeset
100 $count
3325fa3f515c Tests: avoid using \r\n.
Maxim Dounin <mdounin@mdounin.ru>
parents: 36
diff changeset
101 EOF
30
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
102 }
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
103
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
104 FCGI::CloseSocket($socket);
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
105 }
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
106
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
107 ###############################################################################