1use Test::More; 2use Test::Deep; 3use Test::Exception; 4use Search::Elasticsearch; 5use lib 't/lib'; 6use MockCxn qw(mock_static_client); 7 8our $t; 9 10# good request 11$t = mock_static_client( 12 { nodes => ['one'] }, # 13 { node => 1, ping => 1 }, # 14 { node => 1, code => '200', content => 1 } 15); 16 17ok $t->perform_request, 'Simple request'; 18 19# Request error 20$t = mock_static_client( 21 { nodes => ['one'] }, 22 { node => 1, ping => 1 }, 23 { node => 1, code => '404', error => 'NotFound' } 24); 25 26throws_ok { $t->perform_request } qr/Missing/, 'Request error'; 27 28# Timeout error 29$t = mock_static_client( 30 { nodes => ['one'] }, 31 { node => 1, ping => 1 }, 32 { node => 1, code => '509', error => 'Timeout' }, 33 { node => 1, ping => 1 }, 34 { node => 1, code => '200', content => 1 } 35); 36 37throws_ok { $t->perform_request } qr/Timeout/, 'Timeout error'; 38ok $t->perform_request, 'Timeout resolved'; 39 40# Cxn error 41$t = mock_static_client( 42 { nodes => ['one'] }, 43 { node => 1, ping => 1 }, 44 { node => 1, code => '509', error => 'Cxn' }, 45 { node => 1, ping => 1 }, 46 { node => 1, code => '200', content => 1 } 47); 48 49ok $t->perform_request, 'Retried connection error'; 50 51# NoNodes from failure 52$t = mock_static_client( 53 { nodes => ['one'] }, 54 { node => 1, ping => 1 }, 55 { node => 1, code => '509', error => 'Cxn' }, 56 { node => 1, ping => 0 }, 57); 58 59throws_ok { $t->perform_request } qr/NoNodes/, 'Cxn then bad ping'; 60 61# NoNodes reachable 62$t = mock_static_client( 63 { nodes => ['one'] }, # 64 { node => 1, ping => 0 }, 65); 66 67throws_ok { $t->perform_request } qr/NoNodes/, 'Initial bad ping'; 68 69done_testing; 70