annotate js_return.t @ 1427:eb1d883305ea

Tests: avoid edge cases in upstream random two test. Unavailable servers contribute to the number of attempts, if selected, before the balancer would fall back to the default round-robin method. This means that it's quite possible to get server with more connections. To facilitate with selecting two alive servers, down server was removed from the upstream configuration at the cost of slightly worse coverage.
author Sergey Kandaurov <pluknet@nginx.com>
date Thu, 10 Jan 2019 17:42:34 +0300
parents f168fc46c7a4
children 9d8b100a6ce3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1317
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
2
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
3 # (C) Sergey Kandaurov
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
5
1375
f168fc46c7a4 Tests: renamed JavaScript to njs.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1320
diff changeset
6 # Tests for http njs module, return method.
1317
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
7
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
8 ###############################################################################
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
9
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
10 use warnings;
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
11 use strict;
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
12
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
13 use Test::More;
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
14
1320
8bd4b88fcac5 Tests: TODO js_return.t fail seen with older njs on some platforms.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1317
diff changeset
15 use Config;
8bd4b88fcac5 Tests: TODO js_return.t fail seen with older njs on some platforms.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1317
diff changeset
16
1317
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
17 BEGIN { use FindBin; chdir($FindBin::Bin); }
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
18
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
19 use lib 'lib';
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
20 use Test::Nginx;
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
21
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
22 ###############################################################################
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
23
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
24 select STDERR; $| = 1;
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
25 select STDOUT; $| = 1;
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
26
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
27 my $t = Test::Nginx->new()->has(qw/http/)
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
28 ->write_file_expand('nginx.conf', <<'EOF');
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
29
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
30 %%TEST_GLOBALS%%
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
31
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
32 daemon off;
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
33
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
34 events {
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
35 }
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
36
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
37 http {
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
38 %%TEST_GLOBALS_HTTP%%
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
39
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
40 js_include test.js;
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
41
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
42 server {
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
43 listen 127.0.0.1:8080;
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
44 server_name localhost;
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
45
1320
8bd4b88fcac5 Tests: TODO js_return.t fail seen with older njs on some platforms.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1317
diff changeset
46 location /njs {
8bd4b88fcac5 Tests: TODO js_return.t fail seen with older njs on some platforms.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1317
diff changeset
47 js_content test_njs;
8bd4b88fcac5 Tests: TODO js_return.t fail seen with older njs on some platforms.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1317
diff changeset
48 }
8bd4b88fcac5 Tests: TODO js_return.t fail seen with older njs on some platforms.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1317
diff changeset
49
1317
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
50 location / {
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
51 js_content test_return;
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
52 }
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
53 }
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
54 }
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
55
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
56 EOF
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
57
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
58 $t->write_file('test.js', <<EOF);
1320
8bd4b88fcac5 Tests: TODO js_return.t fail seen with older njs on some platforms.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1317
diff changeset
59 function test_njs(req, res) {
8bd4b88fcac5 Tests: TODO js_return.t fail seen with older njs on some platforms.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1317
diff changeset
60 res.return(200, njs.version);
8bd4b88fcac5 Tests: TODO js_return.t fail seen with older njs on some platforms.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1317
diff changeset
61 }
8bd4b88fcac5 Tests: TODO js_return.t fail seen with older njs on some platforms.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1317
diff changeset
62
1317
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
63 function test_return(req, res) {
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
64 res.return(Number(req.args.c), req.args.t);
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
65 }
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
66
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
67 EOF
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
68
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
69 $t->try_run('no njs return')->plan(5);
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
70
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
71 ###############################################################################
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
72
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
73 like(http_get('/?c=200'), qr/200 OK.*\x0d\x0a?\x0d\x0a?$/s, 'return code');
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
74 like(http_get('/?c=200&t=SEE-THIS'), qr/200 OK.*^SEE-THIS$/ms, 'return text');
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
75 like(http_get('/?c=301&t=path'), qr/ 301 .*Location: path/s, 'return redirect');
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
76 like(http_get('/?c=404'), qr/404 Not.*html/s, 'return error page');
1320
8bd4b88fcac5 Tests: TODO js_return.t fail seen with older njs on some platforms.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1317
diff changeset
77
8bd4b88fcac5 Tests: TODO js_return.t fail seen with older njs on some platforms.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1317
diff changeset
78 TODO: {
8bd4b88fcac5 Tests: TODO js_return.t fail seen with older njs on some platforms.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1317
diff changeset
79 my ($v) = http_get('/njs') =~ /^([.0-9]+)$/m;
8bd4b88fcac5 Tests: TODO js_return.t fail seen with older njs on some platforms.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1317
diff changeset
80 local $TODO = 'not yet' unless $v ge '0.2.1' or $Config{archname} !~ /aarch64/;
8bd4b88fcac5 Tests: TODO js_return.t fail seen with older njs on some platforms.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1317
diff changeset
81
1317
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
82 like(http_get('/?c=inv'), qr/ 500 /, 'return invalid');
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
83
1320
8bd4b88fcac5 Tests: TODO js_return.t fail seen with older njs on some platforms.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1317
diff changeset
84 }
8bd4b88fcac5 Tests: TODO js_return.t fail seen with older njs on some platforms.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1317
diff changeset
85
1317
a05f377bf0ca Tests: added njs return tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
86 ###############################################################################