ETC3
CS290F Fall 2006 - UCSB Computer Science - Thorsten von Eicken
run.sh script
#!/bin/bash
httperf_script=$1
directory=$2
maxsesh=100
mkdir ${directory}
touch ./${directory}/COLLECT.txt
for x in 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0
do
echo "script :: ${httperf_script} rate :: ${x} directory :: ${directory}"
httperf --hog --server=domu-12-31-34-00-02-5a.usma2.compute.amazonaws.com --wsesslog=${maxsesh},0,${httperf_script} --session-cookie --print-reply --rate ${x} > ./${directory}/session${maxsesh}_rate${x}.txt
echo "HTTPERF RATE ${x} :::" >> ./${directory}/COLLECT.txt
tail -28 ./${directory}/session${maxsesh}_rate${x}.txt >> ./${directory}/COLLECT.txt
done
Usage
./run.sh <http_test_script> <new_directory>
This will create a new directory <new_directory> in the current folder than generate COLLECT.txt that contains the last 28 lines from each run.
Then, you need to run "parse.pl" on COLLECT.txt, which parses and creates a summary table.
parse.pl
#!/usr/bin/perl
$filename = $ARGV[0];
print "Input :: $filename\n";
open(IN, "<$filename");
my $line;
my $rate = "nil";
my $connection_rate = "nil";
my $request_rate = "nil";
my $reply_rate = "nil";
my $reply_time = "nil";
my $session_rate =" nil";
print "HTTPERF\tConnection rate [conn/s]\tRequest rate [req/s]\tReplay rate[replies/s]\tReplay time[ms]\tSession rate[sess/s]\n";
while($line = <IN>){
chomp $line;
# print "$line\n";
if ($line =~ m/^HTTPERF RATE ([0-9\.]+)/){
$rate = $1;
}elsif ( $line =~m/^Connection rate: ([0-9\.]+) / ){
$connection_rate = $1;
}elsif ( $line =~ m/^Request rate: ([0-9\.]+) / ){
$request_rate = $1;
}elsif ( $line =~ m/^Reply rate \[replies\/s\]: min [0-9\.]+ avg ([0-9\.]+) / ){
$reply_rate = $1;
}elsif ( $line =~ m/Reply time \[ms\]: response ([0-9\.]+) .*/){
$reply_time = $1;
}elsif ( $line =~ m/^Session rate \[sess\/s\]: min [0-9\.]+ avg ([0-9\.]+) / ){
$session_rate = $1;
print "$rate\t$connection_rate\t$request_rate\t$reply_rate\t$reply_time\t$session_rate\n";
};
};
;
usage
>perl parse.pl COLLECT.txt
