annotate split_clients.t @ 1248:70192b1baf01

Tests: added exception test to stream_js.t using 'require'. The stream js tests introduced in edf5a3c9e36a fail on njs 0.1.14. It doesn't currently provide an easy way to check its version, whilst we are obligated to gracefully handle such cases somehow. With such an addition of 'require', now the tests are skipped instead on the previous versions.
author Sergey Kandaurov <pluknet@nginx.com>
date Tue, 21 Nov 2017 13:16:39 +0300
parents 882267679006
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
348
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
2
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
3 # (C) Sergey Kandaurov
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
5
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
6 # Tests for split_client module.
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
7
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
8 ###############################################################################
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
9
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
10 use warnings;
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
11 use strict;
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
12
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
13 use Test::More;
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
14
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
16
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
17 use lib 'lib';
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
18 use Test::Nginx;
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
19
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
20 ###############################################################################
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
21
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
22 select STDERR; $| = 1;
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
23 select STDOUT; $| = 1;
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
24
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
25 my $t = Test::Nginx->new()->has(qw/http split_clients/)->plan(1);
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
26
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
27 $t->write_file_expand('nginx.conf', <<'EOF');
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
28
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
29 %%TEST_GLOBALS%%
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
30
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
31 daemon off;
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
32
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
33 events {
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
34 }
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
35
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
36 http {
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
37 %%TEST_GLOBALS_HTTP%%
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
38
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
39 split_clients $connection $variant {
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
40 51.2% ".one";
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
41 10% ".two";
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
42 * ".three";
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
43 }
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
44
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
45 server {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
46 listen 127.0.0.1:8080;
348
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
47 server_name localhost;
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
48
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
49 location / {
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
50 index index${variant}.html;
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
51 }
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
52 }
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
53 }
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
54
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
55 EOF
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
56
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
57 $t->write_file('index.one.html', 'first');
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
58 $t->write_file('index.two.html', 'second');
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
59 $t->write_file('index.three.html', 'third');
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
60
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
61 $t->run();
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
62
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
63 ###############################################################################
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
64
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
65 # NB: split_clients distribution is a subject to implementation details
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
66
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
67 like(many('/', 20), qr/first: 12, second: 2, third: 6/, 'split');
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
68
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
69 ###############################################################################
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
70
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
71 sub many {
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
72 my ($uri, $count) = @_;
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
73 my %dist;
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
74
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
75 for (1 .. $count) {
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
76 if (http_get($uri) =~ /(first|second|third)/) {
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
77 $dist{$1} = 0 unless defined $dist{$1};
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
78 $dist{$1}++;
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
79 }
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
80 }
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
81
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
82 return join ', ', map { $_ . ": " . $dist{$_} } sort keys %dist;
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
83 }
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
84
08bb2b3785a2 Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
85 ###############################################################################