Mercurial > hg > nginx-tests
annotate http_uri.t @ 1677:f13ead27f89c
Tests: improved stop() to send TERM after QUIT.
It is possible that graceful stop as initiated by SIGQUIT will take
very long time, such as when waiting for proxy_timeout in mail proxy
(defaults to 24h). To make sure in such cases nginx is stopped after
some reasonable time, we now send SIGTERM after waiting for 90 seconds.
Note that win32 version previously used "-s stop", which is equivalent
to SIGTERM rather than SIGQUIT. This seems accidental error during
introduction of initial win32 support in tests (ce2e23daa1da), so
it is changed to follow the same logic.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Wed, 19 May 2021 04:32:55 +0300 |
parents | 7b80c8e0479a |
children | 5ac6efbe5552 |
rev | line source |
---|---|
1515
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
2 |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
3 # (C) Sergey Kandaurov |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
5 |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
6 # Tests for URI normalization. |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
7 |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
8 ############################################################################### |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
9 |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
10 use warnings; |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
11 use strict; |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
12 |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
13 use Test::More; |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
14 |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
15 BEGIN { use FindBin; chdir($FindBin::Bin); } |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
16 |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
17 use lib 'lib'; |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
18 use Test::Nginx; |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
19 |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
20 ############################################################################### |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
21 |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
22 select STDERR; $| = 1; |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
23 select STDOUT; $| = 1; |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
24 |
1635
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
25 my $t = Test::Nginx->new()->has(qw/http rewrite/)->plan(17) |
1515
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
26 ->write_file_expand('nginx.conf', <<'EOF')->run(); |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
27 |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
28 %%TEST_GLOBALS%% |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
29 |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
30 daemon off; |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
31 |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
32 events { |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
33 } |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
34 |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
35 http { |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
36 %%TEST_GLOBALS_HTTP%% |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
37 |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
38 server { |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
39 listen 127.0.0.1:8080; |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
40 server_name localhost; |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
41 |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
42 location / { |
1635
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
43 add_header X-URI "x $uri x"; |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
44 add_header X-Args "y $args y"; |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
45 add_header X-Request-URI "z $request_uri z"; |
1515
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
46 return 204; |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
47 } |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
48 } |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
49 } |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
50 |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
51 EOF |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
52 |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
53 ############################################################################### |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
54 |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
55 like(http_get('/foo/bar%'), qr/400 Bad/, 'percent'); |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
56 like(http_get('/foo/bar%1'), qr/400 Bad/, 'percent digit'); |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
57 |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
58 like(http_get('/foo/bar/.?args'), qr!x /foo/bar/ x!, 'dot args'); |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
59 like(http_get('/foo/bar/.#frag'), qr!x /foo/bar/ x!, 'dot frag'); |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
60 like(http_get('/foo/bar/..?args'), qr!x /foo/ x!, 'dot dot args'); |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
61 like(http_get('/foo/bar/..#frag'), qr!x /foo/ x!, 'dot dot frag'); |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
62 like(http_get('/foo/bar/.'), qr!x /foo/bar/ x!, 'trailing dot'); |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
63 like(http_get('/foo/bar/..'), qr!x /foo/ x!, 'trailing dot dot'); |
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
64 |
1635
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
65 like(http_get('http://localhost'), qr!x / x!, 'absolute'); |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
66 like(http_get('http://localhost/'), qr!x / x!, 'absolute slash'); |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
67 |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
68 TODO: { |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
69 local $TODO = 'not yet' unless $t->has_version('1.19.6'); |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
70 |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
71 like(http_get('http://localhost?args'), qr!x / x.*y args y!ms, |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
72 'absolute args'); |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
73 like(http_get('http://localhost?args#frag'), qr!x / x.*y args y!ms, |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
74 'absolute args and frag'); |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
75 |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
76 } |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
77 |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
78 like(http_get('http://localhost:8080'), qr!x / x!, 'port'); |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
79 like(http_get('http://localhost:8080/'), qr!x / x!, 'port slash'); |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
80 |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
81 TODO: { |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
82 local $TODO = 'not yet' unless $t->has_version('1.19.6'); |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
83 |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
84 like(http_get('http://localhost:8080?args'), qr!x / x.*y args y!ms, |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
85 'port args'); |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
86 like(http_get('http://localhost:8080?args#frag'), qr!x / x.*y args y!ms, |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
87 'port args and frag'); |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
88 |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
89 } |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
90 |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
91 like(http_get('/ /'), qr!x / / x!, 'space'); |
7b80c8e0479a
Tests: absolute URI parsing tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1515
diff
changeset
|
92 |
1515
eb33558f731d
Tests: URI normalization tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
93 ############################################################################### |