annotate stream_js_preload_object.t @ 1836:74cffa9d4c43

Tests: enabled session reuse via TLS session tickets. This fixes tests with TLSv1.3 enabled when using BoringSSL, since for TLSv1.3 it only supports session reuse via TLS session tickets, and not server-side session cache.
author Maxim Dounin <mdounin@mdounin.ru>
date Thu, 23 Mar 2023 19:50:02 +0300
parents c67b390cb9ef
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 ###############################################################################