lemonldap-ng/scripts/test-perf.pl

100 lines
3.0 KiB
Perl

#!/usr/bin/perl
use strict;
use LWP::UserAgent;
use Time::HiRes qw(time);
use constant NB => 5;
my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->requests_redirectable( [] );
my ( $request, @get, @post, @menu, @cookies, @handler );
# Fake request to be sure that all is compiled
$request = new HTTP::Request( 'GET', 'http://127.0.0.1/' );
$ua->request( $request, \&cb_content );
$request = new HTTP::Request( 'GET', 'http://127.0.0.1:19876/' );
$request->header( Host => 'auth.example.com' );
for ( my $i = 0 ; $i < NB ; $i++ ) {
my $time = time();
$ua->request( $request, \&cb_content );
my $time2 = time() - $time;
push @get, $time2;
}
$request = new HTTP::Request( 'POST', 'http://127.0.0.1:19876/' );
$request->header( Host => 'auth.example.com' );
$request->header( 'Content-Lenght' => '42' );
$request->header( 'Content-Type' => 'application/x-www-form-urlencoded' );
$request->content('url=&user=dwho&password=dwho');
for ( my $i = 0 ; $i < NB ; $i++ ) {
my $time = time();
my $response = $ua->request( $request, \&cb_content );
my $time2 = time() - $time;
if ( my $r = $response->code != 302 ) {
print STDERR "$r\n" . $response->content . "\n";
print STDERR "Headers :\n";
$response->scan( sub { print $_[0] . ": " . $_[1] . "\n"; } );
next;
}
$response->scan(
sub {
if ( $_[0] eq 'Set-Cookie' ) {
my $c = $_[1];
$c =~ s/;.*$//;
push @cookies, $c;
}
}
);
push @post, $time2;
}
for ( my $i = 0 ; $i < NB ; $i++ ) {
$request = new HTTP::Request( 'GET', 'http://127.0.0.1:19876/' );
$request->header( Host => 'auth.example.com' );
my $cookie = shift @cookies;
$request->header( "Cookie", $cookie );
my $time = time();
my $response = $ua->request( $request, \&cb_content );
my $time2 = time() - $time;
push @menu, $time2;
$request = new HTTP::Request( 'GET', 'http://127.0.0.1:19876/' );
$request->header( Host => 'test1.example.com' );
$request->header( "Cookie", $cookie );
for ( my $j = 0 ; $j < 5 ; $j++ ) {
$time = time();
$response = $ua->request( $request, \&cb_content );
$time2 = time() - $time;
push @{ $handler[$i] }, $time2;
}
}
#close LOG;
print "Result
+-----+-----------+----------+---------+-----------------------------------------+
| Req | Auth form | Post req | Menu | 5 access to test1.example.com |
+-----+-----------+----------+---------+-----------------------------------------+
";
# 1 | 0.17408 | 0.03393 | 0.04451 | 0.02144 0.00719 0.00717 0.00717 0.00709
for ( my $i = 0 ; $i < NB ; $i++ ) {
printf
"| %-3d | %3.5f | %3.5f | %3.5f | %3.5f %3.5f %3.5f %3.5f %3.5f |\n",
$i + 1, $get[$i], $post[$i], $menu[$i], @{ $handler[$i] };
}
print
"+-----+-----------+----------+---------+-----------------------------------------+\n";
sub cb_content {
#print LOG shift;
}