Provided by: libtest2-harness-perl_1.000155-1_all bug

NAME

       Test2::Harness::Auditor::TimeTracker - Module that tracks timing data while an event
       stream is processed.

DESCRIPTION

       The timetracker module tracks timing data of an event stream. All events for a given job
       should be run through a timetracker, which can then give data on how long the test took in
       each of several stages.

       startup - Time from launch to first test event.
       events - Time spent generating test events.
       cleanup - Time from last test event to test exit.
       total - Total time.

SYNOPSIS

           use Test2::Harness::Auditor::TimeTracker;

           my $tracker = Test2::Harness::Auditor::TimeTracker->new();

           my $assert_count = 0;
           for my $event (@events) {
               my $facet_data = $events->facet_data;
               $assert_count++ if $facet_data->{assert};
               $tracker->process($event, $facet_data, $assert_count);
           }

           print $tracker->summary;
           # Startup: 0.00708s | Events: 0.00000s | Cleanup: 0.10390s | Total: 0.11098s

METHODS

       $tracker->process($event, $facet_data, $assert_count)
       $tracker->process($event, undef, $assert_count)
           TimeTracker builds its state from multiple events, each event should be processed by
           this method.

           The second argument is optional, if no facet_data is provided it will pull the
           facet_data from the event itself. This is mainly a micro-optimization to avoid calling
           the "facet_data()" method on the event multiple times if you have already called it.

       $bool = $tracker->useful()
           Returns true if there is any useful data to display.

       $totals = $tracker->totals()
           Returns the totals like this:

               {
                   # Raw numbers
                   startup => ...,
                   events  => ...,
                   cleanup => ...,
                   total   => ...,

                   # Human friendly versions
                   h_startup => ...,
                   h_events  => ...,
                   h_cleanup => ...,
                   h_total   => ...,
               }

       $source = $tracker->source()
           This method returns the data from which the totals are derived.

               {
                   start => ...,    # timestamp of the job starting
                   stop  => ...,    # timestamp of the job ending
                   first => ...,    # timestamp of the first non-harness event
                   last  => ...,    # timestamp of the last non-harness event

                   # These are event_id's of the events that provided the above stamps.
                   start_id    => ...,
                   stop_id     => ...,
                   first_id    => ...,
                   last_id     => ...,
                   complete_id => ...,
               }

       $data = $tracker->data_dump
           This dumps the totals and source data:

               {
                   totals => $tracker->totals,
                   source => $tracker->source,
               }

       $string = $tracker->summary
           This produces a summary string of the totals data:

               Startup: 0.00708s | Events: 0.00000s | Cleanup: 0.10390s | Total: 0.11098s

           Fields that have no data will be ommited from the string.

       $table = $tracker->table
           Returns this structure that is good for use in Term::Table.

               {
                   header => ["Phase", "Time", "Raw", "Explanation"],
                   rows   => [
                       ['startup', $human_readible, $raw, "Time from launch to first test event."],
                       ['events',  $human_radible,  $raw, 'Time spent generating test events.'],
                       ['cleanup', $human_radible,  $raw, 'Time from last test event to test exit.'],
                       ['total',   $human_radible,  $raw, 'Total time.'],
                   ],
               }

       @items = $tracker->job_fields()
           This is used to obtain extra data to attach to the job completion event.

SOURCE

       The source code repository for Test2-Harness can be found at
       http://github.com/Test-More/Test2-Harness/.

MAINTAINERS

       Chad Granum <exodist@cpan.org>

AUTHORS

       Chad Granum <exodist@cpan.org>

COPYRIGHT

       Copyright 2020 Chad Granum <exodist7@gmail.com>.

       This program is free software; you can redistribute it and/or modify it under the same
       terms as Perl itself.

       See http://dev.perl.org/licenses/