diff options
Diffstat (limited to 'ACE/apps/JAWS/clients/WebSTONE/bin/wscollect.pl')
-rwxr-xr-x | ACE/apps/JAWS/clients/WebSTONE/bin/wscollect.pl | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/ACE/apps/JAWS/clients/WebSTONE/bin/wscollect.pl b/ACE/apps/JAWS/clients/WebSTONE/bin/wscollect.pl new file mode 100755 index 00000000000..13511bdbb53 --- /dev/null +++ b/ACE/apps/JAWS/clients/WebSTONE/bin/wscollect.pl @@ -0,0 +1,142 @@ +#!/pkg/gnu/bin//perl +# +#$Id$ +# +# $Header$ +# updated version of the old wscollect script which goes through +# webstone run directories and summarizes the output in tabular +# format. +# syc 4/25/96 +# + +require "find.pl"; + +# +# the list @runs contains the timestamps for the runs which are found +# during the traversal of the runs directory. This list is used for +# indices into the associative arrays for storing run information. +# +# $numclients{ $time } - number of clients for the run +# $connrate{ $time } - connection rate average +# $littlesload{ $time } - little's load factor +# $latency{ $time } - latency average +# $error{ $time } - error rate +# $throughput{ $time } - throughput + +local( @runs, + %numclients, + %connrate, + %littlesload, + %latency, + %error, + %throughput); + +# Got rid of the trick hack of the title names, someone can put it +# back in later +@title = ( "Timestamp", + "Total number of clients", + "Connection rate average (conn/s)", + "Little's Load Factor", + "Average Latency (seconds)", + "Error Level (%)", + "Throughput avg. for all connections (MBits/s)"); + + +push( @ARGV, ".") if ( !@ARGV ); + +for (@ARGV) { + &find( $_ ); +} + +&PrintOutput; + +1; + +sub wanted { + local( $filename ) = $_; + + return unless ( $filename =~ /run/ ); + + local( $instats) = 0; + local( $runtime, $tag, $data, $cruft, @cruft ); + + open( FILE, $filename ) || return; # bail if failed to open + $runtime = `pwd`; + @cruft = split(/\//,$runtime); + $runtime = pop( @cruft); + chop( $runtime); + push( @runs, $runtime); + while ( $line = <FILE>) { + if (! $instats) { + $instats = 1 if ( $line =~ /^WEBSTONE 2\.0 results/ ); + next; + } + chop( $line ); + ( $tag, $data ) = split( /:?\s{2,}|\t/, $line); + + # perl hack to emulate case/switch statement + $tag =~ /number of clients/ && + ($numclients{ $runtime } = $data, next); + $tag =~ /error rate/ && + (( $error{ $runtime }) = $data =~ /([\d\.]+)/, next); + $tag =~ /connection rate/ && + (( $connrate{ $runtime }) = $data =~ /([\d\.]+)/, next); + $tag =~ /Server thruput/ && + (( $throughput{ $runtime }) = $data =~ /([\d\.]+)/, next); + $tag =~ /Little's Load/ && + (( $littlesload{ $runtime}) = $data =~ /([\d\.]+)/, next); # ' + $tag =~ /Average response time/ && + (( $latency{ $runtime } ) = $data =~ /([\d\.]+)/, next); + } + close( FILE ); + unless ( $throughput{ $runtime} ) { + pop( @runs); # if we didn't get a throughput, then the + # data is incomplete and just drop this run + } +} + + +sub printdata { + local ($timestamp, $num_clients, $conn_rate, + $load, $latency, $error, $tput) = @_; + format STDOUT = +@<<<<<<<<<<< @###### @######.## @####.## @###.#### @####.#### @######.## +$timestamp, $num_clients, $conn_rate, $load, $latency, $error, $tput +. + + if (!$printedTitles) { + $printedTitles = 1; + ($ttimestamp, $tnum_clients, $tconn_rate, + $tload, $tlatency, $terror, $ttput) = @title; + format STDOUT_TOP = +^||||||||||| ^||||||| ^||||||||| ^||||||| ^||||||||| ^||||||||| ^||||||||||| +$ttimestamp, $tnum_clients, $tconn_rate, $tload, $tlatency, $terror, $ttput +^||||||||||| ^||||||| ^||||||||| ^||||||| ^||||||||| ^||||||||| ^||||||||||| +$ttimestamp, $tnum_clients, $tconn_rate, $tload, $tlatency, $terror, $ttput +^||||||||||| ^||||||| ^||||||||| ^||||||| ^||||||||| ^||||||||| ^||||||||||| +$ttimestamp, $tnum_clients, $tconn_rate, $tload, $tlatency, $terror, $ttput +^||||||||||| ^||||||| ^||||||||| ^||||||| ^||||||||| ^||||||||| ^||||||||||| +$ttimestamp, $tnum_clients, $tconn_rate, $tload, $tlatency, $terror, $ttput +^||||||||||| ^||||||| ^||||||||| ^||||||| ^||||||||| ^||||||||| ^||||||||||| +$ttimestamp, $tnum_clients, $tconn_rate, $tload, $tlatency, $terror, $ttput +---------------------------------------------------------------------------- +. + # write STDOUT_TOP; + } # end if printedTitles + write STDOUT; +} + +sub PrintOutput { + local( $runtime ); + + for $runtime (sort @runs) { + &printdata( $runtime, $numclients{ $runtime}, $connrate{ $runtime}, + $littlesload{ $runtime}, $latency{ $runtime}, $error{ $runtime}, + $throughput{ $runtime}); + } +} + + + + + |