comparison limit_rate.t @ 1471:054f06c8a1e6

Tests: limit_rate / limit_rate_after tests.
author Sergey Kandaurov <pluknet@nginx.com>
date Thu, 25 Apr 2019 13:40:28 +0300
parents
children b8b92ed90485
comparison
equal deleted inserted replaced
1470:ed2be714a3af 1471:054f06c8a1e6
1 #!/usr/bin/perl
2
3 # (C) Sergey Kandaurov
4 # (C) Nginx, Inc.
5
6 # Tests for limit_rate and limit_rate_after directives.
7
8 ###############################################################################
9
10 use warnings;
11 use strict;
12
13 use Test::More;
14
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
16
17 use lib 'lib';
18 use Test::Nginx;
19
20 ###############################################################################
21
22 select STDERR; $| = 1;
23 select STDOUT; $| = 1;
24
25 plan(skip_all => 'win32') if $^O eq 'MSWin32';
26
27 my $t = Test::Nginx->new()->has(qw/http proxy/);
28
29 $t->write_file_expand('nginx.conf', <<'EOF');
30
31 %%TEST_GLOBALS%%
32
33 daemon off;
34
35 events {
36 }
37
38 http {
39 %%TEST_GLOBALS_HTTP%%
40
41 log_format test escape=none $uri:$arg_a$arg_xal:$upstream_response_time;
42
43 server {
44 listen 127.0.0.1:8080;
45 server_name localhost;
46
47 location / {
48 proxy_pass http://127.0.0.1:8081;
49 access_log %%TESTDIR%%/test.log test;
50 }
51 }
52
53 server {
54 listen 127.0.0.1:8081;
55 server_name localhost;
56
57 limit_rate 12k;
58 limit_rate_after 256;
59
60 location /data {
61 add_header X-Accel-Redirect $arg_xar;
62 add_header X-Accel-Limit-Rate $arg_xal;
63 }
64
65 location /redirect {
66 limit_rate 0;
67 alias %%TESTDIR%%/data;
68 }
69
70 location /var {
71 alias %%TESTDIR%%/data;
72 limit_rate $arg_l;
73 limit_rate_after $arg_a;
74 }
75
76 location /proxy/ {
77 proxy_pass http://127.0.0.1:8081/;
78 }
79 }
80 }
81
82 EOF
83
84 $t->write_file('data', 'X' x 30000);
85 $t->try_run('no limit_rate variables')->plan(7);
86
87 ###############################################################################
88
89 # NB: response time may be 1s less, if timer is scheduled on upper half second
90
91 like(http_get('/data'), qr/^(XXXXXXXXXX){3000}\x0d?\x0a?$/m, 'response body');
92 like($t->read_file('test.log'), qr/data::[12]/, 'limit_rate');
93
94 # /proxy -> /redirect
95 # before 1.17.0, limit was set once in ngx_http_update_location_config()
96
97 http_get('/proxy/data?xar=/redirect');
98 like($t->read_file('test.log'), qr!proxy/data::0!, 'X-Accel-Redirect');
99
100 # X-Accel-Limit-Rate has higher precedence
101
102 http_get('/proxy/data?xar=/redirect&xal=25000');
103 like($t->read_file('test.log'), qr!proxy/data:25000:1!, 'X-Accel-Limit-Rate');
104
105 http_get('/var?l=12k&a=256');
106 like($t->read_file('test.log'), qr/var:256:[12]/, 'variable');
107
108 http_get('/var?l=12k&a=40k');
109 like($t->read_file('test.log'), qr/var:40k:0/, 'variable after');
110
111 http_get('/var');
112 like($t->read_file('test.log'), qr/var::0/, 'variables unset');
113
114 ###############################################################################