comparison stream_udp_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 b9e42c554ba7
children 882267679006
comparison
equal deleted inserted replaced
951:9361c7eddfc1 952:e9064d691790
37 proxy_responses 1; 37 proxy_responses 1;
38 proxy_timeout 1s; 38 proxy_timeout 1s;
39 39
40 upstream u { 40 upstream u {
41 least_conn; 41 least_conn;
42 server 127.0.0.1:8081; 42 server 127.0.0.1:%%PORT_1_UDP%%;
43 server 127.0.0.1:8082; 43 server 127.0.0.1:%%PORT_2_UDP%%;
44 } 44 }
45 45
46 server { 46 server {
47 listen 127.0.0.1:8080 udp; 47 listen 127.0.0.1:%%PORT_0_UDP%% udp;
48 proxy_pass u; 48 proxy_pass u;
49 } 49 }
50 } 50 }
51 51
52 EOF 52 EOF
53 53
54 $t->run_daemon(\&udp_daemon, 8081, $t); 54 $t->run_daemon(\&udp_daemon, port(1), $t);
55 $t->run_daemon(\&udp_daemon, 8082, $t); 55 $t->run_daemon(\&udp_daemon, port(2), $t);
56 $t->try_run('no stream udp')->plan(2); 56 $t->try_run('no stream udp')->plan(2);
57 57
58 $t->waitforfile($t->testdir . '/8081'); 58 $t->waitforfile($t->testdir . '/' . port(1));
59 $t->waitforfile($t->testdir . '/8082'); 59 $t->waitforfile($t->testdir . '/' . port(2));
60 60
61 ############################################################################### 61 ###############################################################################
62 62
63 is(many('.', 10), '8081: 5, 8082: 5', 'balanced'); 63 my @ports = my ($port1, $port2) = (port(1), port(2));
64
65 is(many(10), "$port1: 5, $port2: 5", 'balanced');
64 66
65 my @sockets; 67 my @sockets;
66 for (1 .. 2) { 68 for (1 .. 2) {
67 my $s = dgram(); 69 my $s = dgram();
68 $s->write('w'); 70 $s->write('w');
69 push @sockets, $s; 71 push @sockets, $s;
70 } 72 }
71 73
72 select undef, undef, undef, 0.2; 74 select undef, undef, undef, 0.2;
73 75
74 is(many('.', 10), '8082: 10', 'least_conn'); 76 is(many(10), "$port2: 10", 'least_conn');
75 77
76 ############################################################################### 78 ###############################################################################
77 79
78 sub many { 80 sub many {
79 my ($data, $count, %opts) = @_; 81 my ($count) = @_;
80 my (%ports); 82 my (%ports);
81 83
82 for (1 .. $count) { 84 for (1 .. $count) {
83 if (dgram()->io($data) =~ /(\d+)/) { 85 if (dgram()->io('.') =~ /(\d+)/) {
84 $ports{$1} = 0 unless defined $ports{$1}; 86 $ports{$1} = 0 unless defined $ports{$1};
85 $ports{$1}++; 87 $ports{$1}++;
86 } 88 }
87 } 89 }
88 90
89 return join ', ', map { $_ . ": " . $ports{$_} } sort keys %ports; 91 my @keys = map { my $p = $_; grep { $p == $_ } keys %ports } @ports;
92 return join ', ', map { $_ . ": " . $ports{$_} } @keys;
90 } 93 }
91 94
92 ############################################################################### 95 ###############################################################################
93 96
94 sub udp_daemon { 97 sub udp_daemon {
109 while (1) { 112 while (1) {
110 $server->recv(my $buffer, 65536); 113 $server->recv(my $buffer, 65536);
111 114
112 my $port = $server->sockport(); 115 my $port = $server->sockport();
113 116
114 if ($buffer =~ /w/ && $port == 8081) { 117 if ($buffer =~ /w/ && $port == port(1)) {
115 select undef, undef, undef, 2.5; 118 select undef, undef, undef, 2.5;
116 } 119 }
117 120
118 $buffer = $port; 121 $buffer = $port;
119 122