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