annotate js_fetch_timeout.t @ 1772:4f238efded81

Tests: corrected proxy_cache_error.t comment.
author Sergey Kandaurov <pluknet@nginx.com>
date Fri, 03 Jun 2022 18:24:51 +0400
parents f1a097719877
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1754
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
2
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
3 # (C) Dmitry Volyntsev
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
5
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
6 # Tests for http njs module, fetch method timeout.
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
7
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
8 ###############################################################################
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
9
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
10 use warnings;
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
11 use strict;
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
12
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
13 use Test::More;
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
14
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
15 use Socket qw/ CRLF /;
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
16
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
17 BEGIN { use FindBin; chdir($FindBin::Bin); }
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
18
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
19 use lib 'lib';
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
20 use Test::Nginx;
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
21
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
22 ###############################################################################
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
23
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
24 select STDERR; $| = 1;
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
25 select STDOUT; $| = 1;
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
26
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
27 my $t = Test::Nginx->new()->has(qw/http/)
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
28 ->write_file_expand('nginx.conf', <<'EOF');
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
29
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
30 %%TEST_GLOBALS%%
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
31
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
32 daemon off;
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
33
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
34 events {
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
35 }
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
36
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
37 http {
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
38 %%TEST_GLOBALS_HTTP%%
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
39
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
40 js_import test.js;
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
41
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
42 server {
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
43 listen 127.0.0.1:8080;
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
44 server_name localhost;
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
45
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
46 location /njs {
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
47 js_content test.njs;
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
48 }
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
49
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
50 location /normal_timeout {
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
51 js_content test.timeout_test;
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
52 }
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
53
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
54 location /short_timeout {
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
55 js_fetch_timeout 200ms;
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
56 js_content test.timeout_test;
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
57 }
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
58 }
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
59
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
60 server {
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
61 listen 127.0.0.1:8081;
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
62 server_name localhost;
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
63
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
64 location /normal_reply {
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
65 js_content test.normal_reply;
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
66 }
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
67
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
68 location /delayed_reply {
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
69 js_content test.delayed_reply;
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
70 }
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
71 }
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
72 }
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
73
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
74 EOF
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
75
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
76 my $p1 = port(8081);
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
77
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
78 $t->write_file('test.js', <<EOF);
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
79 function test_njs(r) {
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
80 r.return(200, njs.version);
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
81 }
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
82
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
83 async function timeout_test(r) {
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
84 let rs = await Promise.allSettled([
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
85 'http://127.0.0.1:$p1/normal_reply',
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
86 'http://127.0.0.1:$p1/delayed_reply',
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
87 ].map(v => ngx.fetch(v)));
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
88
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
89 let bs = rs.map(v => ({s: v.status, v: v.value ? v.value.headers.X
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
90 : v.reason}));
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
91
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
92 r.return(200, njs.dump(bs));
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
93 }
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
94
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
95 function normal_reply(r) {
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
96 r.headersOut.X = 'N';
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
97 r.return(200);
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
98 }
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
99
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
100 function delayed_reply(r) {
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
101 r.headersOut.X = 'D';
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
102 setTimeout((r) => { r.return(200); }, 250, r, 0);
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
103 }
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
104
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
105 export default {njs: test_njs, timeout_test, normal_reply, delayed_reply};
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
106 EOF
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
107
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
108 $t->try_run('no js_fetch_timeout')->plan(2);
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
109
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
110 ###############################################################################
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
111
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
112 like(http_get('/normal_timeout'),
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
113 qr/\[\{s:'fulfilled',v:'N'},\{s:'fulfilled',v:'D'}]$/s,
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
114 'normal timeout');
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
115 like(http_get('/short_timeout'),
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
116 qr/\[\{s:'fulfilled',v:'N'},\{s:'rejected',v:Error: read timed out}]$/s,
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
117 'short timeout');
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
118
f1a097719877 Tests: added js fetch timeout directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
119 ###############################################################################