File Coverage

blib/lib/Devel/KYTProf/Logger/XRay.pm
Criterion Covered Total %
statement 31 33 93.9
branch 3 6 50.0
condition n/a
subroutine 8 8 100.0
pod 0 1 0.0
total 42 48 87.5


line stmt bran cond sub pod time code
1             package Devel::KYTProf::Logger::XRay;
2              
3 2     2   104706 use 5.012000;
  2         17  
4 2     2   10 use strict;
  2         4  
  2         53  
5 2     2   11 use warnings;
  2         4  
  2         62  
6              
7 2     2   467 use AWS::XRay;
  2         33419  
  2         84  
8 2     2   963 use Devel::KYTProf;
  2         30610  
  2         17  
9 2     2   77 use Time::HiRes();
  2         4  
  2         489  
10              
11             our $VERSION = "0.03";
12              
13             sub log {
14 1     1 0 1005557 my ($class, %args) = @_;
15              
16 1 50       5 return if !$AWS::XRay::ENABLED;
17              
18             AWS::XRay::capture $args{module}, sub {
19 1     1   142 my $segment = shift;
20 1         6 my $elapsed = $args{time} / 1000; # msec -> sec
21 1         4 my $end = Time::HiRes::time();
22 1         3 my $start = $end - $elapsed;
23 1         3 $segment->{start_time} = $start;
24 1         4 $segment->{end_time} = $end;
25              
26 1         3 my $data = $args{data};
27 1         3 $segment->{metadata} = $data;
28 1 50       8 if (exists $data->{http_method}) {
    50          
29             $segment->{http} = {
30             request => {
31             method => $data->{http_method},
32             url => $data->{http_url},
33             },
34 0         0 };
35             }
36             elsif (exists $data->{sql}) {
37             $segment->{sql} = {
38             sanitized_query => delete $data->{sql},
39 0         0 };
40             }
41 1         4 for my $n (qw/method package file line/) {
42 4         14 $segment->{metadata}->{$n} = $args{$n};
43             }
44             }
45 1         14 }
46              
47             1;
48             __END__