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