This is my weak attempt at automating a mundane Apache test, trying to telnet in to port 80 and doing a HTTP GET. It's probably not what Net::Telnet was meant to do. Could anyone offer hints on ways to do this better (eg. so it works)?
#!/usr/bin/perl -w
use strict;
use Time::HiRes qw( time tv_interval );
use Net::Telnet ();
my $hosts = join ' ', @ARGV;
unless ($hosts){
die "Usage: ruffbench <host> [<host2> <host3> ...]\n";
}
my $port = '80';
my $t = new Net::Telnet;
my $get = "GET / HTTP/1.0\n\n";
my $output;
foreach my $host ($hosts) {
print "Connecting to $host. Starting timer.\n";
print $t->dump_log(*STDERR); # no debugging is seen! :|
my $start = [ time() ];
$t->open(Host=>$host, Port=>$port);
print "Connected to $host. Sending request...\n";
print $t->waitfor(String=>"HTTP", Timeout=>5);
$t->print($get);
print $t->waitfor(String=>"Content-Type", Timeout=>5);
my $end = [ time() ];
$t->close;
print "Connection closed. Timer stopped.\n\n";
print "Time for simple GET from $host: "
. tv_interval($start, $end)
. " seconds.\n";
}
I'm not sure why, but I get no debugging info, even if I swap out *STDERR with, say, "dump.log".
Humbly,
Adam