class RawkLog::Stat
Constants
- DEFAULT_LABEL_SIZE
- HEADER
Public Class Methods
new(key)
click to toggle source
# File lib/rawk_log/stat.rb, line 9 def initialize(key) @key=key @min = nil @max = nil @sum = 0 @sum_squares = 0 @count = 0 @values = [] end
test()
click to toggle source
# File lib/rawk_log/stat.rb, line 81 def self.test stat = Stat.new(30) stat.add(5) stat.add(6) stat.add(8) stat.add(9) results = [7==stat.median ? "median Success" : "median Failure"] results <<= (7==stat.average ? "average Success" : "average Failure") results <<= (158==(stat.standard_deviation*100).round ? "std Success" : "std Failure") puts results.join("\n") exit (results.select { |m| m =~ /Failure/ }.size) end
Public Instance Methods
add(value)
click to toggle source
# File lib/rawk_log/stat.rb, line 19 def add(value) value=1.0*value @count+=1 @min = value unless @min @min = value if value<@min @max = value unless @max @max = value if value>@max @sum += value @sum_squares += value*value @values << value end
average()
click to toggle source
# File lib/rawk_log/stat.rb, line 55 def average @count > 0 ? @sum/@count : @sum end
count()
click to toggle source
# File lib/rawk_log/stat.rb, line 39 def count @count end
header(label_size = DEFAULT_LABEL_SIZE)
click to toggle source
# File lib/rawk_log/stat.rb, line 31 def header(label_size = DEFAULT_LABEL_SIZE) sprintf "%*s %s" % [-label_size, "Request", HEADER] end
key()
click to toggle source
# File lib/rawk_log/stat.rb, line 35 def key @key end
max()
click to toggle source
# File lib/rawk_log/stat.rb, line 51 def max @max end
median()
click to toggle source
# File lib/rawk_log/stat.rb, line 59 def median return nil unless @values l = @values.length return nil unless l>0 @values.sort! return (@values[l/2-1]+@values[l/2])/2 if l%2==0 @values[(l+1)/2-1] end
min()
click to toggle source
# File lib/rawk_log/stat.rb, line 47 def min @min end
standard_deviation()
click to toggle source
# File lib/rawk_log/stat.rb, line 68 def standard_deviation return 0 if @count<=1 Math.sqrt((@sum_squares - (@sum*@sum/@count))/ (@count)) end
sum()
click to toggle source
# File lib/rawk_log/stat.rb, line 43 def sum @sum end
to_s(label_size = DEFAULT_LABEL_SIZE)
click to toggle source
# File lib/rawk_log/stat.rb, line 73 def to_s(label_size = DEFAULT_LABEL_SIZE) if count > 0 sprintf("%*s %6d %9.2f %7d %7d %7d %7d %7d", -label_size, key, count, sum, max*1000.0, median*1000.0, average*1000.0, min*1000.0, standard_deviation*1000.0) else sprintf("%*s %6d", -label_size, key, 0) end end