jinyedge's note
{http://www.jinyedge.pe.kr}


Hi, this is jinyedge. I'm a software developer. I hope you can find some useful information in my homepage.


jinyedge at gmail.com
Since 2001.12.05

 

 
Subj Cont
 
Subj: Perl, Proxy server performance test.
Mtime: 2010-02-25 20:25:11

use strict;
use Win32::OLE;
use Time::HiRes qw /usleep/;
use Win32::Registry;
use POSIX qw/strftime/;

#----------------------------------------------------------------
# Usage: perf-test.pl [addr] [port]
# ex) perf-test.pl 192.168.0.1 8080
#
#----------------------------------------------------------------
# Global.
my @urls = qw(
www.spamtitan.com
www.boards.ie
www.daft.ie
www.msn.com
www.google.com
www.google.ie
www.advertiser.ie
www.blooomberg.com
www.ibm.com
www.sun.com
www.redhat.com
www.cpan.org
www.perl.com
www.slashdot.org
www.discoverireland.com
www.gov.ie
www.bbc.co.uk
espn.go.com
www.skysports.com
www.independent.ie
www.rte.ie
www.Ireland.com
www.cnn.com
news.google.ie
www.irishtimes.com
www.met.ie
weather.yahoo.com
www.wunderground.com
news.bbc.co.uk
www.msnbc.msn.com
www.weather.com
www.askmoby.com
);

my $ha;
$HKEY_CURRENT_USER->Open("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings"
    , $ha) || die $!;

my $IE  = Win32::OLE->new("InternetExplorer.Application");
$IE->{visible} = 1;

#----------------------------------------------------------------
sub get_page{
    my $url = shift;

    $IE->Navigate($url);

    my $cnt = 0;
    while($IE->busy){
        $cnt > 10 and last;

        sleep 1;
        $cnt++;
    }

    $cnt = 0;
    while($IE->readyState != 4){
        $cnt > 10 and last;

        sleep 1;
        $cnt++;
    }
}

#----------------------------------------------------------------
sub test_proxy{
    my $addr = shift;
    my $port = shift;

    $port or $port = 8881;

    unless($addr){
        print "No proxy:\n";

        $ha->SetValueEx(`ProxyEnable`, undef, REG_DWORD, 0);
        $ha->SetValueEx(`ProxyServer`, undef, REG_SZ, ``);

        sleep 1;
    }
    else{
        print "$addr:\n";
        $ha->SetValueEx(`ProxyEnable`, undef, REG_DWORD, 1);
        $ha->SetValueEx(`ProxyServer`, undef, REG_SZ, "${addr}:${port}");

        sleep 1;
    }

    my $start = time;
    for my $m(1..5){
        for my $url(@urls){
            get_page($url);
        }

        my $res_time = time - $start;
        print $res_time, "\n";
    }

    my $res_time = time - $start;

    my $now = strftime("%Y-%m-%d %H:%M:%S", localtime(time));
    print "$addr, $now, total = $res_time\n";
}

#----------------------------------------------------------------
# Main.
$| = 1;

test_proxy(shift, shift);

$IE->quit;
$ha->Close();