Mercurial > hg > nginx-tests
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 |
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 ############################################################################### |