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 )