defunkt (owner)

Fork Of

Revisions

gist: 211442 Download_button fork
public
Public Clone URL: git://gist.github.com/211442.git
Embed All Files: show embed
autobench_grapher.rb #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
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