annotate js_request_body.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 bc0990ea2e5b
children 18ac4d9e5a2a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1322
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
2
1342
5833f3b7a884 Tests: adapted js_request_body.t for renamed property.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1322
diff changeset
3 # (C) Dmitry Volyntsev
1322
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
5
1591
a7902e5adeab Tests: style.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1520
diff changeset
6 # Tests for http njs module, r.requestBody method.
1322
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
7
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
8 ###############################################################################
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
9
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
10 use warnings;
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
11 use strict;
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
12
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
13 use Test::More;
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
14
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
15 use Socket qw/ CRLF /;
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
16
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
17 BEGIN { use FindBin; chdir($FindBin::Bin); }
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
18
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
19 use lib 'lib';
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
20 use Test::Nginx;
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
21
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
22 ###############################################################################
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
23
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
24 select STDERR; $| = 1;
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
25 select STDOUT; $| = 1;
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
26
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
27 my $t = Test::Nginx->new()->has(qw/http/)
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
28 ->write_file_expand('nginx.conf', <<'EOF');
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
29
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
30 %%TEST_GLOBALS%%
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
31
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
32 daemon off;
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
33
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
34 events {
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
35 }
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
36
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
37 http {
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
38 %%TEST_GLOBALS_HTTP%%
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
39
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
40 js_include test.js;
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
41
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
42 server {
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
43 listen 127.0.0.1:8080;
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
44 server_name localhost;
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
45
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
46 location /body {
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
47 js_content test_body;
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
48 }
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
49
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
50 location /in_file {
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
51 client_body_in_file_only on;
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
52 js_content test_body;
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
53 }
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
54 }
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
55 }
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
56
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
57 EOF
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
58
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
59 $t->write_file('test.js', <<EOF);
1342
5833f3b7a884 Tests: adapted js_request_body.t for renamed property.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1322
diff changeset
60 function test_body(r) {
1322
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
61 try {
1342
5833f3b7a884 Tests: adapted js_request_body.t for renamed property.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1322
diff changeset
62 var body = r.requestBody;
5833f3b7a884 Tests: adapted js_request_body.t for renamed property.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1322
diff changeset
63 r.return(200, body);
1322
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
64
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
65 } catch (e) {
1342
5833f3b7a884 Tests: adapted js_request_body.t for renamed property.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1322
diff changeset
66 r.return(500, e.message);
1322
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
67 }
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
68 }
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
69
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
70 EOF
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
71
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
72 $t->try_run('no njs request body')->plan(3);
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
73
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
74 ###############################################################################
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
75
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
76 like(http_post('/body'), qr/REQ-BODY/, 'request body');
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
77 like(http_post('/in_file'), qr/request body is in a file/,
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
78 'request body in file');
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
79 like(http_post_big('/body'), qr/200.*^(1234567890){1024}$/ms,
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
80 'request body big');
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
81
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
82 ###############################################################################
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
83
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
84 sub http_post {
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
85 my ($url, %extra) = @_;
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
86
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
87 my $p = "POST $url HTTP/1.0" . CRLF .
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
88 "Host: localhost" . CRLF .
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
89 "Content-Length: 8" . CRLF .
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
90 CRLF .
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
91 "REQ-BODY";
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
92
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
93 return http($p, %extra);
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
94 }
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
95
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
96 sub http_post_big {
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
97 my ($url, %extra) = @_;
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
98
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
99 my $p = "POST $url HTTP/1.0" . CRLF .
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
100 "Host: localhost" . CRLF .
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
101 "Content-Length: 10240" . CRLF .
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
102 CRLF .
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
103 ("1234567890" x 1024);
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
104
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
105 return http($p, %extra);
d6daf03478ad Tests: added njs request body tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
106 }
1451
9d579fc770a6 Tests: style.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1342
diff changeset
107
9d579fc770a6 Tests: style.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1342
diff changeset
108 ###############################################################################