annotate upstream_keepalive.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 144c6ce732e4
children e57bb4224131
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1365
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
2
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
3 # (C) Sergey Kandaurov
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
5
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
6 # Tests for upstream keepalive, keepalive_requests and keepalive_timeout.
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
7
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
8 ###############################################################################
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
9
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
10 use warnings;
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
11 use strict;
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
12
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
13 use Test::More;
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
14
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
16
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
17 use lib 'lib';
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
18 use Test::Nginx;
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
19
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
20 ###############################################################################
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
21
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
22 select STDERR; $| = 1;
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
23 select STDOUT; $| = 1;
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
24
1535
144c6ce732e4 Tests: removed TODO and try_run() checks for legacy versions.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1365
diff changeset
25 my $t = Test::Nginx->new()->has(qw/http proxy upstream_keepalive/)->plan(7)
1365
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
26 ->write_file_expand('nginx.conf', <<'EOF');
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
27
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
28 %%TEST_GLOBALS%%
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
29
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
30 daemon off;
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
31
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
32 events {
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
33 }
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
34
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
35 http {
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
36 %%TEST_GLOBALS_HTTP%%
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
37
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
38 upstream backend {
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
39 server 127.0.0.1:8081;
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
40 keepalive 1;
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
41 keepalive_requests 3;
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
42 keepalive_timeout 2s;
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
43 }
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
44
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
45 server {
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
46 listen 127.0.0.1:8080;
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
47 server_name localhost;
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
48
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
49 proxy_http_version 1.1;
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
50 proxy_set_header Connection $args;
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
51
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
52 location / {
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
53 proxy_pass http://backend;
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
54 }
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
55 }
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
56
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
57 server {
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
58 listen 127.0.0.1:8081;
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
59 server_name localhost;
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
60
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
61 location / {
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
62 add_header X-Connection $connection;
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
63 }
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
64 }
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
65 }
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
66
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
67 EOF
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
68
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
69 $t->write_file('index.html', 'SEE-THIS');
1535
144c6ce732e4 Tests: removed TODO and try_run() checks for legacy versions.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1365
diff changeset
70 $t->run();
1365
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
71
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
72 ###############################################################################
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
73
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
74 my ($r, $n);
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
75
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
76 # keepalive_requests
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
77
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
78 like($r = http_get('/'), qr/SEE-THIS/, 'request');
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
79 $r =~ m/X-Connection: (\d+)/; $n = $1;
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
80 like(http_get('/'), qr/X-Connection: $n.*SEE/ms, 'keepalive');
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
81 like(http_get('/'), qr/X-Connection: $n.*SEE/ms, 'keepalive again');
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
82 like(http_get('/'), qr/X-Connection: (?!$n).*SEE/ms, 'keepalive requests');
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
83 http_get('/?close');
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
84
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
85 # keepalive_timeout
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
86
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
87 like($r = http_get('/'), qr/SEE-THIS/, 'request timer');
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
88 $r =~ m/X-Connection: (\d+)/; $n = $1;
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
89 like(http_get('/'), qr/X-Connection: $n.*SEE/ms, 'keepalive timer');
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
90 select undef, undef, undef, 2.5;
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
91 like(http_get('/'), qr/X-Connection: (?!$n).*SEE/ms, 'keepalive timeout');
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
92
992044531283 Tests: upstream keepalive_requests and keepalive_timeout tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
93 ###############################################################################