APP-REST-RestTestSuite

 view release on metacpan or  search on metacpan

lib/APP/REST/ParallelMyUA.pm  view on Meta::CPAN

package APP::REST::ParallelMyUA;

use 5.006;
use strict;
use warnings FATAL => 'all';
use Data::Dumper;
use Time::HiRes qw( time sleep );
use Exporter();
use LWP::Parallel::UserAgent qw(:CALLBACK);

use base qw(LWP::Parallel::UserAgent Exporter);
our @EXPORT = @LWP::Parallel::UserAgent::EXPORT_OK;

$|                    = 1;    #make the pipe hot
$Data::Dumper::Indent = 1;

=head1 NAME

APP::REST::ParallelMyUA - 
 provide a subclassed UserAgent to override on_connect, on_failure and
 on_return methods 

=head1 VERSION

Version 0.03

=cut

our $VERSION = '0.03';

=head1 SYNOPSIS

#Quick summary of what the module does.
#Perhaps a little code snippet.

use APP::REST::ParallelMyUA;
my $pua = APP::REST::ParallelMyUA->new();


=head1 SUBROUTINES/METHODS

=head2 new

Object Constructor

=cut

sub new {
    my ( $proto, %args ) = @_;
    my $class = ref($proto) || $proto;
    my $self;

    $self = bless $proto->SUPER::new(%args), $class;
    return $self;
}

=head2 on_connect

redefine methods: on_connect gets called whenever we're about to
make a a connection

=cut

sub on_connect {
    my ( $self, $request, $response, $entry ) = @_;

    #print time,"Connecting to ", $request->url, "\n";
    print STDERR ".";
    $entry->{tick}->{start} = time;
}

=head2 on_failure

on_failure gets called whenever a connection fails right away
(either we timed out, or failed to connect to this address before,
or it's a duplicate). Please note that non-connection based
errors, for example requests for non-existant pages, will NOT call
on_failure since the response from the server will be a well
formed HTTP response!

=cut

sub on_failure {
    my ( $self, $request, $response, $entry ) = @_;
    print "Failed to connect to ", $request->url, "\n\t", $response->code, ", ",
      $response->message, "\n"
      if $response;
}

=head2 on_return

on_return gets called whenever a connection (or its callback)
returns EOF (or any other terminating status code available for
callback functions). Please note that on_return gets called for
any successfully terminated HTTP connection! This does not imply
that the response sent from the server is a success!

=cut

sub on_return {
    my ( $self, $request, $response, $entry ) = @_;
    print ".";

    #print time,"Response got from ", $request->url, "\n";

    $entry->{tick}->{end} = time;

    if ( $response->is_success ) {

#print "\n\nWoa! Request to ",$request->url," returned code ", $response->code,
#   ": ", $response->message, "\n";
#print $response->content;
    } else {



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