AWS-XRay

 view release on metacpan or  search on metacpan

lib/AWS/XRay/Plugin/EC2.pm  view on Meta::CPAN


    $METADATA ||= do {
        my $ua = HTTP::Tiny->new(timeout => 1);

        # get token for IMDSv2
        my $token = do {
            my $res = $ua->request(
                "PUT",
                "$_base_url/api/token", {
                    headers => {
                        'X-aws-ec2-metadata-token-ttl-seconds' => '60',
                    },
                }
            );
            $res->{success} ? $res->{content} : '';
        };
        my $opt = {};
        if ($token ne '') {
            $opt->{headers}->{'X-aws-ec2-metadata-token'} = $token;
        }

t/10_plugin_ec2_v1.t  view on Meta::CPAN

                if ($path eq '/meta-data/instance-id') {
                    return [200, [], ['i-1234567890abcdef0']];
                }
                if ($path eq '/meta-data/placement/availability-zone') {
                    return [200, [], ['ap-northeast-1a']];
                }
                return [404, [], ['Not Found']];
            }
        );
    },
    max_wait => 10, # seconds
);
use AWS::XRay::Plugin::EC2;
$AWS::XRay::Plugin::EC2::_base_url = "http://127.0.0.1:" . $app_server->port;

sub myApp {
    capture "remote1", sub { };
}

AWS::XRay->plugins('AWS::XRay::Plugin::EC2');
AWS::XRay->add_capture("main", "myApp");

t/10_plugin_ec2_v2.t  view on Meta::CPAN

use FindBin;
use lib "$FindBin::Bin/../";

use Test::TCP;
use HTTP::Server::PSGI;
use AWS::XRay qw/ capture /;
use Test::More;
use t::Util qw/ reset segments /;

# mock server of IMDSv2
my $token      = "very-secret";
my $app_server = Test::TCP->new(
    listen => 1,
    code   => sub {
        my $sock   = shift;
        my $server = HTTP::Server::PSGI->new(
            listen_sock => $sock,
        );
        $server->run(
            sub {
                my $env    = shift;

t/10_plugin_ec2_v2.t  view on Meta::CPAN

                    }
                    if ($path eq '/meta-data/placement/availability-zone') {
                        return [200, [], ['ap-northeast-1a']];
                    }
                    return [404, [], ['Not Found']];
                }
                return [405, [], ['Method Not Allowed']];
            }
        );
    },
    max_wait => 10, # seconds
);
use AWS::XRay::Plugin::EC2;
$AWS::XRay::Plugin::EC2::_base_url = "http://127.0.0.1:" . $app_server->port;

sub myApp {
    capture "remote1", sub { };
}

AWS::XRay->plugins('AWS::XRay::Plugin::EC2');
AWS::XRay->add_capture("main", "myApp");



( run in 1.337 second using v1.01-cache-2.11-cpan-39bf76dae61 )