File Coverage

blib/lib/AWS/XRay/Plugin/EC2.pm
Criterion Covered Total %
statement 24 24 100.0
branch 2 4 50.0
condition 1 3 33.3
subroutine 5 5 100.0
pod 0 1 0.0
total 32 37 86.4


line stmt bran cond sub pod time code
1             package AWS::XRay::Plugin::EC2;
2 1     1   519 use strict;
  1         3  
  1         28  
3 1     1   5 use warnings;
  1         2  
  1         23  
4              
5 1     1   700 use HTTP::Tiny;
  1         28133  
  1         45  
6              
7             use constant {
8 1         211 ID_ADDR => 'http://169.254.169.254/latest/meta-data/instance-id',
9             AZ_ADDR => 'http://169.254.169.254/latest/meta-data/placement/availability-zone',
10 1     1   8 };
  1         2  
11              
12             our $METADATA;
13              
14             sub apply_plugin {
15 1     1 0 3 my ($class, $segment) = @_;
16              
17 1   33     4 $METADATA ||= do {
18 1         5 my $ua = HTTP::Tiny->new(timeout => 1);
19              
20 1         156 my $instance_id = do {
21 1         24 my $res = $ua->get(ID_ADDR);
22 1 50       1002857 $res->{success} ? $res->{content} : '';
23             };
24 1         4 my $az = do {
25 1         84 my $res = $ua->get(AZ_ADDR);
26 1 50       1002669 $res->{success} ? $res->{content} : '';
27             };
28              
29             +{
30 1         31 instance_id => $instance_id,
31             availability_zone => $az,
32             };
33             };
34              
35 1         6 $segment->{origin} = 'AWS::EC2::Instance';
36 1         12 $segment->{aws}->{ec2} = $METADATA;
37             }
38              
39             1;