1use Test::More; 2use Test::Exception; 3use Search::Elasticsearch; 4use lib 't/lib'; 5use MockCxn qw(mock_static_client); 6 7## Runaway nodes (ie wrong HTTP response codes signal node failure, instead of 8## request failure) 9 10my $t = mock_static_client( 11 { nodes => 'one' }, 12 13 { node => 1, ping => 1 }, 14 { node => 1, code => 200, content => 1 }, 15 { node => 1, code => 503, error => 'Unavailable' }, 16 { node => 1, ping => 1 }, 17 { node => 1, code => 503, error => 'Unavailable' }, 18 19 # throw Unavailable: too many retries 20 21 { node => 1, ping => 1 }, 22 { node => 1, code => 503, error => 'Unavailable' }, 23 { node => 1, ping => 1 }, 24 { node => 1, code => 503, error => 'Unavailable' }, 25 26 # throw Unavailable: too many retries 27 28 { node => 1, ping => 1 }, 29 { node => 1, code => 200, content => 1 }, 30 31); 32 33ok $t->perform_request 34 && !eval { $t->perform_request } 35 && $@ =~ /Unavailable/ 36 && !eval { $t->perform_request } 37 && $@ =~ /Unavailable/ 38 && $t->perform_request, 39 "Runaway nodes"; 40 41done_testing; 42