Mercurial > hg > nginx-tests
annotate h2_proxy_request_buffering_redirect.t @ 1606:e4e0695552ed
Tests: fixed stream_proxy_ssl_conf_command.t.
The stream_proxy_ssl_conf_command.t test used stream return module
to return the response. Since this ignores actual request, but the
perl test code used http_get(). This might result in the request being
sent after the response is returned and the connection closed by the server,
resulting in RST being generated and no response seen by the client at all.
Fix is to use "stream(...)->read()" instead of http_get(), so
no request is sent at all, eliminating possibility of RST being
generated.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Tue, 10 Nov 2020 05:03:29 +0300 |
parents | 03f8fb9f6492 |
children | 5ac6efbe5552 |
rev | line source |
---|---|
1498
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
2 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
3 # (C) Sergey Kandaurov |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
5 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
6 # Tests for HTTP/2 protocol with unbuffered request body. |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
7 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
8 ############################################################################### |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
9 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
10 use warnings; |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
11 use strict; |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
12 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
13 use Test::More; |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
14 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
15 BEGIN { use FindBin; chdir($FindBin::Bin); } |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
16 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
17 use lib 'lib'; |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
18 use Test::Nginx; |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
19 use Test::Nginx::HTTP2; |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
20 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
21 ############################################################################### |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
22 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
23 select STDERR; $| = 1; |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
24 select STDOUT; $| = 1; |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
25 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
26 my $t = Test::Nginx->new()->has(qw/http http_v2 proxy rewrite/)->plan(1); |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
27 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
28 $t->write_file_expand('nginx.conf', <<'EOF')->run(); |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
29 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
30 %%TEST_GLOBALS%% |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
31 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
32 daemon off; |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
33 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
34 events { |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
35 } |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
36 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
37 http { |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
38 %%TEST_GLOBALS_HTTP%% |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
39 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
40 server { |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
41 listen 127.0.0.1:8080 http2; |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
42 listen 127.0.0.1:8081; |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
43 server_name localhost; |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
44 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
45 proxy_http_version 1.1; |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
46 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
47 location / { |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
48 proxy_request_buffering off; |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
49 proxy_pass http://127.0.0.1:8081/bad; |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
50 proxy_intercept_errors on; |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
51 error_page 502 = /pass; |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
52 } |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
53 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
54 location /bad { |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
55 return 502; |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
56 } |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
57 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
58 location /pass { |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
59 proxy_pass http://127.0.0.1:8081/good; |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
60 } |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
61 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
62 location /good { |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
63 limit_rate 100; |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
64 return 200; |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
65 } |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
66 } |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
67 } |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
68 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
69 EOF |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
70 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
71 ############################################################################### |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
72 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
73 # unbuffered request body |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
74 |
1504
03f8fb9f6492
Tests: fixed h2_proxy_request_buffering_redirect.t on old versions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1498
diff
changeset
|
75 SKIP: { |
03f8fb9f6492
Tests: fixed h2_proxy_request_buffering_redirect.t on old versions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1498
diff
changeset
|
76 skip 'leaves coredump', 1 unless $t->has_version('1.17.4') |
03f8fb9f6492
Tests: fixed h2_proxy_request_buffering_redirect.t on old versions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1498
diff
changeset
|
77 or $ENV{TEST_NGINX_UNSAFE}; |
03f8fb9f6492
Tests: fixed h2_proxy_request_buffering_redirect.t on old versions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1498
diff
changeset
|
78 |
1498
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
79 TODO: { |
1504
03f8fb9f6492
Tests: fixed h2_proxy_request_buffering_redirect.t on old versions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1498
diff
changeset
|
80 local $TODO = 'not yet' unless $t->has_version('1.17.4'); |
03f8fb9f6492
Tests: fixed h2_proxy_request_buffering_redirect.t on old versions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1498
diff
changeset
|
81 |
03f8fb9f6492
Tests: fixed h2_proxy_request_buffering_redirect.t on old versions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1498
diff
changeset
|
82 $t->todo_alerts() unless $t->has_version('1.17.4'); |
1498
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
83 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
84 my $s = Test::Nginx::HTTP2->new(); |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
85 my $sid = $s->new_stream({ body_more => 1 }); |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
86 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
87 $s->h2_body('SEE-', { body_more => 1 }); |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
88 sleep 1; |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
89 $s->h2_body('THIS'); |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
90 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
91 my $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
92 my ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
93 is($frame->{headers}->{':status'}, 200, 'discard body rest on redirect'); |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
94 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
95 } |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
96 |
1504
03f8fb9f6492
Tests: fixed h2_proxy_request_buffering_redirect.t on old versions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1498
diff
changeset
|
97 } |
03f8fb9f6492
Tests: fixed h2_proxy_request_buffering_redirect.t on old versions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1498
diff
changeset
|
98 |
1498
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
99 ############################################################################### |