HTTP-MultiGet
view release on metacpan or search on metacpan
t/HTTP-MultiGet.t view on Meta::CPAN
use Modern::Perl;
use Log::LogMethods::Log4perlLogToString;
use Test::More qw(no_plan);
use HTTP::Response;
use HTTP::Headers;
use HTTP::Request;
use Data::Dumper;
use AnyEvent::Loop;
use Scalar::Util qw(looks_like_number);
use AnyEvent::Strict;
use Carp qw(confess);
BEGIN { $SIG{__DIE__} = sub { confess @_ }; }
my $string;
our $class='HTTP::MultiGet';
my $log=LoggerToString($class,$string);
#my $log=LoggerToFh($class,*STDERR,"# $Log::LogMethods::Log4perlLogToString::DEFAULT_LAYOUT");
require_ok($class);
use_ok($class);
my $self=$class->new;
our ($ID,$REQ);
$self->on_create_request_cb(sub { ($ID,$REQ)=@_ });
$self->logger($log);
#$self->max_retry(0);
isa_ok($self,$class);
SKIP: { skip '$ENV{RUN_HTTP_TESTS} Not Set',415 unless $ENV{RUN_HTTP_TESTS};
if(1) {
my $request=HTTP::Request->new(GET=>'http://localhost');
my ($id)=$self->add($request);
cmp_ok($id,'==',$ID,"on_create_request_cb testing");
isa_ok($REQ,$self->SENDER_CLASS) or die diag "$REQ ".$self->SENDER_CLASS;
cmp_ok($id,'==',1,'First request id should be 1');
my $result=$self->has_request($id);
isa_ok($result,$self->RESULT_CLASS);
ok($result,'request should exist');
cmp_ok($result->get_data,'eq','in_que','should show as in que');
{
my $result=$self->stack->has_id($id);
isa_ok($result,$self->stack->RESULT_CLASS);
my $request=$result->get_data;
ok($result,'stack should have the request');
my $headers=HTTP::Headers->new(Status=>200,Content_Type=>'text/plain');
my $response=HTTP::Response->new(200,'Ok',$headers);
$response->content('this was a test');
$request->respond_with($response);
{
my $result=$self->block_for_ids($id);
isa_ok($result,$self->RESULT_CLASS);
ok($result,'Result should be true');
is_deeply($result->get_data,{$id=>$self->new_true($response)},'validate our callback flow');
}
}
t/HTTP-MultiGet.t view on Meta::CPAN
}
{
my ($bad_a,$bad_b,@results)=$self->get_results(@ids);
my ($id_a,$id_b,@ids)=@ids;
foreach my $response (@results) {
my $id=shift @ids;
isa_ok($response,'HTTP::Response');
cmp_ok($response->code,'==',200,"Testing id: $id Should get code 200");
}
{
my @ids=($id_a,$id_b);
foreach my $response ($bad_a,$bad_b) {
isa_ok($response,'HTTP::Response');
my $id=shift @ids;
cmp_ok($response->code,'==',500,"Negative Testing id: $id Should get code 500");
}
}
}
cmp_ok(scalar(keys %{$self->results}),'==',0,'Should have 0 results left');
}
{
#$self->max_retry(5);
$self->on_create_request_cb(sub {});
my @ids=$self->add(map { HTTP::Request->new(GET=>'http://localhost:'.(32768 + $_)) } 1 .. 10 );
my @results=$self->block_for_results_by_id(@ids);
foreach my $result (@results) {
isa_ok($result,'HTTP::Response');
}
}
$self->clean_results;
ok('Clean results shoudld not cause an error');
cmp_ok(scalar(keys %{$self->results}),'==',0,'Should have no local results!');
$self=test->new();
OUR_LOOP: {
my @requests=(map { HTTP::Request->new(GET=>'http://localhost:6503') } (1 .. 2));
$self->add(@requests);
isa_ok($self,'test');
$self->run_next;
AnyEvent::Loop::run;
}
{
my $results=$self->results;
my $total=0;
while(my ($id,$result)=each %{$results}) {
++$total;
ok($result,'Result should be true');
isa_ok($result,'Data::Result');
isa_ok($result->get_data,'HTTP::Response');
}
}
{
package test;
use Modern::Perl;
use Moo;
BEGIN { extends 'HTTP::MultiGet'; }
sub que_function {
my ($self,@args)=@_;
my $code=$self->SUPER::que_function(@args);
return sub {
$code->(@_);
$self->log_always("our que count is: ".$self->que_count);
no warnings;
last OUR_LOOP if $self->que_count==0;
};
}
}
}
done_testing;
( run in 0.936 second using v1.01-cache-2.11-cpan-39bf76dae61 )