1use Test::More; 2use Test::Exception; 3use Search::Elasticsearch; 4use lib 't/lib'; 5use MockCxn qw(mock_sniff_client); 6 7## Nodes initially unavailable 8 9my $t = mock_sniff_client( 10 { nodes => [ 'one', 'two' ] }, 11 12 { node => 1, sniff => [], error => 'Cxn', code => 509 }, 13 { node => 2, sniff => [], error => 'Cxn', code => 509 }, 14 15 # NoNodes 16 17 { node => 3, sniff => [], error => 'Cxn', code => 509 }, 18 { node => 4, sniff => [], error => 'Cxn', code => 509 }, 19 20 # NoNodes 21 22 { node => 5, sniff => ['one'] }, 23 { node => 6, code => 200, content => 1 }, 24 { node => 6, code => 200, content => 1 }, 25 26 # force sniff 27 { node => 6, sniff => [ 'one', 'two' ] }, 28 { node => 7, code => 200, content => 1 }, 29 { node => 8, code => 200, content => 1 }, 30 31); 32 33ok !eval { $t->perform_request } 34 && $@ =~ /NoNodes/ 35 && !eval { $t->perform_request } 36 && $@ =~ /NoNodes/ 37 && $t->perform_request 38 && $t->perform_request 39 && $t->cxn_pool->schedule_check 40 && $t->perform_request 41 && $t->perform_request, 42 'Sniff unavailable nodes while starting up'; 43 44done_testing; 45