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 {