annotate fastcgi.t @ 1851:0351dee227a8

Tests: unbreak tests with dynamic certificates on stable. In 74cffa9d4c43, ticket based session reuse is enabled in addition to using a shared SSL session cache. This changed how a session can be resumed in a different server: - for a session ID based resumption, it is resumed in the same context - when using session tickets, a key name is also checked for matching - with a ticket callback, this is skipped in favor of callback's logic This makes 'session id context match' tests fail with session tickets on stable since ticket key names are unique in distinct SSL contexts. On the other hand, tests pass on 1.23.2+ due to automatic ticket keys rotation that installs ticket callback, and using a common shared SSL session cache.
author Sergey Kandaurov <pluknet@nginx.com>
date Tue, 28 Mar 2023 01:36:32 +0400
parents 5ac92857e419
children
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
1463
5ac92857e419 Tests: fastcgi_catch_stderr test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 974
diff changeset
28 my $t = Test::Nginx->new()->has(qw/http fastcgi/)->plan(8)
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
1463
5ac92857e419 Tests: fastcgi_catch_stderr test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 974
diff changeset
54 location /catch {
5ac92857e419 Tests: fastcgi_catch_stderr test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 974
diff changeset
55 fastcgi_pass 127.0.0.1:8081;
5ac92857e419 Tests: fastcgi_catch_stderr test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 974
diff changeset
56 fastcgi_param REQUEST_URI "/stderr";
5ac92857e419 Tests: fastcgi_catch_stderr test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 974
diff changeset
57 fastcgi_catch_stderr sample;
5ac92857e419 Tests: fastcgi_catch_stderr test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 974
diff changeset
58 }
5ac92857e419 Tests: fastcgi_catch_stderr test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 974
diff changeset
59
801
d95c4b8e5517 Tests: more tests for passing requests to host given by expression.
Sergey Kandaurov <pluknet@nginx.com>
parents: 491
diff changeset
60 location /var {
d95c4b8e5517 Tests: more tests for passing requests to host given by expression.
Sergey Kandaurov <pluknet@nginx.com>
parents: 491
diff changeset
61 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
62 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
63 }
30
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
64 }
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 EOF
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
68
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
69 $t->run_daemon(\&fastcgi_daemon);
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
70 $t->run()->waitforsocket('127.0.0.1:' . port(8081));
30
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
71
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
72 ###############################################################################
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
73
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
74 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
75 like(http_get('/redir'), qr/ 302 /, 'fastcgi redirect');
30
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
76 like(http_get('/'), qr/^3$/m, 'fastcgi third request');
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
77
41
1b3c22a87e5d Tests: add some HEAD tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 40
diff changeset
78 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
79
131
21a428b31f37 Tests: add test for fastcgi regression introduced in 0.8.34.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
80 like(http_get('/stderr'), qr/SEE-THIS/, 'large stderr handled');
1463
5ac92857e419 Tests: fastcgi_catch_stderr test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 974
diff changeset
81 like(http_get('/catch'), qr/502 Bad/, 'catch stderr');
131
21a428b31f37 Tests: add test for fastcgi regression introduced in 0.8.34.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
82
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
83 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
84 'fastcgi with variables');
802
eca9b1d19021 Tests: tests for host expansion to an explicit upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 801
diff changeset
85 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
86
30
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
87 ###############################################################################
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
88
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
89 sub fastcgi_daemon {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
90 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
91 my $request = FCGI::Request(\*STDIN, \*STDOUT, \*STDERR, \%ENV,
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
92 $socket);
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
93
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
94 my $count;
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
95 while( $request->Accept() >= 0 ) {
40
3325fa3f515c Tests: avoid using \r\n.
Maxim Dounin <mdounin@mdounin.ru>
parents: 36
diff changeset
96 $count++;
131
21a428b31f37 Tests: add test for fastcgi regression introduced in 0.8.34.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
97
21a428b31f37 Tests: add test for fastcgi regression introduced in 0.8.34.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
98 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
99 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
100 }
212
a7cc4371f4ad Tests: whitespace fixes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
101
40
3325fa3f515c Tests: avoid using \r\n.
Maxim Dounin <mdounin@mdounin.ru>
parents: 36
diff changeset
102 print <<EOF;
952
e9064d691790 Tests: converted tests to run in parallel.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 802
diff changeset
103 Location: http://localhost/redirect
40
3325fa3f515c Tests: avoid using \r\n.
Maxim Dounin <mdounin@mdounin.ru>
parents: 36
diff changeset
104 Content-Type: text/html
3325fa3f515c Tests: avoid using \r\n.
Maxim Dounin <mdounin@mdounin.ru>
parents: 36
diff changeset
105
3325fa3f515c Tests: avoid using \r\n.
Maxim Dounin <mdounin@mdounin.ru>
parents: 36
diff changeset
106 SEE-THIS
3325fa3f515c Tests: avoid using \r\n.
Maxim Dounin <mdounin@mdounin.ru>
parents: 36
diff changeset
107 $count
3325fa3f515c Tests: avoid using \r\n.
Maxim Dounin <mdounin@mdounin.ru>
parents: 36
diff changeset
108 EOF
30
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
109 }
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
110
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
111 FCGI::CloseSocket($socket);
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
112 }
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
113
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
114 ###############################################################################