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;