Initial Commit
This commit is contained in:
129
database/perl/vendor/lib/Test2/Plugin/Times.pm
vendored
Normal file
129
database/perl/vendor/lib/Test2/Plugin/Times.pm
vendored
Normal file
@@ -0,0 +1,129 @@
|
||||
package Test2::Plugin::Times;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Test2::Util::Times qw/render_bench render_duration/;
|
||||
|
||||
use Test2::API qw{
|
||||
test2_add_callback_exit
|
||||
};
|
||||
|
||||
use Time::HiRes qw/time/;
|
||||
|
||||
our $VERSION = '0.000139';
|
||||
|
||||
my $ADDED_HOOK = 0;
|
||||
my $START;
|
||||
sub import {
|
||||
return if $ADDED_HOOK++;
|
||||
|
||||
$START = time;
|
||||
test2_add_callback_exit(\&send_time_event);
|
||||
}
|
||||
|
||||
sub send_time_event {
|
||||
my ($ctx, $real, $new) = @_;
|
||||
my $stop = time;
|
||||
my @times = times();
|
||||
|
||||
my $summary = render_bench($START, $stop, @times);
|
||||
my $duration = render_duration($START, $stop);
|
||||
|
||||
my $e = $ctx->send_ev2(
|
||||
about => {package => __PACKAGE__, details => $summary},
|
||||
info => [{tag => 'TIME', details => $summary}],
|
||||
times => {
|
||||
details => $summary,
|
||||
start => $START,
|
||||
stop => $stop,
|
||||
user => $times[0],
|
||||
sys => $times[1],
|
||||
cuser => $times[2],
|
||||
csys => $times[3],
|
||||
},
|
||||
harness_job_fields => [
|
||||
{name => "time_duration", details => $duration},
|
||||
{name => "time_user", details => $times[0]},
|
||||
{name => "time_sys", details => $times[1]},
|
||||
{name => "time_cuser", details => $times[2]},
|
||||
{name => "time_csys", details => $times[3]},
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Test2::Plugin::Times - Output timing data at the end of the test.
|
||||
|
||||
=head1 CAVEAT
|
||||
|
||||
It is important to note that this timing data does not include global
|
||||
destruction. This data is only collected up until the point done_testing() is
|
||||
called. If your program takes time for END blocks, garbage collection, and
|
||||
similar, then this timing data will fall short of reality.
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This plugin will output a diagnostics message at the end of testing that tells
|
||||
you how much time elapsed, and how hard the system worked on the test.
|
||||
|
||||
This will produce a string like one of these (Note these numbers are completely
|
||||
made up). I<Which string is used depends on the time elapsed.>
|
||||
|
||||
0.12345s on wallclock (0.05 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.05 CPU)
|
||||
|
||||
11.1234s on wallclock (0.05 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.05 CPU)
|
||||
|
||||
01m:54.45s on wallclock (0.05 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.05 CPU)
|
||||
|
||||
18h:22m:54.45s on wallclock (0.05 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.05 CPU)
|
||||
|
||||
04d:18h:22m:54.45s on wallclock (0.05 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.05 CPU)
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use Test2::Plugin::Times;
|
||||
|
||||
This is also useful at the command line for 1-time use:
|
||||
|
||||
$ perl -MTest2::Plugin::Times path/to/test.t
|
||||
|
||||
=head1 SOURCE
|
||||
|
||||
The source code repository for Test2-Suite can be found at
|
||||
F<https://github.com/Test-More/Test2-Suite/>.
|
||||
|
||||
=head1 MAINTAINERS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the same terms as Perl itself.
|
||||
|
||||
See F<http://dev.perl.org/licenses/>
|
||||
|
||||
=cut
|
||||
Reference in New Issue
Block a user