annotate h2_auth_request.t @ 1427:eb1d883305ea

Tests: avoid edge cases in upstream random two test. Unavailable servers contribute to the number of attempts, if selected, before the balancer would fall back to the default round-robin method. This means that it's quite possible to get server with more connections. To facilitate with selecting two alive servers, down server was removed from the upstream configuration at the cost of slightly worse coverage.
author Sergey Kandaurov <pluknet@nginx.com>
date Thu, 10 Jan 2019 17:42:34 +0300
parents 766bcbb632ee
children 236d038dc04a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1088
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
2
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
3 # (C) Andrey Zelenkov
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
5
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
6 # Tests for HTTP/2 protocol with auth_request.
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
7
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
8 ###############################################################################
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
9
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
10 use warnings;
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
11 use strict;
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
12
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
13 use Test::More;
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
14
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
16
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
17 use lib 'lib';
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
18 use Test::Nginx;
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
19 use Test::Nginx::HTTP2;
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
20
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
21 ###############################################################################
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
22
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
23 select STDERR; $| = 1;
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
24 select STDOUT; $| = 1;
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
25
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
26 my $t = Test::Nginx->new()->has(qw/http http_v2 rewrite proxy auth_request/)
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
27 ->plan(2);
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
28
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
29 $t->write_file_expand('nginx.conf', <<'EOF');
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
30
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
31 %%TEST_GLOBALS%%
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
32
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
33 daemon off;
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
34
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
35 events {
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
36 }
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
37
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
38 http {
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
39 %%TEST_GLOBALS_HTTP%%
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
40
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
41 server {
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
42 listen 127.0.0.1:8080 http2;
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
43 listen 127.0.0.1:8081;
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
44 server_name localhost;
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
45
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
46 location / {
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
47 return 200;
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
48 }
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
49 location /auth {
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
50 add_header X-Body-File $request_body_file;
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
51 client_body_buffer_size 512;
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
52 auth_request /auth_request;
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
53 proxy_pass http://127.0.0.1:8081/auth_proxy;
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
54 }
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
55 location /auth_request {
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
56 proxy_pass http://127.0.0.1:8081/;
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
57 proxy_pass_request_body off;
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
58 proxy_set_header Content-Length "";
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
59 }
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
60 location /auth_proxy {
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
61 add_header X-Body $request_body;
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
62 proxy_pass http://127.0.0.1:8081/;
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
63 }
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
64 }
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
65 }
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
66
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
67 EOF
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
68
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
69 $t->run();
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
70
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
71 ###############################################################################
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
72
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
73 my ($s, $sid, $frames, $frame);
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
74
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
75 # second stream is used to induce body corruption issue
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
76
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
77 $s = Test::Nginx::HTTP2->new();
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
78 $sid = $s->new_stream({ path => '/auth', method => 'POST', body => 'A' x 600 });
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
79 $s->new_stream({ path => '/auth', method => 'POST', body => 'B' x 600 });
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
80 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]);
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
81
1090
9d6a0dbb889a Tests: check headers for appropriate stream in h2_auth_request.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1088
diff changeset
82 ($frame) = grep { $_->{type} eq "HEADERS" && $_->{sid} == $sid } @$frames;
1088
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
83 is($frame->{headers}->{'x-body'}, 'A' x 600, 'auth request body');
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
84 isnt($frame->{headers}->{'x-body-file'}, undef, 'auth request body file');
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
85
83b7b3f8b6c5 Tests: added HTTP/2 tests with auth_request (ticket #1143).
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
86 ###############################################################################