Mercurial > hg > nginx-tests
annotate h2_proxy_request_buffering_redirect.t @ 1933:9bafe7cddd3c
Tests: improved QUIC key update tests with old keys.
On unsuccessful protection removal, it is now retried with old keys.
Otherwise, old keys are removed to ensure they're no longer in use.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Mon, 21 Aug 2023 17:26:47 +0400 |
parents | 236d038dc04a |
children | 11463d379570 |
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 |
1900
236d038dc04a
Tests: suppress "listen .. http2;" deprecation warnings.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
28 $t->write_file_expand('nginx.conf', <<'EOF'); |
1498
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 |
1900
236d038dc04a
Tests: suppress "listen .. http2;" deprecation warnings.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
71 # suppress deprecation warning |
236d038dc04a
Tests: suppress "listen .. http2;" deprecation warnings.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
72 |
236d038dc04a
Tests: suppress "listen .. http2;" deprecation warnings.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
73 open OLDERR, ">&", \*STDERR; close STDERR; |
236d038dc04a
Tests: suppress "listen .. http2;" deprecation warnings.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
74 $t->run(); |
236d038dc04a
Tests: suppress "listen .. http2;" deprecation warnings.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
75 open STDERR, ">&", \*OLDERR; |
236d038dc04a
Tests: suppress "listen .. http2;" deprecation warnings.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
76 |
1498
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
77 ############################################################################### |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
78 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
79 # unbuffered request body |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
80 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
81 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
|
82 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
|
83 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
84 $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
|
85 sleep 1; |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
86 $s->h2_body('THIS'); |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
87 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
88 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
|
89 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
|
90 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
|
91 |
63a74974a0e9
Tests: HTTP/2 unbuffered request body with redirect (ticket #1819).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
92 ############################################################################### |