Mercurial > hg > nginx-tests
comparison stream_upstream.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 |
---|---|
35 events { | 35 events { |
36 } | 36 } |
37 | 37 |
38 stream { | 38 stream { |
39 upstream u { | 39 upstream u { |
40 server 127.0.0.1:8087; | 40 server 127.0.0.1:%%PORT_4%%; |
41 server 127.0.0.1:8088; | 41 server 127.0.0.1:%%PORT_5%%; |
42 } | 42 } |
43 | 43 |
44 upstream u2 { | 44 upstream u2 { |
45 server 127.0.0.1:8089 down; | 45 server 127.0.0.1:%%PORT_6%% down; |
46 server 127.0.0.1:8089; | 46 server 127.0.0.1:%%PORT_6%%; |
47 server 127.0.0.1:8087; | 47 server 127.0.0.1:%%PORT_4%%; |
48 server 127.0.0.1:8088; | 48 server 127.0.0.1:%%PORT_5%%; |
49 } | 49 } |
50 | 50 |
51 upstream u3 { | 51 upstream u3 { |
52 server 127.0.0.1:8087; | 52 server 127.0.0.1:%%PORT_4%%; |
53 server 127.0.0.1:8088 weight=2; | 53 server 127.0.0.1:%%PORT_5%% weight=2; |
54 } | 54 } |
55 | 55 |
56 upstream u4 { | 56 upstream u4 { |
57 server 127.0.0.1:8089; | 57 server 127.0.0.1:%%PORT_6%%; |
58 server 127.0.0.1:8087 backup; | 58 server 127.0.0.1:%%PORT_4%% backup; |
59 } | 59 } |
60 | 60 |
61 proxy_connect_timeout 1s; | 61 proxy_connect_timeout 1s; |
62 | 62 |
63 server { | 63 server { |
64 listen 127.0.0.1:8081; | 64 listen 127.0.0.1:%%PORT_0%%; |
65 proxy_pass u; | 65 proxy_pass u; |
66 } | 66 } |
67 | 67 |
68 server { | 68 server { |
69 listen 127.0.0.1:8082; | 69 listen 127.0.0.1:%%PORT_1%%; |
70 proxy_pass u2; | 70 proxy_pass u2; |
71 } | 71 } |
72 | 72 |
73 server { | 73 server { |
74 listen 127.0.0.1:8083; | 74 listen 127.0.0.1:%%PORT_2%%; |
75 proxy_pass u3; | 75 proxy_pass u3; |
76 } | 76 } |
77 | 77 |
78 server { | 78 server { |
79 listen 127.0.0.1:8084; | 79 listen 127.0.0.1:%%PORT_3%%; |
80 proxy_pass u4; | 80 proxy_pass u4; |
81 } | 81 } |
82 } | 82 } |
83 | 83 |
84 EOF | 84 EOF |
85 | 85 |
86 $t->run_daemon(\&stream_daemon, 8087); | 86 $t->run_daemon(\&stream_daemon, port(4)); |
87 $t->run_daemon(\&stream_daemon, 8088); | 87 $t->run_daemon(\&stream_daemon, port(5)); |
88 $t->run(); | 88 $t->run(); |
89 | 89 |
90 $t->waitforsocket('127.0.0.1:8087'); | 90 $t->waitforsocket('127.0.0.1:' . port(4)); |
91 $t->waitforsocket('127.0.0.1:8088'); | 91 $t->waitforsocket('127.0.0.1:' . port(5)); |
92 | 92 |
93 ############################################################################### | 93 ############################################################################### |
94 | 94 |
95 is(many('.', 30, peer => '127.0.0.1:8081'), '8087: 15, 8088: 15', 'balanced'); | 95 my @ports = my ($port4, $port5) = (port(4), port(5)); |
96 is(many('.', 30, peer => '127.0.0.1:8082'), '8087: 15, 8088: 15', 'failures'); | 96 |
97 is(many('.', 30, peer => '127.0.0.1:8083'), '8087: 10, 8088: 20', 'weight'); | 97 is(many(30, port(0)), "$port4: 15, $port5: 15", 'balanced'); |
98 is(many('.', 30, peer => '127.0.0.1:8084'), '8087: 30', 'backup'); | 98 is(many(30, port(1)), "$port4: 15, $port5: 15", 'failures'); |
99 is(many(30, port(2)), "$port4: 10, $port5: 20", 'weight'); | |
100 is(many(30, port(3)), "$port4: 30", 'backup'); | |
99 | 101 |
100 ############################################################################### | 102 ############################################################################### |
101 | 103 |
102 sub many { | 104 sub many { |
103 my ($data, $count, %opts) = @_; | 105 my ($count, $port) = @_; |
104 my (%ports, $peer); | 106 my (%ports); |
105 | |
106 $peer = $opts{peer}; | |
107 | 107 |
108 for (1 .. $count) { | 108 for (1 .. $count) { |
109 if (stream($peer)->io($data) =~ /(\d+)/) { | 109 if (stream("127.0.0.1:$port")->io('.') =~ /(\d+)/) { |
110 $ports{$1} = 0 unless defined $ports{$1}; | 110 $ports{$1} = 0 unless defined $ports{$1}; |
111 $ports{$1}++; | 111 $ports{$1}++; |
112 } | 112 } |
113 } | 113 } |
114 | 114 |
115 return join ', ', map { $_ . ": " . $ports{$_} } sort keys %ports; | 115 my @keys = map { my $p = $_; grep { $p == $_ } keys %ports } @ports; |
116 return join ', ', map { $_ . ": " . $ports{$_} } @keys; | |
116 } | 117 } |
117 | 118 |
118 ############################################################################### | 119 ############################################################################### |
119 | 120 |
120 sub stream_daemon { | 121 sub stream_daemon { |