diff -Nur HTTP-Async-0.30/Makefile.PL HTTP-Async-0.30_mod/Makefile.PL --- HTTP-Async-0.30/Makefile.PL 2015-06-02 02:27:03.000000000 -0400 +++ HTTP-Async-0.30_mod/Makefile.PL 2016-03-14 00:27:17.000000000 -0400 @@ -7,26 +7,6 @@ 'NAME' => 'HTTP::Async', 'VERSION_FROM' => 'lib/HTTP/Async.pm', LICENSE => 'perl', - 'PREREQ_PM' => { - 'Carp' => 0, - 'Data::Dumper' => 0, - 'HTTP::Request' => 0, - 'HTTP::Response' => 0, - 'HTTP::Server::Simple::CGI' => 0, - 'HTTP::Status' => 0, - 'IO::Select' => 0, - 'LWP::UserAgent' => 0, - 'Net::HTTP' => 0, - 'Net::HTTP::NB' => 0, - 'Net::HTTPS::NB' => 0.13, - 'Test::HTTP::Server::Simple' => 0, - 'Test::More' => 0, - 'Test::Fatal' => 0, - 'Time::HiRes' => 0, - 'URI' => 0, - 'URI::Escape' => 0, - 'Net::EmptyPort' => 0, - }, META_MERGE => { resources => { repository => 'https://github.com/evdb/HTTP-Async', diff -Nur HTTP-Async-0.30/MANIFEST HTTP-Async-0.30_mod/MANIFEST --- HTTP-Async-0.30/MANIFEST 2015-09-28 12:13:01.000000000 -0400 +++ HTTP-Async-0.30_mod/MANIFEST 2016-03-14 00:26:47.000000000 -0400 @@ -5,34 +5,6 @@ Makefile.PL MANIFEST This list of files README.md -t/bad-connections.t -t/bad-headers.t -t/bad-hosts.t -t/cookies.t -t/dead-connection.t -t/headers.t -t/invalid-options.t -t/key_aliases.t -t/local-addr.t -t/make-url-absolute.t -t/not-modified.t -t/peer-addr.t -t/pod-coverage.t -t/pod.t -t/polite.t -t/poll-interval.t -t/proxy-with-https.t -t/proxy.t -t/real-servers.t -t/redirects.t -t/release-cpan-changes.t -t/remove.t -t/setup.t -t/strip-host-from-uri.t -t/template.t -t/test-utils.pl -t/TestServer.pm -t/timeout.t TODO META.yml Module YAML meta-data (added by MakeMaker) META.json Module JSON meta-data (added by MakeMaker) diff -Nur HTTP-Async-0.30/META.json HTTP-Async-0.30_mod/META.json --- HTTP-Async-0.30/META.json 2015-09-28 12:13:01.000000000 -0400 +++ HTTP-Async-0.30_mod/META.json 2016-03-14 00:28:28.000000000 -0400 @@ -29,28 +29,6 @@ "requires" : { "ExtUtils::MakeMaker" : "0" } - }, - "runtime" : { - "requires" : { - "Carp" : "0", - "Data::Dumper" : "0", - "HTTP::Request" : "0", - "HTTP::Response" : "0", - "HTTP::Server::Simple::CGI" : "0", - "HTTP::Status" : "0", - "IO::Select" : "0", - "LWP::UserAgent" : "0", - "Net::EmptyPort" : "0", - "Net::HTTP" : "0", - "Net::HTTP::NB" : "0", - "Net::HTTPS::NB" : "0.13", - "Test::Fatal" : "0", - "Test::HTTP::Server::Simple" : "0", - "Test::More" : "0", - "Time::HiRes" : "0", - "URI" : "0", - "URI::Escape" : "0" - } } }, "release_status" : "stable", diff -Nur HTTP-Async-0.30/META.yml HTTP-Async-0.30_mod/META.yml --- HTTP-Async-0.30/META.yml 2015-09-28 12:13:01.000000000 -0400 +++ HTTP-Async-0.30_mod/META.yml 2016-03-14 00:28:52.000000000 -0400 @@ -15,27 +15,7 @@ name: HTTP-Async no_index: directory: - - t - inc -requires: - Carp: '0' - Data::Dumper: '0' - HTTP::Request: '0' - HTTP::Response: '0' - HTTP::Server::Simple::CGI: '0' - HTTP::Status: '0' - IO::Select: '0' - LWP::UserAgent: '0' - Net::EmptyPort: '0' - Net::HTTP: '0' - Net::HTTP::NB: '0' - Net::HTTPS::NB: '0.13' - Test::Fatal: '0' - Test::HTTP::Server::Simple: '0' - Test::More: '0' - Time::HiRes: '0' - URI: '0' - URI::Escape: '0' resources: repository: https://github.com/evdb/HTTP-Async version: '0.30' diff -Nur HTTP-Async-0.30/t/bad-connections.t HTTP-Async-0.30_mod/t/bad-connections.t --- HTTP-Async-0.30/t/bad-connections.t 2014-11-17 10:59:35.000000000 -0500 +++ HTTP-Async-0.30_mod/t/bad-connections.t 1969-12-31 19:00:00.000000000 -0500 @@ -1,25 +0,0 @@ - -use strict; -use warnings; - -use Test::More tests => 5; -use HTTP::Request; - -require 't/TestServer.pm'; -my $s = TestServer->new(); -my $url_root = $s->started_ok("starting a test server"); - -use HTTP::Async; -my $q = HTTP::Async->new; - -my %tests = ( - "$url_root/foo/bar?break_connection=before_headers" => 504, - "$url_root/foo/bar?break_connection=before_content" => 200, -); - -while ( my ( $url, $code ) = each %tests ) { - my $req = HTTP::Request->new( 'GET', $url ); - ok $q->add($req), "Added request to the queue - $url"; - my $res = $q->wait_for_next_response; - is $res->code, $code, "Got a '$code' response"; -} diff -Nur HTTP-Async-0.30/t/bad-headers.t HTTP-Async-0.30_mod/t/bad-headers.t --- HTTP-Async-0.30/t/bad-headers.t 2014-11-17 10:59:35.000000000 -0500 +++ HTTP-Async-0.30_mod/t/bad-headers.t 1969-12-31 19:00:00.000000000 -0500 @@ -1,23 +0,0 @@ - -use strict; -use warnings; - -use Test::More tests => 3; -use HTTP::Request; - -require 't/TestServer.pm'; -my $s = TestServer->new(); -my $url_root = $s->started_ok("starting a test server"); - -use HTTP::Async; -my $q = HTTP::Async->new; - -# Check that a couple of redirects work. -my $url = "$url_root/foo/bar?bad_header=1"; - -my $req = HTTP::Request->new( 'GET', $url ); -ok $q->add($req), "Added request to the queue"; -$q->poke while !$q->to_return_count; - -my $res = $q->next_response; -is $res->code, 200, "Got a response"; diff -Nur HTTP-Async-0.30/t/bad-hosts.t HTTP-Async-0.30_mod/t/bad-hosts.t --- HTTP-Async-0.30/t/bad-hosts.t 2015-03-15 11:17:52.000000000 -0400 +++ HTTP-Async-0.30_mod/t/bad-hosts.t 1969-12-31 19:00:00.000000000 -0500 @@ -1,52 +0,0 @@ - -use strict; -use warnings; - -use Test::More; - -use HTTP::Request; -use LWP::UserAgent; - -use HTTP::Async; -my $q = HTTP::Async->new; - -# Some weird ISPs or DNS providers take an address like http://i.dont.exist/ -# and resolve it to something "useful" such as -# http://navigationshilfe1.t-online.de/dnserror?url=http://i.dont.exist/ -# -# If that's happening then let's just give up on this test entirely. -{ - my $ua = LWP::UserAgent->new; - if ($ua->get('http://i.dont.exist/foo/bar')->is_success) { - plan skip_all => 'http://i.dont.exist/foo/bar resolved to something!'; - exit; - } -} - -# Try to add some requests for bad hosts. HTTP::Async should not fail -# but should return HTTP::Responses with the correct status code etc. - -plan tests => 9; - -my @bad_requests = - map { HTTP::Request->new( GET => $_ ) } - ( 'http://i.dont.exist/foo/bar', 'ftp://wrong.protocol.com/foo/bar' ); - -ok $q->add(@bad_requests), "Added bad requests"; - -while ( $q->not_empty ) { - my $res = $q->next_response || next; - - my $request_uri = $res->request->uri; - - isa_ok($res, 'HTTP::Response', "$request_uri - Got a proper response") - || diag sprintf("ref: %s", ref $res); - - ok(!$res->is_success, "$request_uri - Response was not a success") - || diag sprintf("%s: %s", $res->code, $res->decoded_content); - - ok($res->is_error, "$request_uri - Response was an error") - || diag sprintf("%s: %s", $res->code, $res->decoded_content); - - ok $res->request, "$request_uri - Response has a request attached"; -} diff -Nur HTTP-Async-0.30/t/cookies.t HTTP-Async-0.30_mod/t/cookies.t --- HTTP-Async-0.30/t/cookies.t 2014-11-17 10:59:35.000000000 -0500 +++ HTTP-Async-0.30_mod/t/cookies.t 1969-12-31 19:00:00.000000000 -0500 @@ -1,32 +0,0 @@ -use strict; -use warnings; - -use Test::More tests => 4; -use HTTP::Request; -use HTTP::Cookies; -use HTTP::Async; - -require 't/TestServer.pm'; -my $s = TestServer->new(); -my $url_root = $s->started_ok("starting a test server"); - -my $q = HTTP::Async->new; - -my $cookie_jar = HTTP::Cookies->new({}); -$q->cookie_jar($cookie_jar); - -# Receive a cookie and store it in a cookie jar -{ - my $url = "$url_root/foo/bar?cookie=1"; - - my $req = HTTP::Request->new('GET', $url); - ok $q->add($req), "Added request to the queue"; - $q->poke while !$q->to_return_count; - - my $res = $q->next_response; - my $response_cookie = $res->header('Set-Cookie'); - ok $response_cookie =~ m/x=test/, "Got cookie in response '$response_cookie'"; - - my $jar_cookie = $cookie_jar->as_string(); - ok $jar_cookie =~ m/x=test/, "Got cookie from cookie jar '$jar_cookie'"; -} diff -Nur HTTP-Async-0.30/t/dead-connection.t HTTP-Async-0.30_mod/t/dead-connection.t --- HTTP-Async-0.30/t/dead-connection.t 2014-11-17 10:59:35.000000000 -0500 +++ HTTP-Async-0.30_mod/t/dead-connection.t 1969-12-31 19:00:00.000000000 -0500 @@ -1,67 +0,0 @@ -# Hello Edmund, -# -# Thanks for HTTP::Async! I have a question about it, that I cannot figure out -# myself. I'm playing with HTTP::Async in various corner cases, and there's one -# particular error I'm getting: -# -# HTTP::Async object destroyed but still in use at a.pl line 0 -# HTTP::Async INTERNAL ERROR: 'id_opts' not empty at a.pl line 0 -# -# and the code is - -use strict; -use warnings; -use HTTP::Async; -use HTTP::Request; -use IO::Socket::INET; -use Time::HiRes; -use Net::EmptyPort (); - -use Test::More tests => 10; - -my $port = Net::EmptyPort::empty_port(); -my $abort_period = 3; - -foreach my $arg_key (qw(timeout max_request_time)) { - - # open a socket that will accept connections but never respond - my $sock = IO::Socket::INET->new( - Listen => 5, - LocalAddr => 'localhost', - LocalPort => $port, - Proto => 'tcp' - ) || die "Could not open a socket on port '$port' - maybe in use?"; - ok $sock, "opened socket on port '$port'"; - - my $async = HTTP::Async->new( $arg_key => $abort_period ); - ok $async, "creating async using $arg_key => $abort_period"; - - my $req = HTTP::Request->new( GET => "http://localhost:$port/" ); - my $id = $async->add($req); - ok $id, "Added request, given id '$id'"; - - # set up time started and when it should end. Add one second to be generous. - my $added_time = time; - my $should_end_time = $added_time + $abort_period + 1; - - my $res = undef; - - while (!$res) { - $res = $async->wait_for_next_response(1); - - # Check that we have not been waiting too long. - last if time > $should_end_time; - } - - ok $res, "got a response"; - is $res->code, 504, "got faked up timeout response"; -} - -# I expected that $response should be defined and contain a fake 504 error. -# It's either I'm doing something wrong or ..? -# -# -# -- -# Sincerely, -# -# Dmitry Karasik diff -Nur HTTP-Async-0.30/t/headers.t HTTP-Async-0.30_mod/t/headers.t --- HTTP-Async-0.30/t/headers.t 2014-11-17 10:59:35.000000000 -0500 +++ HTTP-Async-0.30_mod/t/headers.t 1969-12-31 19:00:00.000000000 -0500 @@ -1,21 +0,0 @@ -use strict; -use warnings; - -use Test::More tests => 3; -use HTTP::Request; - -require 't/TestServer.pm'; -my $s = TestServer->new(); -my $url_root = $s->started_ok("starting a test server"); - -use HTTP::Async; -my $q = HTTP::Async->new; - -my $req = HTTP::Request->new( 'GET', "$url_root?delay=0" ); -$req->header( 'Cookie', 'foo=bar' ); - -ok $q->add($req), "Added request to the queue"; -$q->poke while !$q->to_return_count; - -my $res = $q->next_response; -is $res->code, 200, "Got a response"; diff -Nur HTTP-Async-0.30/t/invalid-options.t HTTP-Async-0.30_mod/t/invalid-options.t --- HTTP-Async-0.30/t/invalid-options.t 2015-06-02 02:27:03.000000000 -0400 +++ HTTP-Async-0.30_mod/t/invalid-options.t 1969-12-31 19:00:00.000000000 -0500 @@ -1,40 +0,0 @@ -use strict; -use warnings; - -use Test::More tests => 2; -use Test::Fatal; - -use HTTP::Async; -use HTTP::Request; - -{ - like( - exception { - HTTP::Async->new( - proxy_addr => "localhost", - proxy_port => 12345, - ) - }, - qr/proxy_addr not valid/, - 'new dies on invalid option.' - ); -} - -{ - my $q = HTTP::Async->new; - my $r = HTTP::Request->new; - - like( - exception { - $q->add_with_opts($r, { - proxy_addr => "localhost", - proxy_port => 12345, - }) - }, - qr/proxy_addr not valid/, - 'add_with_opts dies on invalid option.' - ); -} - -1; - diff -Nur HTTP-Async-0.30/t/key_aliases.t HTTP-Async-0.30_mod/t/key_aliases.t --- HTTP-Async-0.30/t/key_aliases.t 2015-09-28 12:02:27.000000000 -0400 +++ HTTP-Async-0.30_mod/t/key_aliases.t 1969-12-31 19:00:00.000000000 -0500 @@ -1,13 +0,0 @@ - -use strict; -use warnings; - -use Test::More tests => 4; - -use HTTP::Async; - -foreach my $number ( 0, 3 ) { - my $q2 = HTTP::Async->new( max_redirects => $number ); - ok $q2, "created object"; - is $q2->max_redirect, $number, "got $number"; -} diff -Nur HTTP-Async-0.30/t/local-addr.t HTTP-Async-0.30_mod/t/local-addr.t --- HTTP-Async-0.30/t/local-addr.t 2014-11-17 10:59:35.000000000 -0500 +++ HTTP-Async-0.30_mod/t/local-addr.t 1969-12-31 19:00:00.000000000 -0500 @@ -1,38 +0,0 @@ -use strict; -use warnings; - -use Test::More; -use HTTP::Request; -use Net::EmptyPort; - -unless(eval("require Sys::HostIP;") && !$@) { - plan skip_all => "test requires Sys::HostIP to be installed"; - exit; -} - -my $ips = Sys::HostIP->new->ips || []; - -plan tests => 1 + 2*@$ips; - -require 't/TestServer.pm'; -my $s = TestServer->new(); -my $url_root = $s->started_ok("starting a test server"); - -use HTTP::Async; - -for my $ip (@$ips) { - my $q = HTTP::Async->new; - - my $req = HTTP::Request->new( 'GET', "$url_root?delay=0" ); - - my %opts = ( - local_addr => $ip, - local_port => Net::EmptyPort::empty_port(), - ); - ok $q->add_with_opts($req, \%opts), "Added request to the queue with local_addr ($ip) set"; -# note `lsof -p $$`; - $q->poke while !$q->to_return_count; - - my $res = $q->next_response; - is $res->code, 200, "Got a response"; -} diff -Nur HTTP-Async-0.30/t/make-url-absolute.t HTTP-Async-0.30_mod/t/make-url-absolute.t --- HTTP-Async-0.30/t/make-url-absolute.t 2013-03-28 13:33:43.000000000 -0400 +++ HTTP-Async-0.30_mod/t/make-url-absolute.t 1969-12-31 19:00:00.000000000 -0500 @@ -1,24 +0,0 @@ - -use strict; -use warnings; - -use Test::More tests => 4; - -use HTTP::Async; -use URI; - -my $full_url = URI->new('http://www.test.com:8080/foo/bar?baz=bundy'); - -my @tests = ( - 'http://www.test.com:8080/foo/bar?baz=bundy', '/foo/bar?baz=bundy', - 'bar?baz=bundy', '?baz=bundy', -); - -foreach my $test (@tests) { - my $url = HTTP::Async::_make_url_absolute( - url => $test, - ref => $full_url, - ); - - is "$url", "$full_url", "$test -> $full_url"; -} diff -Nur HTTP-Async-0.30/t/not-modified.t HTTP-Async-0.30_mod/t/not-modified.t --- HTTP-Async-0.30/t/not-modified.t 2014-11-17 10:59:35.000000000 -0500 +++ HTTP-Async-0.30_mod/t/not-modified.t 1969-12-31 19:00:00.000000000 -0500 @@ -1,26 +0,0 @@ -use strict; -use warnings; - -use Test::More tests => 4; -use HTTP::Request; -use HTTP::Async; - -require 't/TestServer.pm'; - -my $s = TestServer->new(); -my $url_root = $s->started_ok("starting a test server"); - -my $q = HTTP::Async->new; - -{ - my $url = "$url_root/?not_modified=1"; - - my $req = HTTP::Request->new( 'GET', $url ); - ok $q->add($req), "Added request to the queue"; - my $res = $q->wait_for_next_response; - - is $res->code, 304, "304 Not modified"; - ok !$res->previous, "does not have a previous reponse"; -} - -1; diff -Nur HTTP-Async-0.30/t/peer-addr.t HTTP-Async-0.30_mod/t/peer-addr.t --- HTTP-Async-0.30/t/peer-addr.t 2015-06-02 02:27:03.000000000 -0400 +++ HTTP-Async-0.30_mod/t/peer-addr.t 1969-12-31 19:00:00.000000000 -0500 @@ -1,30 +0,0 @@ -use strict; -use warnings; - -use Test::More; -use HTTP::Request; - -plan tests => 4; - -require 't/TestServer.pm'; -my $s = TestServer->new(); -my $url_root = $s->started_ok("starting a test server"); - -$url_root =~ s/localhost/example.org/; - -use HTTP::Async; - -my $q = HTTP::Async->new; - -my $req = HTTP::Request->new( 'GET', "$url_root?delay=0" ); - -my %opts = ( - peer_addr => 'localhost', -); -ok $q->add_with_opts($req, \%opts), "Added request to $url_root to the queue with peer_addr set to 'localhost'"; - -$q->poke while !$q->to_return_count; - -my $res = $q->next_response; -is $res->code, 200, "Got a response"; -like $res->content, qr/Delayed for/, "Got expected response"; diff -Nur HTTP-Async-0.30/t/pod-coverage.t HTTP-Async-0.30_mod/t/pod-coverage.t --- HTTP-Async-0.30/t/pod-coverage.t 2013-03-28 13:33:43.000000000 -0400 +++ HTTP-Async-0.30_mod/t/pod-coverage.t 1969-12-31 19:00:00.000000000 -0500 @@ -1,14 +0,0 @@ -use strict; -use warnings; - -use Test::More; - -eval "use Test::Pod::Coverage 1.00;"; -plan skip_all => "Test::Pod::Coverage > 1.00 required" if $@; - -if ( $] >= 5.009 ) { - eval "use Pod::Coverage 0.19;"; - plan skip_all => "Pod::Coverage >= 0.19 required for perls >= 5.9" if $@; -} - -all_pod_coverage_ok(); diff -Nur HTTP-Async-0.30/t/pod.t HTTP-Async-0.30_mod/t/pod.t --- HTTP-Async-0.30/t/pod.t 2013-03-28 13:33:43.000000000 -0400 +++ HTTP-Async-0.30_mod/t/pod.t 1969-12-31 19:00:00.000000000 -0500 @@ -1,7 +0,0 @@ -use strict; -use warnings; - -use Test::More; -eval "use Test::Pod 1.00"; -plan skip_all => "Test::Pod 1.00 required for testing POD" if $@; -all_pod_files_ok(); diff -Nur HTTP-Async-0.30/t/polite.t HTTP-Async-0.30_mod/t/polite.t --- HTTP-Async-0.30/t/polite.t 2014-11-17 10:59:35.000000000 -0500 +++ HTTP-Async-0.30_mod/t/polite.t 1969-12-31 19:00:00.000000000 -0500 @@ -1,87 +0,0 @@ -use strict; -use warnings; - -use Test::More tests => 14; -use HTTP::Request; -use Data::Dumper; - -use HTTP::Async::Polite; -my $q = HTTP::Async::Polite->new; - -# Check that we can set and get the interval. -is $q->send_interval, 5, "default interval is 5 seconds"; -ok $q->send_interval(3), "change interval to 3 seconds"; -is $q->send_interval, 3, "new interval is 3 seconds"; - -require 't/TestServer.pm'; - -my @servers = map { TestServer->new() } 1 .. 2; -my @url_roots = (); - -foreach my $s (@servers) { - push @url_roots, $s->started_ok("starting a test server"); -} - -# Fire off three requests to two different servers. Check that the correct -# interval is observed between each request and that the two different servers -# were scaped in parallel. Also add another request so that the lists are not -# balanced. -my @urls = - map { - my $url_root = $_; - my ($port) = $url_root =~ m/\d+$/g; - my $number = $_ eq $url_roots[0] ? 3 : 4; - my @ret = map { "$url_root/?set_time=$port-$_" } 1 .. $number; - @ret; - } @url_roots; - -my @requests = map { HTTP::Request->new( GET => $_ ) } @urls; -ok $q->add(@requests), "Add the requests"; - -is $q->to_send_count, 5, "Got correct to_send count"; -is $q->total_count, 7, "Got correct total count"; - -# Get all the responses. -my @responses = (); -while ( my $res = $q->wait_for_next_response ) { - push @responses, $res; -} - -is scalar(@responses), 7, "got six responses back"; - -# Extract the url and the timestamp from the responses; -my %data = (); -foreach my $res (@responses) { - my ( $id, $timestamp ) = split /\n/, $res->content, 2; - my ( $port, $number ) = split /-/, $id, 2; - - # Skip if the number is greater than 3 - extra req to test unbalanced list - next if $number > 3; - - s/\s+//g for $port, $number, $timestamp; - $data{$port}{$number} = $timestamp; -} - -# diag Dumper \%data; - -# Check that the requests did not come too close together. -my @first_times = (); -foreach my $port ( sort keys %data ) { - - my @times = sort { $a <=> $b } values %{ $data{$port} }; - - my $last_time = shift @times; - push @first_times, $last_time; - - foreach my $time (@times) { - - cmp_ok $time - $last_time, ">", 3, - "at least three seconds between requests to same domain"; - - $last_time = $time; - } -} - -# check that the first two requests were near each other. -cmp_ok abs( $first_times[0] - $first_times[1] ), "<", 1, - "at most 1 second between first two requests"; diff -Nur HTTP-Async-0.30/t/poll-interval.t HTTP-Async-0.30_mod/t/poll-interval.t --- HTTP-Async-0.30/t/poll-interval.t 2014-11-17 10:59:35.000000000 -0500 +++ HTTP-Async-0.30_mod/t/poll-interval.t 1969-12-31 19:00:00.000000000 -0500 @@ -1,85 +0,0 @@ - -use strict; -use warnings; - -use Test::More tests => 24; -use HTTP::Request; -use Time::HiRes 'time'; - -BEGIN { - require 't/test-utils.pl'; -} - -require 't/TestServer.pm'; -my $s = TestServer->new(); -my $url_root = $s->started_ok("starting a test server"); - -use HTTP::Async; -my $q = HTTP::Async->new; - -# Send off a long request - check that next_response returns at once -# but that wait_for_next_response returns only when the response has arrived. - -# Check that the poll interval is at a sensible default. -is $q->poll_interval, 0.05, "\$q->poll_interval == 0.05"; - -# Check that the poll interval is changeable. -is $q->poll_interval(0.1), 0.1, "set poll_interval to 0.1"; -is $q->poll_interval, 0.1, "\$q->poll_interval == 0.1"; - -{ - - # Get the time since the request was made. - reset_timer(); - - my $url = "$url_root?delay=3"; - my $req = HTTP::Request->new( 'GET', $url ); - ok $q->add($req), "Added request to the queue - $url"; - - # Does next_response return immediately - ok !$q->next_response, "next_response returns at once"; - delay_lt_ok 0.4, "Returned quickly (less than 0.4 secs)"; - - ok !$q->wait_for_next_response(0), - "wait_for_next_response(0) returns at once"; - delay_lt_ok 0.4, "Returned quickly (less than 0.4 secs)"; - - ok !$q->wait_for_next_response(1), - "wait_for_next_response(1) returns after 1 sec without a response"; - - delay_ge_ok 1, "Returned after 1 sec delay"; - delay_lt_ok 1.4, "Returned before 1.4 sec delay"; - - my $response = $q->wait_for_next_response(); - ok $response, "wait_for_next_response got the response"; - delay_gt_ok 3, "Returned after 3 sec delay"; - - is $response->code, 200, "good response (200)"; - ok $response->is_success, "is a success"; -} - -{ - reset_timer(); - - my $url = "$url_root?delay=1"; - my $req = HTTP::Request->new( 'GET', $url ); - ok $q->add($req), "Added request to the queue - $url"; - - my $response = $q->wait_for_next_response; - - ok $response, "wait_for_next_response got the response"; - - delay_gt_ok 1, "Returned after 1 sec delay"; - delay_lt_ok 2, "Returned before 2 sec delay"; - - is $response->code, 200, "good response (200)"; - ok $response->is_success, "is a success"; -} - -{ # Check that wait_for_next_response does not hang if there is nothing - # to wait for. - reset_timer(); - ok !$q->wait_for_next_response, "Did not get a response"; - delay_lt_ok 1, "Returned in less than 1 sec"; -} - diff -Nur HTTP-Async-0.30/t/proxy.t HTTP-Async-0.30_mod/t/proxy.t --- HTTP-Async-0.30/t/proxy.t 2014-11-17 10:59:35.000000000 -0500 +++ HTTP-Async-0.30_mod/t/proxy.t 1969-12-31 19:00:00.000000000 -0500 @@ -1,52 +0,0 @@ - -use strict; -use warnings; -use URI::Escape; - -use Test::More tests => 16; -use HTTP::Request; - -require 't/TestServer.pm'; -my $s1 = TestServer->new(); -my $s1_url_root = $s1->started_ok("starting a test server"); - -my $s2 = TestServer->new(); -$s2->{is_proxy} = 1; -my $s2_url_root = $s2->started_ok("starting a test server"); - -ok( $_, "got $_" ) for $s1_url_root, $s2_url_root; - -my %tests = ( - "$s1_url_root/foo/bar?redirect=2" => 200, - "$s1_url_root/foo/bar?delay=1" => 200, -); - -use HTTP::Async; -my $q = HTTP::Async->new; - -foreach my $via_proxy ( 0, 1 ) { - - while ( my ( $url, $code ) = each %tests ) { - - my $req = HTTP::Request->new( 'GET', $url ); - - my %opts = ( proxy_host => '127.0.0.1', proxy_port => $s2->port, ); - - my $id = - $via_proxy - ? $q->add_with_opts( $req, \%opts ) - : $q->add($req); - - ok $id, "Added request to the queue - $url"; - - my $res = $q->wait_for_next_response; - is( $res->code, $code, "Got a '$code' response" ) - || diag $res->as_string; - - # check that the proxy header was found if this was a proxy request. - my $proxy_header = $res->header('WasProxied') || ''; - my $expected = $via_proxy ? 'yes' : ''; - is($proxy_header, $expected, "check for proxy header '$expected'") - || diag $res->as_string; - } -} diff -Nur HTTP-Async-0.30/t/proxy-with-https.t HTTP-Async-0.30_mod/t/proxy-with-https.t --- HTTP-Async-0.30/t/proxy-with-https.t 2014-11-17 10:59:35.000000000 -0500 +++ HTTP-Async-0.30_mod/t/proxy-with-https.t 1969-12-31 19:00:00.000000000 -0500 @@ -1,52 +0,0 @@ -use strict; -use warnings; -use URI::Escape; - -use Test::More; - -plan skip_all => "enable these tests by setting REAL_SERVERS" - unless $ENV{REAL_SERVERS}; - -use HTTP::Request; - -require 't/TestServer.pm'; - -eval "require LWP::Protocol::https"; -if ($@) { - plan skip_all => "LWP::Protocol::https required"; - exit 0; -} - -plan tests => 5; - -my $s1 = TestServer->new(); -$s1->{is_proxy} = 1; -my $s1_url_root = $s1->started_ok("starting a test server"); - -ok( $s1_url_root, "got $s1_url_root" ); - -my %tests = ( - "https://www.google.co.uk/images/srpr/logo4w.png" => 200, -); - -use HTTP::Async; -my $q = HTTP::Async->new; - -while ( my ( $url, $code ) = each %tests ) { - - my $req = HTTP::Request->new( 'GET', $url ); - - my %opts = ( proxy_host => '127.0.0.1', proxy_port => $s1->port, ); - - my $id = $q->add_with_opts( $req, \%opts ); - - ok $id, "Added request to the queue - $url"; - - my $res = $q->wait_for_next_response; - is( $res->code, $code, "Got a '$code' response" ) - || diag $res->as_string; - - # check that the proxy header was found if this was a proxy request. - my $proxy_header = $res->header('WasProxied') || ''; - is $proxy_header, 'yes', "check for proxy header 'yes'"; -} diff -Nur HTTP-Async-0.30/t/real-servers.t HTTP-Async-0.30_mod/t/real-servers.t --- HTTP-Async-0.30/t/real-servers.t 2014-11-17 10:59:35.000000000 -0500 +++ HTTP-Async-0.30_mod/t/real-servers.t 1969-12-31 19:00:00.000000000 -0500 @@ -1,64 +0,0 @@ -use strict; -use warnings; - -use Test::More; - -plan skip_all => "enable these tests by setting REAL_SERVERS" - unless $ENV{REAL_SERVERS}; - -use HTTP::Request; -use Time::HiRes 'usleep'; - -my $https_ok; -eval "use Net::HTTPS::NB"; -if ($@) { - note "Install Net::HTTPS::NB to test https"; -} -else { - $https_ok = 1; -} - -# Create requests for a few well known sites. -my @requests = - map { HTTP::Request->new( GET => $_ ) } - grep { $https_ok || $_ !~ m{^https://} } - sort qw( http://www.google.com http://www.yahoo.com https://www.google.com ); - -my $tests_per_request = 4; -plan tests => 3 + $tests_per_request * scalar @requests; - -use_ok 'HTTP::Async'; - -my $q = HTTP::Async->new(ssl_options => { SSL_verify_mode => 0 }); -isa_ok $q, 'HTTP::Async'; - -# Put all of these onto the queue. -ok( $q->add($_), "Added request for " . $_->uri ) for @requests; - -# Process the queue until they all complete. -my @responses = (); - -while ( $q->not_empty ) { - - my $res = $q->next_response; - my $uri; - if ($res) { - $uri = $res->request->uri; - pass "Got the response from $uri"; - push @responses, $res; - } - else { - usleep( 1_000_000 * 0.1 ); # 0.1 seconds - next; - } - - ok $res->is_success, "is success for $uri" - or diag $res->status_line; -} - -# Check that we got the number needed and that all the responses are -# HTTP::Response objects. -is scalar @responses, scalar @requests, "Got the expected number of responses"; -isa_ok( $_, 'HTTP::Response', "Got a HTTP::Response object" ) for @responses; - -# print $_->content for @responses; diff -Nur HTTP-Async-0.30/t/redirects.t HTTP-Async-0.30_mod/t/redirects.t --- HTTP-Async-0.30/t/redirects.t 2015-09-28 12:02:27.000000000 -0400 +++ HTTP-Async-0.30_mod/t/redirects.t 1969-12-31 19:00:00.000000000 -0500 @@ -1,105 +0,0 @@ - -use strict; -use warnings; - -use Test::More; -use HTTP::Request; - -my $tests = 21; -if ($ENV{'REAL_SERVERS'}) { - $tests += 4; -} -plan tests => $tests; - -require 't/TestServer.pm'; -my $s = TestServer->new(); -my $url_root = $s->started_ok("starting a test server"); - -use HTTP::Async; -my $q = HTTP::Async->new; - -# Check that the max_redirect is at a sensible level. -is $q->max_redirect, 7, "max_redirect == 7"; - -# Send a request to somewhere that will redirect a certain number of -# times: -# -# ?redirect=$num - if $num is > 0 then it redirects to $num - 1; - -{ # Check that a couple of redirects work. - my $url = "$url_root/foo/bar?redirect=3"; - - my $req = HTTP::Request->new( 'GET', $url ); - ok $q->add($req), "Added request to the queue"; - $q->poke while !$q->to_return_count; - - my $res = $q->next_response; - is $res->code, 200, "No longer a redirect"; - ok $res->previous, "Has a previous reponse"; - is $res->previous->code, 302, "previous request was a redirect"; -} - -{ # check that 20 redirects stop after the expected number. - my $url = "$url_root?redirect=20"; - my $req = HTTP::Request->new( 'GET', $url ); - ok $q->add($req), "Added request to the queue"; - $q->poke while !$q->to_return_count; - - my $res = $q->next_response; - is $res->code, 302, "Still a redirect"; - ok $res->previous, "Has a previous reponse"; - is $res->previous->code, 302, "previous request was a redirect"; - is $res->request->uri->as_string, "$url_root?redirect=13", - "last request url correct"; -} - -{ # Set the max_redirect higher and try again. - - ok $q->max_redirect(30), "Set the max_redirect higher."; - - my $url = "$url_root?redirect=20"; - my $req = HTTP::Request->new( 'GET', $url ); - ok $q->add($req), "Added request to the queue"; - $q->poke while !$q->to_return_count; - - my $res = $q->next_response; - is $res->code, 200, "No longer a redirect"; - ok $res->previous, "Has a previous reponse"; - is $res->previous->code, 302, "previous request was a redirect"; -} - -{ # Set the max_redirect to zero and check that none happen. - - is $q->max_redirect(0), 0, "Set the max_redirect to zero."; - is $q->max_redirect, 0, "max_redirect is set to zero."; - - my $url = "$url_root?redirect=20"; - my $req = HTTP::Request->new( 'GET', $url ); - ok $q->add($req), "Added request to the queue"; - $q->poke while !$q->to_return_count; - - my $res = $q->next_response; - is $res->code, 302, "No longer a redirect"; - ok !$res->previous, "Have no previous reponse"; -} - -if ($ENV{'REAL_SERVERS'}) { - # Check that redirects have their headers repeated - # Exmaple from kloevschall (https://github.com/evdb/HTTP-Async/issues/8) - - is $q->max_redirect(1), 1, "Set the max_redirect to one."; - is $q->max_redirect, 1, "max_redirect is set to one."; - - my $headers = HTTP::Headers->new(Accept => 'application/x-research-info-systems'); - - my $error = $q->add(HTTP::Request->new(GET => 'http://dx.doi.org/10.1126/science.169.3946.635', $headers)); - my $ok = $q->add(HTTP::Request->new(GET => 'http://data.crossref.org/10.1126%2Fscience.169.3946.635', $headers)); - - while (my ($response, $req_id) = $q->wait_for_next_response) { - ok $response->is_success, sprintf("Got good response (%s, %s) for %s", - $response->code, - $response->message, - $response->base - ); - } -} diff -Nur HTTP-Async-0.30/t/release-cpan-changes.t HTTP-Async-0.30_mod/t/release-cpan-changes.t --- HTTP-Async-0.30/t/release-cpan-changes.t 2013-07-18 04:44:00.000000000 -0400 +++ HTTP-Async-0.30_mod/t/release-cpan-changes.t 1969-12-31 19:00:00.000000000 -0500 @@ -1,14 +0,0 @@ -use strict; -use warnings; - -use Test::More 0.96; - -eval "use Test::CPAN::Changes"; -if ($@) { - plan skip_all => - "install Test::CPAN::Changes to run this test"; -} - -changes_file_ok('Changes'); - -done_testing(); diff -Nur HTTP-Async-0.30/t/remove.t HTTP-Async-0.30_mod/t/remove.t --- HTTP-Async-0.30/t/remove.t 2014-11-17 10:59:35.000000000 -0500 +++ HTTP-Async-0.30_mod/t/remove.t 1969-12-31 19:00:00.000000000 -0500 @@ -1,105 +0,0 @@ -use strict; -use warnings; - -use Test::More tests => 21; - -use Data::Dumper; - -use HTTP::Request; -use HTTP::Async; - -## Set up - create an Async object with ten items in its queue - -require 't/TestServer.pm'; -# To ensure that remove and remove_all work on all three states, we need to -# have items in all three states when we call them. -# -# The three states are: to_send, in_progress, and to_return. -# -# We can create them by adding items which will run quickly, items which will -# trickle data slowly, and items which are not running. -# -# XXX we currently only test in_progress and to_return as items are hard to -# keep in the to_send queue, HTTP::Async is too good at moving them into the -# to_progress queue! -{ - my $s = TestServer->new(); - my $url_root = $s->started_ok("starting a test server"); - - my $q = HTTP::Async->new; - - is $q->total_count, 0, "total_count starts at zero"; - - my %type_to_id = populate_queues($q, $url_root); - - ## Remove - test remove() to remove a single item - - for my $type (sort keys %type_to_id) { - my $id = $type_to_id{$type}; - ok $q->remove($id), "removed '$type' item with id '$id'"; - } - - ok !$q->remove(123456), "removal of bad id '123456' returns false"; - - is $q->total_count, 0, "total_count is now zero"; -} - -{ - my $s = TestServer->new(); - my $url_root = $s->started_ok("starting a test server"); - - my $q = HTTP::Async->new; - - is $q->total_count, 0, "total_count starts at zero"; - - my %type_to_id = populate_queues($q, $url_root); - - ## Remove All - test remove_all() removes all queued items - - ok $q->remove_all, "removed all items"; - - ok !$q->remove_all, "remove_all() on empty queue returns false"; - - is $q->total_count, 0, "total_count is now zero"; -} - -############################################################################## - -sub populate_queues { - my $q = shift; - my $url_root = shift; - - my %type_to_id; - - # fast / to_return - { - my $url = "$url_root?trickle=1"; - my $req = HTTP::Request->new('GET', $url); - ok $type_to_id{'fast'} = $q->add($req), "added fast / to_return item"; - - for (1 .. 10) { - $q->poke; - last if $q->to_return_count; - sleep 1; - } - - if (!$q->to_return_count) { - diag Dumper $q; - } - - is $q->to_return_count, 1, "to_return_count is one"; - } - - # slow / in_progress - { - my $url = "$url_root?trickle=1000"; - my $req = HTTP::Request->new('GET', $url); - ok $type_to_id{'slow'} = $q->add($req), "added slow / in_progress item"; - $q->poke; - is $q->in_progress_count, 1, "in_progress_count is one"; - } - - is $q->total_count, 2, "total_count is now two"; - - return %type_to_id; -} diff -Nur HTTP-Async-0.30/t/setup.t HTTP-Async-0.30_mod/t/setup.t --- HTTP-Async-0.30/t/setup.t 2015-09-28 12:02:27.000000000 -0400 +++ HTTP-Async-0.30_mod/t/setup.t 1969-12-31 19:00:00.000000000 -0500 @@ -1,21 +0,0 @@ - -use strict; -use warnings; - -use Test::More tests => 16; - -use HTTP::Async; -use HTTP::Async::Polite; - -foreach my $class ( 'HTTP::Async', 'HTTP::Async::Polite' ) { - foreach my $number ( 0, 3 ) { - - my $q1 = $class->new; - is $q1->max_redirect($number), $number, "set to $number"; - is $q1->max_redirect, $number, "got $number"; - - my $q2 = $class->new( max_redirect => $number ); - ok $q2, "created object"; - is $q2->max_redirect, $number, "got $number"; - } -} diff -Nur HTTP-Async-0.30/t/strip-host-from-uri.t HTTP-Async-0.30_mod/t/strip-host-from-uri.t --- HTTP-Async-0.30/t/strip-host-from-uri.t 2013-07-18 04:41:46.000000000 -0400 +++ HTTP-Async-0.30_mod/t/strip-host-from-uri.t 1969-12-31 19:00:00.000000000 -0500 @@ -1,28 +0,0 @@ -use strict; -use warnings; - -use Test::More; -use HTTP::Async; -use URI; - -my %tests = ( -'http://www.w3.org:8080/Protocols/rfc2616/rfc2616-sec5.html?foo=bar#sec5.1.2' - => '/Protocols/rfc2616/rfc2616-sec5.html?foo=bar#sec5.1.2', - - 'http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html?foo=bar#sec5.1.2' => - '/Protocols/rfc2616/rfc2616-sec5.html?foo=bar#sec5.1.2', - - 'https://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html?foo=bar#sec5.1.2' => - '/Protocols/rfc2616/rfc2616-sec5.html?foo=bar#sec5.1.2', - - 'https://www.w3.org:80/Protocols' => '/Protocols', - - 'http://localhost:8080?delay=3' => '/?delay=3' -); - -plan tests => scalar keys %tests; - -while ( my ( $in, $expected ) = each %tests ) { - my $out = HTTP::Async::_strip_host_from_uri( URI->new($in) ); - is $out, $expected, "correctly stripped $in to $out"; -} diff -Nur HTTP-Async-0.30/t/template.t HTTP-Async-0.30_mod/t/template.t --- HTTP-Async-0.30/t/template.t 2014-11-17 10:59:35.000000000 -0500 +++ HTTP-Async-0.30_mod/t/template.t 1969-12-31 19:00:00.000000000 -0500 @@ -1,20 +0,0 @@ - -use strict; -use warnings; - -use Test::More skip_all => 'just a template to base other tests on'; - -use Test::More tests => 5; - -use HTTP::Async; -my $q = HTTP::Async->new; - -require 't/TestServer.pm'; - -# my $s = TestServer->new; -# my $url_root = $s->started_ok("starting a test server"); - -my @servers = map { TestServer->new() } 1 .. 4; -foreach my $s (@servers) { - my $url_root = $s->started_ok("starting a test server"); -} diff -Nur HTTP-Async-0.30/t/TestServer.pm HTTP-Async-0.30_mod/t/TestServer.pm --- HTTP-Async-0.30/t/TestServer.pm 2015-06-02 02:27:03.000000000 -0400 +++ HTTP-Async-0.30_mod/t/TestServer.pm 1969-12-31 19:00:00.000000000 -0500 @@ -1,203 +0,0 @@ -use strict; -use warnings; - -# Provide a simple server that can be used to test the various bits. -package TestServer; -use base qw/Test::HTTP::Server::Simple HTTP::Server::Simple::CGI/; - -use Time::HiRes qw(sleep time); -use Data::Dumper; -use Test::More; -use LWP::UserAgent; -use Net::EmptyPort (); - -sub new { - my ($class, $port) = @_; - - if (!$port) { - $port = Net::EmptyPort::empty_port(); - } - - # Require a port parameter to be passed in. - # Any default here would mean the tests don't run properly in parallel. - if (!$port) { - die "Missing positional parameter 'port' required"; - } - - return $class->SUPER::new($port); -} - -sub handle_request { - my ( $self, $cgi ) = @_; - my $params = $cgi->Vars; - - # If we should act as a proxy then the handle_request() behaviour is - # handled by act_as_proxy. - return act_as_proxy(@_) if $self->{is_proxy}; - - # We should act as a final destination server and so expect an absolute URL. - my $request_uri = $ENV{REQUEST_URI}; - if ( $request_uri !~ m!^/! ) { - warn "ERROR - not absolute request_uri '$request_uri'"; - return; - } - - # Flush the output so that it goes straight away. Needed for the timeout - # trickle tests. - $self->stdout_handle->autoflush(1); - - # Do the right thing depending on what is asked of us. - if ( exists $params->{redirect} ) { - my $num = $params->{redirect} || 0; - $num--; - - if ( $num > 0 ) { - print $cgi->redirect( -uri => "?redirect=$num", -nph => 1, ); - print "You are being redirected..."; - } - else { - print $cgi->header( -nph => 1 ); - print "No longer redirecting"; - } - } - - elsif ( exists $params->{delay} ) { - sleep( $params->{delay} ); - print $cgi->header( -nph => 1 ); - print "Delayed for '$params->{delay}'.\n"; - } - - elsif ( exists $params->{trickle} ) { - - print $cgi->header( -nph => 1 ); - - my $trickle_for = $params->{trickle}; - my $finish_at = time + $trickle_for; - - local $| = 1; - - while ( time <= $finish_at ) { - print time . " trickle $$\n"; - sleep 0.1; - } - - print "Trickled for '$trickle_for'.\n"; - } - - elsif ( exists $params->{cookie} ) { - print $cgi->header( - -nph => 1, - -cookie => $cgi->cookie(-name => "x", value => "test"), - ); - - print "Sent test cookie\n"; - } - - elsif ( exists $params->{bad_header} ) { - my $headers = $cgi->header( -nph => 1, ); - - # trim trailing whitspace to single newline. - $headers =~ s{ \s* \z }{\n}xms; - - # Add a bad header: - $headers .= "Bad header: BANG!\n"; - - print $headers . "\n\n"; - print "Produced some bad headers."; - } - - elsif ( my $when = $params->{break_connection} ) { - - for (1) { - last if $when eq 'before_headers'; - print $cgi->header( -nph => 1 ); - - last if $when eq 'before_content'; - print "content\n"; - } - } - - elsif ( my $id = $params->{set_time} ) { - my $now = time; - print $cgi->header( -nph => 1 ); - print "$id\n$now\n"; - } - - elsif ( exists $params->{not_modified} ) { - my $last_modified = HTTP::Date::time2str( time - 60 * 60 * 24 ); - print $cgi->header( - -status => '304', - -nph => 1, - 'Last-Modified' => $last_modified, - ); - print "content\n"; - } - - else { - warn "DON'T KNOW WHAT TO DO: " . Dumper $params; - } - - # warn "STOP REQUEST - " . time; - -} - -sub act_as_proxy { - my ( $self, $cgi ) = @_; - - my $request_uri = $ENV{REQUEST_URI}; - - # According to the RFC the request_uri must be fully qualified if the - # request is to a proxy and absolute if it is to a destination server. CHeck - # that this is the case. - # - # http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html#sec5.1.2 - if ( $request_uri !~ m!^https?://! ) { - warn "ERROR - not fully qualified request_uri '$request_uri'"; - return; - } - - my $response = LWP::UserAgent->new( max_redirect => 0 )->get($request_uri); - - # Add a header so that we know that this was proxied. - $response->header( WasProxied => 'yes' ); - - print $response->as_string; - return 1; -} - -# To allow act_as_proxy to work with HTTP::Server::Simple::CGI versions above -# 0.41_1, where better support for RFC1616 was added, we have to override the -# parse_request() method to match the pre-0.45_1 version of the method. Lame -# and hacky but it works. -sub parse_request { - my $self = shift; - my $chunk; - while ( sysread( STDIN, my $buff, 1 ) ) { - last if $buff eq "\n"; - $chunk .= $buff; - } - defined($chunk) or return undef; - $_ = $chunk; - - m/^(\w+)\s+(\S+)(?:\s+(\S+))?\r?$/; - my $method = $1 || ''; - my $uri = $2 || ''; - my $protocol = $3 || ''; - - return ( $method, $uri, $protocol ); -} - -# Change print() to note() in HTTP::Server::Simple::print_banner -sub print_banner { - my $self = shift; - - note( - ref($self) - . ": You can connect to your server at " - . "http://localhost:" - . $self->port - . "/" - ); -} - -1; diff -Nur HTTP-Async-0.30/t/test-utils.pl HTTP-Async-0.30_mod/t/test-utils.pl --- HTTP-Async-0.30/t/test-utils.pl 2013-07-18 04:41:46.000000000 -0400 +++ HTTP-Async-0.30_mod/t/test-utils.pl 1969-12-31 19:00:00.000000000 -0500 @@ -1,26 +0,0 @@ -use strict; -use warnings; - -use Time::HiRes qw(time); - -{ - my $start_time = undef; - - sub reset_timer { return $start_time = time; } - - sub delay_lt_ok ($$) { return delay_ok( '<', @_ ); } - sub delay_le_ok ($$) { return delay_ok( '<=', @_ ); } - sub delay_ge_ok ($$) { return delay_ok( '>=', @_ ); } - sub delay_gt_ok ($$) { return delay_ok( '>', @_ ); } - - sub delay_ok ($$$) { - my ( $cmp, $delay, $message ) = @_; - - my $timer = time - $start_time; - - my $display_test = sprintf '%.2f %s %.2f', $timer, $cmp, $delay; - return cmp_ok $timer, $cmp, $delay, "$message ($display_test)"; - } -} - -1; diff -Nur HTTP-Async-0.30/t/timeout.t HTTP-Async-0.30_mod/t/timeout.t --- HTTP-Async-0.30/t/timeout.t 2014-11-17 10:59:35.000000000 -0500 +++ HTTP-Async-0.30_mod/t/timeout.t 1969-12-31 19:00:00.000000000 -0500 @@ -1,67 +0,0 @@ - -use strict; -use warnings; - -use Test::More tests => 20; -use HTTP::Request; - -require 't/TestServer.pm'; -my $s = TestServer->new(); -my $url_root = $s->started_ok("starting a test server"); - -use HTTP::Async; -my $q = HTTP::Async->new; - -# Check that the timeout is at a sensible default. -is $q->timeout, 180, "\$q->timeout == 180"; - -{ # Send a request that should return quickly - my $url = "$url_root?delay=0"; - my $req = HTTP::Request->new( 'GET', $url ); - ok $q->add($req), "Added request to the queue - $url"; - my $res = $q->wait_for_next_response; - is $res->code, 200, "Not timed out (200)"; -} - -is $q->timeout(2), 2, "Set the timeout really low"; - -{ # Send a request that should timeout - my $url = "$url_root?delay=3"; - my $req = HTTP::Request->new( 'GET', $url ); - ok $q->add($req), "Added delayed request to the queue - $url"; - my $res = $q->wait_for_next_response; - is $res->code, 504, "timed out (504)"; - ok $res->is_error, "is an error"; -} - -{ # Send a request that should not timeout as it is trickling back data. - my $url = "$url_root?trickle=4"; - my $req = HTTP::Request->new( 'GET', $url ); - ok $q->add($req), "Added trickle request to the queue - $url"; - my $res = $q->wait_for_next_response; - is $res->code, 200, "response ok (200)"; - ok !$res->is_error, "is not an error"; -} - -is $q->timeout(1), 1, "Set the timeout really low"; -is $q->max_request_time(1), 1, "Set the max_request_time really low"; - -{ # Send a request that should timeout despite trickling back data. - my $url = "$url_root?trickle=3"; - my $req = HTTP::Request->new( 'GET', $url ); - ok $q->add($req), "Added trickle request to the queue - $url"; - my $res = $q->wait_for_next_response; - is $res->code, 504, "timed out (504)"; - ok $res->is_error, "is an error"; -} - -is $q->timeout(10), 10, "Lengthen the timeout"; -is $q->max_request_time(300), 300, "Lengthen the max_request_time"; - -{ # Send same request that should now be ok - my $url = "$url_root?delay=3"; - my $req = HTTP::Request->new( 'GET', $url ); - ok $q->add($req), "Added delayed request to the queue - $url"; - my $res = $q->wait_for_next_response; - is $res->code, 200, "Not timed out (200)"; -}