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 {