Mercurial > hg > nginx-tests
annotate limit_req2.t @ 1851:0351dee227a8
Tests: unbreak tests with dynamic certificates on stable.
In 74cffa9d4c43, ticket based session reuse is enabled in addition to
using a shared SSL session cache. This changed how a session can be
resumed in a different server:
- for a session ID based resumption, it is resumed in the same context
- when using session tickets, a key name is also checked for matching
- with a ticket callback, this is skipped in favor of callback's logic
This makes 'session id context match' tests fail with session tickets
on stable since ticket key names are unique in distinct SSL contexts.
On the other hand, tests pass on 1.23.2+ due to automatic ticket keys
rotation that installs ticket callback, and using a common shared SSL
session cache.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Tue, 28 Mar 2023 01:36:32 +0400 |
parents | e91d80dd2527 |
children |
rev | line source |
---|---|
1363
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
2 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
3 # (C) Sergey Kandaurov |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
5 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
6 # Tests for nginx limit_req module, multiple limits. |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
7 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
8 ############################################################################### |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
9 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
10 use warnings; |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
11 use strict; |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
12 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
13 use Test::More; |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
14 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
15 BEGIN { use FindBin; chdir($FindBin::Bin); } |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
16 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
17 use lib 'lib'; |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
18 use Test::Nginx; |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
19 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
20 ############################################################################### |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
21 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
22 select STDERR; $| = 1; |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
23 select STDOUT; $| = 1; |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
24 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
25 my $t = Test::Nginx->new()->has(qw/http limit_req/)->plan(14); |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
26 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
27 $t->write_file_expand('nginx.conf', <<'EOF'); |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
28 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
29 %%TEST_GLOBALS%% |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
30 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
31 daemon off; |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
32 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
33 events { |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
34 } |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
35 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
36 http { |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
37 %%TEST_GLOBALS_HTTP%% |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
38 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
39 limit_req_zone $arg_a zone=slow:1m rate=1r/m; |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
40 limit_req_zone $arg_b zone=fast:1m rate=1000r/s; |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
41 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
42 server { |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
43 listen 127.0.0.1:8080; |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
44 server_name localhost; |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
45 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
46 location / { |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
47 limit_req zone=fast; |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
48 limit_req zone=slow; |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
49 } |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
50 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
51 location /t2.html { |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
52 limit_req zone=fast nodelay; |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
53 limit_req zone=slow nodelay; |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
54 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
55 alias %%TESTDIR%%/t1.html; |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
56 } |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
57 } |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
58 } |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
59 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
60 EOF |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
61 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
62 $t->write_file('t1.html', 'XtestX'); |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
63 $t->run(); |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
64 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
65 ############################################################################### |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
66 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
67 like(http_get('/t1.html?b=1'), qr/^HTTP\/1.. 200 /m, 'fast'); |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
68 select undef, undef, undef, 0.1; |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
69 like(http_get('/t1.html?b=1'), qr/^HTTP\/1.. 200 /m, 'fast - passed'); |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
70 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
71 like(http_get('/t1.html?a=1'), qr/^HTTP\/1.. 200 /m, 'slow'); |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
72 select undef, undef, undef, 0.1; |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
73 like(http_get('/t1.html?a=1'), qr/^HTTP\/1.. 503 /m, 'slow - rejected'); |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
74 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
75 like(http_get('/t1.html?a=2&b=2'), qr/^HTTP\/1.. 200 /m, 'both'); |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
76 select undef, undef, undef, 0.1; |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
77 like(http_get('/t1.html?a=2&b=2'), qr/^HTTP\/1.. 503 /m, 'both - rejected'); |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
78 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
79 like(http_get('/t1.html'), qr/^HTTP\/1.. 200 /m, 'no key'); |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
80 like(http_get('/t1.html'), qr/^HTTP\/1.. 200 /m, 'no key - passed'); |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
81 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
82 # nodelay |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
83 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
84 like(http_get('/t2.html?b=3'), qr/^HTTP\/1.. 200 /m, 'nodelay fast'); |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
85 select undef, undef, undef, 0.1; |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
86 like(http_get('/t2.html?b=3'), qr/^HTTP\/1.. 200 /m, 'nodelay fast - passed'); |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
87 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
88 like(http_get('/t2.html?a=3'), qr/^HTTP\/1.. 200 /m, 'nodelay slow'); |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
89 select undef, undef, undef, 0.1; |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
90 like(http_get('/t2.html?a=3'), qr/^HTTP\/1.. 503 /m, 'nodelay slow - rejected'); |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
91 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
92 like(http_get('/t2.html?a=4&b=4'), qr/^HTTP\/1.. 200 /m, 'nodelay both'); |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
93 select undef, undef, undef, 0.1; |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
94 like(http_get('/t2.html?a=4&b=4'), qr/^HTTP\/1.. 503 /m, |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
95 'nodelay both - rejected'); |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
96 |
e91d80dd2527
Tests: limit_req basic tests with multiple limits.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
97 ############################################################################### |