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