@@ -0,0 +1,91 @@
# Used to graph results from autobench
#
# Usage: ruby autobench_grapher.rb result_from_autobench.tsv
#
# This will generate three svg & png graphs
require "rubygems"
require "scruffy"
require 'csv'
require 'yaml'
class ResultGrapher
def self . run
new ( ARGV . first ) . run
end
def initialize ( result_file )
@result_file = result_file
@stats = {
:attempted_request_rate => [ ] ,
:average_reply_rate => [ ] ,
:average_response_time => [ ] ,
:errors => [ ]
}
end
def run
parse_log
generate_graph
end
def parse_log
File . open ( @result_file ) . each do |line |
row = line . split ( "\t " )
next if row [ 0 ] =~ /^\D +/
@stats [ :attempted_request_rate ] << row [ 0 ] . to_f
@stats [ :average_reply_rate ] << row [ 4 ] . to_f
@stats [ :average_response_time ] << row [ 7 ] . to_f
@stats [ :errors ] << row [ 9 ] . to_f
end
end
def file_root
@result_file . gsub ( /\. .*/ , "" )
end
def generate_graph
g = Scruffy ::Graph . new
g . title = "Average Reply Rate (Responses per Second)"
g . renderer = Scruffy ::Renderers ::Standard . new
g . add :area , "Attempted Request Rate" , @stats [ :attempted_request_rate ]
g . add :line , "Average Reply Rate" , @stats [ :average_reply_rate ]
g . point_markers = @stats [ :attempted_request_rate ]
g . render :to => "#{ file_root } _average_reply_rate.svg"
g . render :width => 600 , :height => 400 ,
:to => "#{ file_root } _average_reply_rate.png" , :as => 'png'
g2 = Scruffy ::Graph . new
g2 . title = "Average Response Time (in ms)"
g2 . renderer = Scruffy ::Renderers ::Standard . new
g2 . add :line , "Average Response Time" , @stats [ :average_response_time ]
g2 . point_markers = @stats [ :attempted_request_rate ]
g2 . render :to => "#{ file_root } _average_response_time.svg"
g2 . render :width => 600 , :height => 400 ,
:to => "#{ file_root } _average_response_time.png" , :as => 'png'
g3 = Scruffy ::Graph . new
g3 . title = "Errors"
g3 . renderer = Scruffy ::Renderers ::Standard . new
g3 . add :line , "Errors" , @stats [ :errors ]
g3 . point_markers = @stats [ :attempted_request_rate ]
g3 . render :to => "#{ file_root } _errors.svg"
g3 . render :width => 600 , :height => 400 ,
:to => "#{ file_root } _errors.png" , :as => 'png'
end
end
ResultGrapher . run