Mercurial > hg > nginx-tests
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 |