annotate stream_status_variable.t @ 1185:368ab1d8ed8b

Tests: unbreak h2.t with aio. Postpone sending client's SETTINGS until after server exhausted stream window, so the expected result does not depend on the time when SETTINGS was applied.
author Sergey Kandaurov <pluknet@nginx.com>
date Tue, 06 Jun 2017 21:41:09 +0300
parents 94f8cd9b41dc
children 75a83f36cff0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1025
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
2
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
3 # (C) Sergey Kandaurov
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
5
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
6 # Tests for stream status variable.
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
7
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
8 ###############################################################################
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
9
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
10 use warnings;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
11 use strict;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
12
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
13 use Test::More;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
14
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
16
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
17 use lib 'lib';
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
18 use Test::Nginx;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
19 use Test::Nginx::Stream qw/ stream /;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
20
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
21 ###############################################################################
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
22
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
23 select STDERR; $| = 1;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
24 select STDOUT; $| = 1;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
25
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
26 my $t = Test::Nginx->new()->has(qw/stream stream_return stream_access/)
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
27 ->has(qw/stream_limit_conn/);
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
28
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
29 $t->write_file_expand('nginx.conf', <<'EOF');
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
30
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
31 %%TEST_GLOBALS%%
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
32
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
33 daemon off;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
34
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
35 events {
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
36 }
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
37
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
38 stream {
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
39 log_format status $status;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
40
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
41 limit_conn_zone $binary_remote_addr zone=zone:1m;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
42
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
43 server {
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
44 listen 127.0.0.1:8080;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
45 return SEE-THIS;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
46 access_log %%TESTDIR%%/200.log status;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
47 }
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
48
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
49 server {
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
50 listen 127.0.0.1:8081;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
51 return SEE-THIS;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
52 deny all;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
53 access_log %%TESTDIR%%/403.log status;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
54 }
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
55
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
56 server {
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
57 listen 127.0.0.1:8082;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
58 proxy_pass 127.0.0.1:8083;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
59 access_log %%TESTDIR%%/502.log status;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
60
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
61 proxy_connect_timeout 0;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
62 }
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
63
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
64 server {
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
65 listen 127.0.0.1:8084;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
66 proxy_bind 127.0.0.1:$remote_port;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
67 proxy_pass 127.0.0.1:8083;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
68 access_log %%TESTDIR%%/500.log status;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
69 }
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
70
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
71 server {
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
72 listen 127.0.0.1:8085;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
73 limit_conn zone 1;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
74 proxy_pass 127.0.0.1:8086;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
75 access_log %%TESTDIR%%/503.log status;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
76
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
77 proxy_download_rate 1;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
78 }
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
79
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
80 server {
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
81 listen 127.0.0.1:8086;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
82 return SEE-THIS;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
83 }
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
84 }
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
85
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
86 EOF
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
87
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
88 $t->try_run('no stream access_log')->plan(5);
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
89
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
90 ###############################################################################
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
91
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
92 stream('127.0.0.1:' . port(8080))->read();
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
93 stream('127.0.0.1:' . port(8081))->read();
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
94 stream('127.0.0.1:' . port(8082))->read();
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
95 stream('127.0.0.1:' . port(8084))->read() if $^O ne 'MSWin32';
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
96
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
97 my $s = stream('127.0.0.1:' . port(8085));
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
98 $s->write('busy');
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
99 stream('127.0.0.1:' . port(8085))->read();
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
100 $s->read();
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
101 undef $s;
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
102
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
103 $t->stop();
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
104
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
105 is($t->read_file('200.log'), "200\n", 'stream status 200');
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
106 is($t->read_file('403.log'), "403\n", 'stream status 403');
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
107
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
108 SKIP: {
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
109 skip 'win32', 1 if $^O eq 'MSWin32';
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
110
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
111 is($t->read_file('500.log'), "500\n", 'stream status 500');
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
112
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
113 }
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
114
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
115 is($t->read_file('502.log'), "502\n", 'stream status 502');
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
116 is($t->read_file('503.log'), "503\n200\n", 'stream status 503');
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
117
94f8cd9b41dc Tests: stream $status tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
118 ###############################################################################