annotate stream_js.t @ 1021:ebdf239722b9

Tests: relaxed proxy_cache_lock.t nolock tests to fix on Solaris. Assumed that the order of responses being arrived in nolock case may be ignored. An important part of such case is that the only last response should be cached.
author Sergey Kandaurov <pluknet@nginx.com>
date Fri, 02 Sep 2016 12:17:35 +0300
parents 557faa1782e5
children e4974af3fb12
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1003
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
2
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
3 # (C) Andrey Zelenkov
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
5
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
6 # Tests for stream JavaScript module.
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
7
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
8 ###############################################################################
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
9
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
10 use warnings;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
11 use strict;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
12
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
13 use Test::More;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
14
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
16
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
17 use lib 'lib';
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
18 use Test::Nginx;
1005
557faa1782e5 Tests: stream JavaScript test with udp.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1003
diff changeset
19 use Test::Nginx::Stream qw/ dgram stream /;
1003
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
20
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
21 ###############################################################################
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
22
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
23 select STDERR; $| = 1;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
24 select STDOUT; $| = 1;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
25
1005
557faa1782e5 Tests: stream JavaScript test with udp.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1003
diff changeset
26 my $t = Test::Nginx->new()->has(qw/stream stream_return udp/)
1003
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
27 ->write_file_expand('nginx.conf', <<'EOF');
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
28
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
29 %%TEST_GLOBALS%%
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
30
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
31 daemon off;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
32
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
33 events {
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
34 }
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
35
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
36 stream {
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
37 js_set $js_addr js_addr;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
38 js_set $js_var js_var;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
39 js_set $js_log js_log;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
40 js_set $js_unk js_unk;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
41 js_set $js_sess_unk js_sess_unk;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
42
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
43 js_include functions.js;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
44
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
45 server {
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
46 listen 127.0.0.1:8080;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
47 return $js_addr;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
48 }
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
49
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
50 server {
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
51 listen 127.0.0.1:8081;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
52 return $js_log;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
53 }
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
54
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
55 server {
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
56 listen 127.0.0.1:8082;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
57 return $js_var;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
58 }
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
59
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
60 server {
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
61 listen 127.0.0.1:8083;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
62 return $js_unk;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
63 }
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
64
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
65 server {
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
66 listen 127.0.0.1:8084;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
67 return $js_sess_unk;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
68 }
1005
557faa1782e5 Tests: stream JavaScript test with udp.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1003
diff changeset
69
557faa1782e5 Tests: stream JavaScript test with udp.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1003
diff changeset
70 server {
557faa1782e5 Tests: stream JavaScript test with udp.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1003
diff changeset
71 listen 127.0.0.1:%%PORT_8085_UDP%% udp;
557faa1782e5 Tests: stream JavaScript test with udp.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1003
diff changeset
72 return $js_addr;
557faa1782e5 Tests: stream JavaScript test with udp.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1003
diff changeset
73 }
1003
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
74 }
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
75
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
76 EOF
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
77
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
78 $t->write_file('functions.js', <<EOF);
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
79 function js_addr(sess) {
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
80 return 'addr=' + sess.remoteAddress;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
81 }
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
82
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
83 function js_var(sess) {
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
84 return 'variable=' + sess.variables.remote_addr;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
85 }
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
86
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
87 function js_sess_unk(sess) {
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
88 return 'sess_unk=' + sess.unk;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
89 }
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
90
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
91 function js_log(sess) {
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
92 sess.log("SEE-THIS");
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
93 }
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
94 EOF
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
95
1005
557faa1782e5 Tests: stream JavaScript test with udp.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1003
diff changeset
96 $t->try_run('no stream njs available')->plan(7);
1003
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
97
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
98 ###############################################################################
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
99
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
100 is(stream('127.0.0.1:' . port(8080))->read(), 'addr=127.0.0.1',
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
101 'sess.remoteAddress');
1005
557faa1782e5 Tests: stream JavaScript test with udp.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1003
diff changeset
102 is(dgram('127.0.0.1:' . port(8085))->io('.'), 'addr=127.0.0.1',
557faa1782e5 Tests: stream JavaScript test with udp.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1003
diff changeset
103 'sess.remoteAddress udp');
1003
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
104 is(stream('127.0.0.1:' . port(8081))->read(), 'undefined', 'sess.log');
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
105 is(stream('127.0.0.1:' . port(8082))->read(), 'variable=127.0.0.1',
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
106 'sess.variables');
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
107 is(stream('127.0.0.1:' . port(8083))->read(), '', 'stream js unknown function');
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
108 is(stream('127.0.0.1:' . port(8084))->read(), 'sess_unk=undefined', 'sess.unk');
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
109
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
110 $t->stop();
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
111
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
112 ok(index($t->read_file('error.log'), 'SEE-THIS') > 0, 'stream js log');
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
113
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
114 ###############################################################################