File Coverage

blib/lib/Paws/Net/RetryCallerRole.pm
Criterion Covered Total %
statement 21 21 100.0
branch 4 4 100.0
condition n/a
subroutine 4 4 100.0
pod 0 1 0.0
total 29 30 96.6


line stmt bran cond sub pod time code
1             package Paws::Net::RetryCallerRole;
2 11     11   1154511 use Moose::Role;
  11         32  
  11         115  
3 11     11   67518 use Time::HiRes 'sleep';
  11         13167  
  11         54  
4 11     11   7100 use Paws::API::Retry;
  11         65  
  11         3395  
5              
6             sub do_call {
7 89     89 0 375 my ($self, $service, $call_object) = @_;
8            
9             my $tracker = Paws::API::Retry->new(
10 89         259 %{ $service->retry },
  89         2288  
11             max_tries => $service->max_attempts,
12             retry_rules => $service->retriables,
13             );
14              
15 89         265 do {
16 113         651 $tracker->one_more_try;
17              
18 113         906 my ($status, $content, $headers) = $self->send_request($service, $call_object);
19 113         4700 my $result = $self->caller_to_response($service, $call_object, $status, $content, $headers);
20 113         317351 $tracker->operation_result($result);
21              
22 113 100       651 sleep $tracker->sleep_time if($tracker->should_retry);
23             } while ($tracker->should_retry);
24              
25 89 100       358 if ($tracker->result_is_exception){
26 37         950 $tracker->operation_result->throw;
27             } else {
28 52         1247 return $tracker->operation_result;
29             }
30             }
31              
32             requires 'send_request';
33             1;