Mercurial > hg > nginx-tests
comparison stream_upstream_least_conn.t @ 952:e9064d691790
Tests: converted tests to run in parallel.
author | Andrey Zelenkov <zelenkov@nginx.com> |
---|---|
date | Tue, 21 Jun 2016 16:39:13 +0300 |
parents | 77359b849cd5 |
children | 882267679006 |
comparison
equal
deleted
inserted
replaced
951:9361c7eddfc1 | 952:e9064d691790 |
---|---|
36 } | 36 } |
37 | 37 |
38 stream { | 38 stream { |
39 upstream u { | 39 upstream u { |
40 least_conn; | 40 least_conn; |
41 server 127.0.0.1:8081; | 41 server 127.0.0.1:%%PORT_1%%; |
42 server 127.0.0.1:8082; | 42 server 127.0.0.1:%%PORT_2%%; |
43 } | 43 } |
44 | 44 |
45 server { | 45 server { |
46 listen 127.0.0.1:8080; | 46 listen 127.0.0.1:%%PORT_0%%; |
47 proxy_pass u; | 47 proxy_pass u; |
48 } | 48 } |
49 } | 49 } |
50 | 50 |
51 EOF | 51 EOF |
52 | 52 |
53 $t->run_daemon(\&stream_daemon, 8081); | 53 $t->run_daemon(\&stream_daemon, port(1)); |
54 $t->run_daemon(\&stream_daemon, 8082); | 54 $t->run_daemon(\&stream_daemon, port(2)); |
55 $t->run(); | 55 $t->run(); |
56 | 56 |
57 $t->waitforsocket('127.0.0.1:8081'); | 57 $t->waitforsocket('127.0.0.1:' . port(1)); |
58 $t->waitforsocket('127.0.0.1:8082'); | 58 $t->waitforsocket('127.0.0.1:' . port(2)); |
59 | 59 |
60 ############################################################################### | 60 ############################################################################### |
61 | 61 |
62 is(many('.', 10), '8081: 5, 8082: 5', 'balanced'); | 62 my @ports = my ($port1, $port2) = (port(1), port(2)); |
63 | |
64 is(many(10), "$port1: 5, $port2: 5", 'balanced'); | |
63 | 65 |
64 my @sockets; | 66 my @sockets; |
65 for (1 .. 2) { | 67 for (1 .. 2) { |
66 my $s = stream(); | 68 my $s = stream(); |
67 $s->write('w'); | 69 $s->write('w'); |
68 push @sockets, $s; | 70 push @sockets, $s; |
69 } | 71 } |
70 | 72 |
71 select undef, undef, undef, 0.2; | 73 select undef, undef, undef, 0.2; |
72 | 74 |
73 is(many('.', 10), '8082: 10', 'least_conn'); | 75 is(many(10), "$port2: 10", 'least_conn'); |
74 | 76 |
75 ############################################################################### | 77 ############################################################################### |
76 | 78 |
77 sub many { | 79 sub many { |
78 my ($data, $count, %opts) = @_; | 80 my ($count) = @_; |
79 my (%ports); | 81 my (%ports); |
80 | 82 |
81 for (1 .. $count) { | 83 for (1 .. $count) { |
82 if (stream()->io($data) =~ /(\d+)/) { | 84 if (stream()->io('.') =~ /(\d+)/) { |
83 $ports{$1} = 0 unless defined $ports{$1}; | 85 $ports{$1} = 0 unless defined $ports{$1}; |
84 $ports{$1}++; | 86 $ports{$1}++; |
85 } | 87 } |
86 } | 88 } |
87 | 89 |
88 return join ', ', map { $_ . ": " . $ports{$_} } sort keys %ports; | 90 my @keys = map { my $p = $_; grep { $p == $_ } keys %ports } @ports; |
91 return join ', ', map { $_ . ": " . $ports{$_} } @keys; | |
89 } | 92 } |
90 | 93 |
91 ############################################################################### | 94 ############################################################################### |
92 | 95 |
93 sub stream_daemon { | 96 sub stream_daemon { |
130 | 133 |
131 log2i("$client $buffer"); | 134 log2i("$client $buffer"); |
132 | 135 |
133 my $port = $client->sockport(); | 136 my $port = $client->sockport(); |
134 | 137 |
135 if ($buffer =~ /w/ && $port == 8081) { | 138 if ($buffer =~ /w/ && $port == port(1)) { |
136 Test::Nginx::log_core('||', "$port: sleep(2.5)"); | 139 Test::Nginx::log_core('||', "$port: sleep(2.5)"); |
137 select undef, undef, undef, 2.5; | 140 select undef, undef, undef, 2.5; |
138 } | 141 } |
139 | 142 |
140 $buffer = $port; | 143 $buffer = $port; |