annotate js_ngx.t @ 1728:6d5ecf445e57

Tests: added HTTP/2 test with big request body. Notably, it is useful with body buffering in filters, in which case the stream window is flow controlled based on the preread buffer.
author Sergey Kandaurov <pluknet@nginx.com>
date Sat, 04 Sep 2021 14:50:02 +0300
parents 4eb2a82dd9b5
children f89770df737a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1611
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
2
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
3 # (C) Dmitry Volyntsev
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
5
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
6 # Tests for http njs module, ngx object.
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
7
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
8 ###############################################################################
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
9
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
10 use warnings;
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
11 use strict;
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
12
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
13 use Test::More;
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
14
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
16
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
17 use lib 'lib';
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
18 use Test::Nginx;
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
19
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
20 ###############################################################################
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
21
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
22 select STDERR; $| = 1;
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
23 select STDOUT; $| = 1;
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
24
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
25 my $t = Test::Nginx->new()->has(qw/http/)
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
26 ->write_file_expand('nginx.conf', <<'EOF');
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
27
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
28 %%TEST_GLOBALS%%
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
29
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
30 daemon off;
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
31
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
32 events {
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
33 }
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
34
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
35 http {
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
36 %%TEST_GLOBALS_HTTP%%
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
37
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
38 js_import test.js;
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
39
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
40 server {
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
41 listen 127.0.0.1:8080;
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
42 server_name localhost;
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
43
1615
4eb2a82dd9b5 Tests: added njs version check for js ngx tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1611
diff changeset
44 location /njs {
4eb2a82dd9b5 Tests: added njs version check for js ngx tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1611
diff changeset
45 js_content test.njs;
4eb2a82dd9b5 Tests: added njs version check for js ngx tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1611
diff changeset
46 }
4eb2a82dd9b5 Tests: added njs version check for js ngx tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1611
diff changeset
47
1611
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
48 location /log {
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
49 js_content test.log;
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
50 }
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
51 }
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
52 }
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
53
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
54 EOF
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
55
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
56 $t->write_file('test.js', <<EOF);
1615
4eb2a82dd9b5 Tests: added njs version check for js ngx tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1611
diff changeset
57 function test_njs(r) {
4eb2a82dd9b5 Tests: added njs version check for js ngx tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1611
diff changeset
58 r.return(200, njs.version);
4eb2a82dd9b5 Tests: added njs version check for js ngx tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1611
diff changeset
59 }
4eb2a82dd9b5 Tests: added njs version check for js ngx tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1611
diff changeset
60
1611
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
61 function level(r) {
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
62 switch (r.args.level) {
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
63 case 'INFO': return ngx.INFO;
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
64 case 'WARN': return ngx.WARN;
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
65 case 'ERR': return ngx.ERR;
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
66 default:
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
67 throw Error(`Unknown log level:"\${r.args.level}"`);
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
68 }
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
69 }
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
70
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
71 function log(r) {
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
72 ngx.log(level(r), `ngx.log:\${r.args.text}`);
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
73 r.return(200);
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
74 }
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
75
1615
4eb2a82dd9b5 Tests: added njs version check for js ngx tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1611
diff changeset
76 export default {njs: test_njs, log};
1611
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
77
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
78 EOF
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
79
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
80 $t->try_run('no njs ngx')->plan(3);
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
81
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
82 ###############################################################################
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
83
1615
4eb2a82dd9b5 Tests: added njs version check for js ngx tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1611
diff changeset
84 TODO: {
4eb2a82dd9b5 Tests: added njs version check for js ngx tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1611
diff changeset
85 local $TODO = 'not yet'
4eb2a82dd9b5 Tests: added njs version check for js ngx tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1611
diff changeset
86 unless http_get('/njs') =~ /^([.0-9]+)$/m && $1 ge '0.5.0';
4eb2a82dd9b5 Tests: added njs version check for js ngx tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1611
diff changeset
87
1611
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
88 http_get('/log?level=INFO&text=FOO');
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
89 http_get('/log?level=WARN&text=BAR');
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
90 http_get('/log?level=ERR&text=BAZ');
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
91
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
92 $t->stop();
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
93
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
94 like($t->read_file('error.log'), qr/\[info\].*ngx.log:FOO/, 'ngx.log info');
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
95 like($t->read_file('error.log'), qr/\[warn\].*ngx.log:BAR/, 'ngx.log warn');
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
96 like($t->read_file('error.log'), qr/\[error\].*ngx.log:BAZ/, 'ngx.log err');
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
97
1615
4eb2a82dd9b5 Tests: added njs version check for js ngx tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1611
diff changeset
98 }
4eb2a82dd9b5 Tests: added njs version check for js ngx tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1611
diff changeset
99
1611
dbeb4c896f7e Tests: added js tests for ngx object.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
100 ###############################################################################