Browsermob-Proxy

 view release on metacpan or  search on metacpan

MANIFEST  view on Meta::CPAN

META.json
META.yml
Makefile.PL
cpanfile
dist.ini
lib/Browsermob/Proxy.pm
lib/Browsermob/Proxy/CompareParams.pm
lib/Browsermob/Server.pm
t/CompareParams.t
t/Proxy-Filter.t
t/Proxy-Timeout.t
t/Proxy.t
t/Server.t
t/e2e.t
t/load.t
t/tlib/MockBrowsermobServer.pm
weaver.ini
xt/release/pod-coverage.t
xt/release/pod-syntax.t

lib/Browsermob/Proxy.pm  view on Meta::CPAN

            ],
            description => 'Modify request/payload with javascript'
        },
        set_timeout => {
            method => 'PUT',
            path => '/:port/timeout',
            required_params => [
                'port',
            ],
            optional_params => [
                'requestTimeout',
                'readTimeout',
                'connectionTimeout',
                'dnsCacheTimeout'
            ],
            description => 'Handles different proxy timeouts'
        }
    }
};


has server_addr => (
    is => 'rw',
    default => sub { '127.0.0.1' }

lib/Browsermob/Proxy.pm  view on Meta::CPAN


Under the covers, we are using L</filter_request> with a Javascript
Rhino payload.

=head2 set_timeout ( $timeoutType => $milliseconds )

Set different time outs on the instantiated proxy. You can set
multiple timeouts at once, if you like.

    $proxy->timeout(
        requestTimeout => 5000,
        readTimeout => 6000
    );

=over 4

=item *

requestTimeout

Request timeout in milliseconds. A timeout value of -1 is interpreted
as infinite timeout. It equals -1 by default.

=item *

readTimeout

Read timeout is the timeout for waiting for data or, put differently,
a maximum period inactivity between two consecutive data packets. A
timeout value of zero is interpreted as an infinite timeout. It equals
60000 by default.

=item *

connectionTimeout

Determines the timeout in milliseconds until a connection is
established. A timeout value of zero is interpreted as an infinite
timeout. It eqauls 60000 by default.

=item *

dnsCacheTimeout

Sets the maximum length of time that records will be stored in this
Cache. A nonpositive value disables this feature (that is, sets no
limit). It equals 0 by default.

=back

=head2 delete_proxy

Delete the proxy off of the server, shutting down the port. Although

lib/Browsermob/Server.pm  view on Meta::CPAN

}


sub _is_listening {
    my ($self, $timeout) = @_;
    $timeout //= 30;

    my $sock = IO::Socket::INET->new(
        PeerAddr => $self->server_addr,
        PeerPort => $self->server_port,
        Timeout => $timeout
    );

    return $sock;
}

1;

__END__

=pod

t/CompareParams.t  view on Meta::CPAN

        ok( ! cmp_request_params($requests, $assert) );
    };

};

SKIP: {
    my $server = Browsermob::Server->new;
    my $has_connection = IO::Socket::INET->new(
        PeerAddr => 'www.perl.org',
        PeerPort => 80,
        Timeout => 5
    );

    skip 'No server found for e2e tests', 2
      unless $server->_is_listening(5) and $has_connection;

    describe 'E2E Comparing params' => sub {
        my ($ua, $proxy, $har);

        before each => sub {
            $ua = LWP::UserAgent->new;

t/Proxy-Timeout.t  view on Meta::CPAN


use strict;
use warnings;
use Test::Spec;

use Browsermob::Proxy;
use File::Basename qw/dirname/;
use lib dirname(__FILE__);
use tlib::MockBrowsermobServer qw/generate_mock_server/;

describe 'Proxy Timeouts' => sub {
    my ($proxy, $mock_server);
    my $mock_port = 9999;
    my $called;

    before each => sub {
        $mock_server = generate_mock_server($mock_port);

        $called = 0;
        $mock_server->{'/proxy/' . $mock_port . '/timeout'} = sub {
            $called++;

t/Proxy-Timeout.t  view on Meta::CPAN

            );
        };

        $proxy = Browsermob::Proxy->new(
            mock => $mock_server
        );
    };

    it 'should set without throwing' => sub {
        eval { $proxy->set_timeout(
            requestTimeout => 12345,
            dnsCacheTimeout => 54321
        ) };
        ok( ! $@ );
    };

    it 'should go to /proxy/:port/timeout' => sub {
        $proxy->set_timeout( requestTimeout => 12345 );
        ok( $called );
    };

};

runtests;

t/e2e.t  view on Meta::CPAN

use strict;
use warnings;
use Test::Spec;
use Browsermob::Server;

SKIP: {
    my $server = Browsermob::Server->new;
    my $has_connection = IO::Socket::INET->new(
        PeerAddr => 'www.google.com',
        PeerPort => 80,
        Timeout => 5
    );

    skip 'No server found for e2e tests', 2
      unless $server->_is_listening(5) and $has_connection;

    describe 'Simple E2E test' => sub {
        my ($ua, $proxy, $har);

        before each => sub {
            $ua = LWP::UserAgent->new;



( run in 1.359 second using v1.01-cache-2.11-cpan-fd5d4e115d8 )