1use Test::More; 2use Test::Exception; 3use Search::Elasticsearch; 4use lib 't/lib'; 5use MockCxn qw(mock_static_client); 6 7## One node fails with a Cxn error, then rejoins 8 9my $t = mock_static_client( 10 { nodes => [ 'one', 'two' ] }, 11 12 { node => 1, ping => 1 }, 13 { node => 1, code => 200, content => 1 }, 14 { node => 2, ping => 1 }, 15 { node => 2, code => 200, content => 1 }, 16 { node => 1, code => 509, error => 'Cxn' }, 17 { node => 2, ping => 1 }, 18 { node => 2, code => 200, content => 1 }, 19 { node => 2, code => 200, content => 1 }, 20 21 # force ping on missing node 22 { node => 1, ping => 1 }, 23 { node => 1, code => 200, content => 1 }, 24 { node => 2, code => 200, content => 1 }, 25 { node => 1, code => 200, content => 1 }, 26); 27 28ok $t->perform_request 29 && $t->perform_request 30 && $t->perform_request 31 && $t->perform_request, 32 'One node throws Cxn'; 33 34# force ping on missing node 35$t->cxn_pool->cxns->[0]->next_ping(-1); 36 37ok $t->perform_request && $t->perform_request && $t->perform_request, 38 'Failed node recovers'; 39 40done_testing; 41 42