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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 ###############################################################################