Mercurial > hg > nginx-tests
comparison stream_udp_upstream_hash.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 |
---|---|
38 proxy_responses 1; | 38 proxy_responses 1; |
39 proxy_timeout 1s; | 39 proxy_timeout 1s; |
40 | 40 |
41 upstream hash { | 41 upstream hash { |
42 hash $remote_addr; | 42 hash $remote_addr; |
43 server 127.0.0.1:8087; | 43 server 127.0.0.1:%%PORT_2_UDP%%; |
44 server 127.0.0.1:8088; | 44 server 127.0.0.1:%%PORT_3_UDP%%; |
45 } | 45 } |
46 | 46 |
47 upstream cons { | 47 upstream cons { |
48 hash $remote_addr consistent; | 48 hash $remote_addr consistent; |
49 server 127.0.0.1:8087; | 49 server 127.0.0.1:%%PORT_2_UDP%%; |
50 server 127.0.0.1:8088; | 50 server 127.0.0.1:%%PORT_3_UDP%%; |
51 } | 51 } |
52 | 52 |
53 server { | 53 server { |
54 listen 127.0.0.1:8081 udp; | 54 listen 127.0.0.1:%%PORT_0_UDP%% udp; |
55 proxy_pass hash; | 55 proxy_pass hash; |
56 } | 56 } |
57 | 57 |
58 server { | 58 server { |
59 listen 127.0.0.1:8082 udp; | 59 listen 127.0.0.1:%%PORT_1_UDP%% udp; |
60 proxy_pass cons; | 60 proxy_pass cons; |
61 } | 61 } |
62 } | 62 } |
63 | 63 |
64 EOF | 64 EOF |
65 | 65 |
66 $t->run_daemon(\&udp_daemon, 8087, $t); | 66 $t->run_daemon(\&udp_daemon, port(2), $t); |
67 $t->run_daemon(\&udp_daemon, 8088, $t); | 67 $t->run_daemon(\&udp_daemon, port(3), $t); |
68 $t->try_run('no stream udp')->plan(2); | 68 $t->try_run('no stream udp')->plan(2); |
69 | 69 |
70 $t->waitforfile($t->testdir . '/8087'); | 70 $t->waitforfile($t->testdir . '/' . port(2)); |
71 $t->waitforfile($t->testdir . '/8088'); | 71 $t->waitforfile($t->testdir . '/' . port(3)); |
72 | 72 |
73 ############################################################################### | 73 ############################################################################### |
74 | 74 |
75 is(many('.', 10, peer => '127.0.0.1:8081'), '8088: 10', 'hash'); | 75 my @ports = my ($port2, $port3) = (port(2), port(3)); |
76 is(many('.', 10, peer => '127.0.0.1:8082'), '8088: 10', 'hash consistent'); | 76 |
77 is(many(10, port(0)), "$port3: 10", 'hash'); | |
78 like(many(10, port(1)), qr/($port2|$port3): 10/, 'hash consistent'); | |
77 | 79 |
78 ############################################################################### | 80 ############################################################################### |
79 | 81 |
80 sub many { | 82 sub many { |
81 my ($data, $count, %opts) = @_; | 83 my ($count, $port) = @_; |
82 my (%ports, $peer); | 84 my (%ports); |
83 | |
84 $peer = $opts{peer}; | |
85 | 85 |
86 for (1 .. $count) { | 86 for (1 .. $count) { |
87 if (dgram($peer)->io($data) =~ /(\d+)/) { | 87 if (dgram("127.0.0.1:$port")->io('.') =~ /(\d+)/) { |
88 $ports{$1} = 0 unless defined $ports{$1}; | 88 $ports{$1} = 0 unless defined $ports{$1}; |
89 $ports{$1}++; | 89 $ports{$1}++; |
90 } | 90 } |
91 } | 91 } |
92 | 92 |
93 return join ', ', map { $_ . ": " . $ports{$_} } sort keys %ports; | 93 my @keys = map { my $p = $_; grep { $p == $_ } keys %ports } @ports; |
94 return join ', ', map { $_ . ": " . $ports{$_} } @keys; | |
94 } | 95 } |
95 | 96 |
96 ############################################################################### | 97 ############################################################################### |
97 | 98 |
98 sub udp_daemon { | 99 sub udp_daemon { |