Mercurial > hg > nginx-tests
annotate stream_js_preload_object.t @ 1817:c045fbb98e9a
Tests: revised tests for listen port ranges.
Renumbered testing ports to get more chance to execute when run in parallel.
Relaxed condition to skip tests only when the port range is out of sequence.
Adjacent port numbers out of a specified range aren't crucial to skip tests:
if not in sequence, statistically this will be caught in subsequent runs.
Unsafe tests that use wildcard addresses are moved to a separate file.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Fri, 23 Dec 2022 19:20:50 +0400 |
parents | c67b390cb9ef |
children |
rev | line source |
---|---|
1789
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
2 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
3 # (C) Vadim Zhestikov |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
5 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
6 # Tests for stream njs module, js_preload_object directive. |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
7 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
8 ############################################################################### |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
9 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
10 use warnings; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
11 use strict; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
12 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
13 use Test::More; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
14 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
15 BEGIN { use FindBin; chdir($FindBin::Bin); } |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
16 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
17 use lib 'lib'; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
18 use Test::Nginx; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
19 use Test::Nginx::Stream qw/ stream /; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
20 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
21 ############################################################################### |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
22 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
23 select STDERR; $| = 1; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
24 select STDOUT; $| = 1; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
25 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
26 my $t = Test::Nginx->new()->has(qw/stream stream_return/) |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
27 ->write_file_expand('nginx.conf', <<'EOF'); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
28 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
29 %%TEST_GLOBALS%% |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
30 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
31 daemon off; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
32 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
33 events { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
34 } |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
35 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
36 stream { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
37 %%TEST_GLOBALS_STREAM%% |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
38 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
39 js_preload_object g1 from g.json; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
40 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
41 js_set $test foo.bar.p; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
42 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
43 js_import lib.js; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
44 js_import foo from ./main.js; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
45 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
46 server { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
47 listen 127.0.0.1:8081; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
48 return $test; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
49 } |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
50 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
51 server { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
52 listen 127.0.0.1:8082; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
53 js_access lib.access; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
54 js_preread lib.preread; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
55 js_filter lib.filter; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
56 proxy_pass 127.0.0.1:8083; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
57 } |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
58 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
59 server { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
60 listen 127.0.0.1:8083; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
61 return "x"; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
62 } |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
63 } |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
64 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
65 EOF |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
66 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
67 $t->write_file('lib.js', <<EOF); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
68 var res = ''; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
69 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
70 function access(s) { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
71 res += g1.a; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
72 s.allow(); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
73 } |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
74 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
75 function preread(s) { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
76 s.on('upload', function (data) { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
77 res += g1.b[1]; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
78 if (res.length >= 3) { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
79 s.done(); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
80 } |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
81 }); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
82 } |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
83 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
84 function filter(s) { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
85 s.on('upload', function(data, flags) { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
86 s.send(data); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
87 res += g1.c.prop[0].a; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
88 }); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
89 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
90 s.on('download', function(data, flags) { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
91 if (!flags.last) { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
92 res += g1.b[3]; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
93 s.send(data); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
94 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
95 } else { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
96 res += g1.b[4]; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
97 s.send(res, {last:1}); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
98 s.off('download'); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
99 } |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
100 }); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
101 } |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
102 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
103 export default {access, preread, filter}; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
104 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
105 EOF |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
106 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
107 $t->write_file('main.js', <<EOF); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
108 export default {bar: {p(s) {return g1.b[2]}}}; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
109 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
110 EOF |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
111 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
112 $t->write_file('g.json', |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
113 '{"a":1, "b":[1,2,"element",4,5], "c":{"prop":[{"a":3}]}}'); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
114 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
115 $t->try_run('no js_preload_object available')->plan(2); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
116 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
117 ############################################################################### |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
118 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
119 is(stream('127.0.0.1:' . port(8081))->read(), 'element', 'foo.bar.p'); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
120 is(stream('127.0.0.1:' . port(8082))->io('0'), 'x122345', 'lib.access'); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
121 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
122 ############################################################################### |