App-livehttperf
view release on metacpan or search on metacpan
lib/App/livehttperf.pm view on Meta::CPAN
unless exists $stats{$concurrency}->{recs}->{$rec_no};
$stats{$concurrency}->{recs}->{$rec_no}->add_data(
@{ $data->{recs}->{$rec_no} }
);
}
}
});
for my $tid ( 1 .. $concurrency ) {
LOG "Starting thread $tid" if INFO;
$pm->start($tid) and next;
my $failed_requests = 0;
my $successful_requests = 0;
my %req_stats = (
reqs => Statistics::Descriptive::Full->new(),
recs => {},
counts => {},
);
my @req_stats_data;
lib/App/livehttperf.pm view on Meta::CPAN
my $bytes_recv = 0;
my %rec_errors;
my %res_statuses = (
'1xx' => 0,
'2xx' => 0,
'3xx' => 0,
'4xx' => 0,
'5xx' => 0,
);
for my $no ( 1 .. $OPTS{repeat} ) {
LOG "Starting run $no (thread $tid)" if INFO;
# create brand new UA for each loop
my $ua = LWP::UserAgent->new(
(
$OPTS{reuse_cookies} ?
()
:
( cookie_jar => {} )
),
%ua_opts
lib/App/livehttperf.pm view on Meta::CPAN
}
}
if ( TRACE ) {
LOG " Exception: $err" if $err;
}
} else {
$successful_requests++;
LOG "[$tid.$no.$rec_no] RES: ", $res->status_line if DEBUG;
}
}
LOG "\nFinished run $no (thread $tid)" if INFO;
}
$req_stats{reqs} = [];
for my $rec_no ( keys %rec_stats_data ) {
for ( my $i = 0; $i < @{ $rec_stats_data{$rec_no} }; $i++ ) {
# total time of all requests in given run $no
$req_stats{reqs}->[$i] += $rec_stats_data{$rec_no}->[$i];
}
}
$req_stats{recs} = { %rec_stats_data };
$req_stats{errors} = { %rec_errors };
$req_stats{counts} = {
successful_requests => $successful_requests,
bytes_sent => $bytes_sent,
bytes_recv => $bytes_recv,
%res_statuses,
};
LOG "\nFinished thread $tid" if INFO;
$pm->finish($failed_requests, \%req_stats);
}
$pm->wait_all_children;
LOG "\nFinished testing concurrency $concurrency" if INFO;
}
$elapsed_time = tv_interval( $test_started );
}
( run in 0.255 second using v1.01-cache-2.11-cpan-3cd7ad12f66 )