Class: RawkLog::Stat
- Inherits:
-
Object
- Object
- RawkLog::Stat
- Defined in:
- lib/rawk_log/stat.rb
Constant Summary collapse
- DEFAULT_LABEL_SIZE =
30
- HEADER =
"Count Sum(secs) Max Median Avg Min Std"
Class Method Summary collapse
Instance Method Summary collapse
- #add(value) ⇒ Object
- #average ⇒ Object
- #count ⇒ Object
- #header(label_size = DEFAULT_LABEL_SIZE) ⇒ Object
-
#initialize(key) ⇒ Stat
constructor
A new instance of Stat.
- #key ⇒ Object
- #max ⇒ Object
- #median ⇒ Object
- #min ⇒ Object
- #standard_deviation ⇒ Object
- #sum ⇒ Object
- #to_s(label_size = DEFAULT_LABEL_SIZE) ⇒ Object
Constructor Details
#initialize(key) ⇒ Stat
Returns a new instance of Stat.
9 10 11 12 13 14 15 16 17 |
# 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 |
Class Method Details
.test ⇒ Object
81 82 83 84 85 86 87 88 89 90 91 92 |
# 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 |
Instance Method Details
#add(value) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 |
# 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 ⇒ Object
55 56 57 |
# File 'lib/rawk_log/stat.rb', line 55 def average @count > 0 ? @sum/@count : @sum end |
#count ⇒ Object
39 40 41 |
# File 'lib/rawk_log/stat.rb', line 39 def count @count end |
#header(label_size = DEFAULT_LABEL_SIZE) ⇒ Object
31 32 33 |
# File 'lib/rawk_log/stat.rb', line 31 def header(label_size = DEFAULT_LABEL_SIZE) sprintf "%*s %s" % [-label_size, "Request", HEADER] end |
#key ⇒ Object
35 36 37 |
# File 'lib/rawk_log/stat.rb', line 35 def key @key end |
#max ⇒ Object
51 52 53 |
# File 'lib/rawk_log/stat.rb', line 51 def max @max end |
#median ⇒ Object
59 60 61 62 63 64 65 66 |
# 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 ⇒ Object
47 48 49 |
# File 'lib/rawk_log/stat.rb', line 47 def min @min end |
#standard_deviation ⇒ Object
68 69 70 71 |
# 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 ⇒ Object
43 44 45 |
# File 'lib/rawk_log/stat.rb', line 43 def sum @sum end |
#to_s(label_size = DEFAULT_LABEL_SIZE) ⇒ Object
73 74 75 76 77 78 79 |
# 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 |