comparison stream_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 77359b849cd5
children 882267679006
comparison
equal deleted inserted replaced
951:9361c7eddfc1 952:e9064d691790
37 } 37 }
38 38
39 stream { 39 stream {
40 upstream hash { 40 upstream hash {
41 hash $remote_addr; 41 hash $remote_addr;
42 server 127.0.0.1:8087; 42 server 127.0.0.1:%%PORT_2%%;
43 server 127.0.0.1:8088; 43 server 127.0.0.1:%%PORT_3%%;
44 } 44 }
45 45
46 upstream cons { 46 upstream cons {
47 hash $remote_addr consistent; 47 hash $remote_addr consistent;
48 server 127.0.0.1:8087; 48 server 127.0.0.1:%%PORT_2%%;
49 server 127.0.0.1:8088; 49 server 127.0.0.1:%%PORT_3%%;
50 } 50 }
51 51
52 server { 52 server {
53 listen 127.0.0.1:8081; 53 listen 127.0.0.1:%%PORT_0%%;
54 proxy_pass hash; 54 proxy_pass hash;
55 } 55 }
56 56
57 server { 57 server {
58 listen 127.0.0.1:8082; 58 listen 127.0.0.1:%%PORT_1%%;
59 proxy_pass cons; 59 proxy_pass cons;
60 } 60 }
61 } 61 }
62 62
63 EOF 63 EOF
64 64
65 $t->run_daemon(\&stream_daemon, 8087); 65 $t->run_daemon(\&stream_daemon, port(2));
66 $t->run_daemon(\&stream_daemon, 8088); 66 $t->run_daemon(\&stream_daemon, port(3));
67 $t->run(); 67 $t->run();
68 68
69 $t->waitforsocket('127.0.0.1:8087'); 69 $t->waitforsocket('127.0.0.1:' . port(2));
70 $t->waitforsocket('127.0.0.1:8088'); 70 $t->waitforsocket('127.0.0.1:' . port(3));
71 71
72 ############################################################################### 72 ###############################################################################
73 73
74 is(many('.', 10, peer => '127.0.0.1:8081'), '8088: 10', 'hash'); 74 my @ports = my ($port2, $port3) = (port(2), port(3));
75 is(many('.', 10, peer => '127.0.0.1:8082'), '8088: 10', 'hash consistent'); 75
76 is(many(10, port(0)), "$port3: 10", 'hash');
77 like(many(10, port(1)), qr/($port2|$port3): 10/, 'hash consistent');
76 78
77 ############################################################################### 79 ###############################################################################
78 80
79 sub many { 81 sub many {
80 my ($data, $count, %opts) = @_; 82 my ($count, $port) = @_;
81 my (%ports, $peer); 83 my (%ports);
82
83 $peer = $opts{peer};
84 84
85 for (1 .. $count) { 85 for (1 .. $count) {
86 if (stream($peer)->io($data) =~ /(\d+)/) { 86 if (stream("127.0.0.1:$port")->io('.') =~ /(\d+)/) {
87 $ports{$1} = 0 unless defined $ports{$1}; 87 $ports{$1} = 0 unless defined $ports{$1};
88 $ports{$1}++; 88 $ports{$1}++;
89 } 89 }
90 } 90 }
91 91
92 return join ', ', map { $_ . ": " . $ports{$_} } sort keys %ports; 92 my @keys = map { my $p = $_; grep { $p == $_ } keys %ports } @ports;
93 return join ', ', map { $_ . ": " . $ports{$_} } @keys;
93 } 94 }
94 95
95 ############################################################################### 96 ###############################################################################
96 97
97 sub stream_daemon { 98 sub stream_daemon {