annotate js_fetch_timeout.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 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 ###############################################################################