mirror of
https://github.com/xcat2/xcat-dep.git
synced 2024-11-25 11:00:07 +00:00
1585 lines
46 KiB
Diff
1585 lines
46 KiB
Diff
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)";
|
|
-}
|