Mercurial > hg > nginx-tests
diff upstream_hash.t @ 1481:06fbf6269f38
Tests: upstream hash tests for round-robin fallback on empty key.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Tue, 28 May 2019 16:25:34 +0300 |
parents | 766bcbb632ee |
children | 5ac6efbe5552 |
line wrap: on
line diff
--- a/upstream_hash.t Thu May 23 17:58:42 2019 +0300 +++ b/upstream_hash.t Tue May 28 16:25:34 2019 +0300 @@ -22,7 +22,7 @@ select STDERR; $| = 1; select STDOUT; $| = 1; -my $t = Test::Nginx->new()->has(qw/http proxy rewrite upstream_hash/)->plan(13); +my $t = Test::Nginx->new()->has(qw/http proxy rewrite upstream_hash/)->plan(15); $t->write_file_expand('nginx.conf', <<'EOF'); @@ -166,7 +166,7 @@ ############################################################################### -my ($p1, $p2, $p3) = (port(8081), port(8082), port(8083)); +my @ports = my ($p1, $p2, $p3) = (port(8081), port(8082), port(8083)); # Only requests for absent peer are moved to other peers if hash is consistent. # Check this by comparing two upstreams with different number of peers. @@ -178,6 +178,16 @@ like(many('/?a=1', 10), qr/($p1|$p2|$p3): 10/, 'stable hash'); like(many('/c?a=1', 10), qr/($p1|$p2|$p3): 10/, 'stable hash - consistent'); +# fallback to round-robin + +TODO: { +local $TODO = 'not yet' unless $t->has_version('1.17.1'); + +like(many('/?a=', 6), qr/$p1: 2, $p2: 2, $p3: 2/, 'empty key'); +like(many('/c?a=', 6), qr/$p1: 2, $p2: 2, $p3: 2/, 'empty key - consistent'); + +} + my @res = iter('/', 10); is(@res, 10, 'all hashed peers'); @@ -244,7 +254,8 @@ } } - return join ', ', map { $_ . ": " . $ports{$_} } sort keys %ports; + my @keys = map { my $p = $_; grep { $p == $_ } keys %ports } @ports; + return join ', ', map { $_ . ": " . $ports{$_} } @keys; } ###############################################################################