Class: CucumberTimingPresenter::UsageRecord
- Inherits:
-
Object
- Object
- CucumberTimingPresenter::UsageRecord
- Defined in:
- lib/cucumber_timing_presenter/usage_record.rb
Instance Method Summary collapse
- #all ⇒ Object
- #average_times_plot_data ⇒ Object
- #calculate ⇒ Object
- #greatest_variation ⇒ Object
- #highest_average ⇒ Object
- #highest_elapsed_time ⇒ Object
-
#initialize ⇒ UsageRecord
constructor
A new instance of UsageRecord.
- #record(step_name, duration) ⇒ Object
- #sample_variance(data) ⇒ Object
- #sort_by_property(property) ⇒ Object
- #standard_deviation(sample_variance) ⇒ Object
- #step_part_of_total ⇒ Object
- #total_elapsed_time ⇒ Object
- #total_times_plot_data ⇒ Object
Constructor Details
#initialize ⇒ UsageRecord
Returns a new instance of UsageRecord.
3 4 5 |
# File 'lib/cucumber_timing_presenter/usage_record.rb', line 3 def initialize @record = Hash.new end |
Instance Method Details
#all ⇒ Object
29 30 31 |
# File 'lib/cucumber_timing_presenter/usage_record.rb', line 29 def all @record end |
#average_times_plot_data ⇒ Object
49 50 51 |
# File 'lib/cucumber_timing_presenter/usage_record.rb', line 49 def average_times_plot_data @record.map {|step_name, data| data[:average].to_f}.sort.reverse end |
#calculate ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/cucumber_timing_presenter/usage_record.rb', line 16 def calculate @record.each do |key, usage| usage[:total] = usage[:instances].inject{|sum,x| sum + x } usage[:occurances] = usage[:instances].count usage[:average] = usage[:total].to_f / usage[:occurances].to_f usage[:fastest] = usage[:instances].sort.first usage[:slowest] = usage[:instances].sort.last usage[:variation] = usage[:slowest] - usage[:fastest] usage[:variance] = self.sample_variance usage[:instances] usage[:standard_deviation] = self.standard_deviation usage[:variance] end end |
#greatest_variation ⇒ Object
45 46 47 |
# File 'lib/cucumber_timing_presenter/usage_record.rb', line 45 def greatest_variation sort_by_property(:variation).reverse.first end |
#highest_average ⇒ Object
37 38 39 |
# File 'lib/cucumber_timing_presenter/usage_record.rb', line 37 def highest_average sort_by_property(:average).reverse.first end |
#highest_elapsed_time ⇒ Object
41 42 43 |
# File 'lib/cucumber_timing_presenter/usage_record.rb', line 41 def highest_elapsed_time sort_by_property(:total).reverse.first end |
#record(step_name, duration) ⇒ Object
7 8 9 10 11 12 13 14 |
# File 'lib/cucumber_timing_presenter/usage_record.rb', line 7 def record step_name, duration result = @record[step_name] result ||= Hash.new result[:instances] ||= [] result[:instances] << duration @record[step_name] ||= result end |
#sample_variance(data) ⇒ Object
65 66 67 68 69 70 71 72 73 74 |
# File 'lib/cucumber_timing_presenter/usage_record.rb', line 65 def sample_variance data occurances = data.count average = data.inject{|sum,x| sum + x } / occurances.to_f return nil if occurances <= 1 sum = data.inject(0){|acc,i|acc.to_f + (i.to_f - average)**2.0} return 1 / (occurances.to_f - 1.0) * sum.to_f end |
#sort_by_property(property) ⇒ Object
33 34 35 |
# File 'lib/cucumber_timing_presenter/usage_record.rb', line 33 def sort_by_property property @record.sort {|a,b| a.last[property.to_sym] <=> b.last[property.to_sym]} end |
#standard_deviation(sample_variance) ⇒ Object
76 77 78 79 80 |
# File 'lib/cucumber_timing_presenter/usage_record.rb', line 76 def standard_deviation sample_variance return nil if sample_variance.nil? return Math.sqrt(sample_variance) end |
#step_part_of_total ⇒ Object
57 58 59 |
# File 'lib/cucumber_timing_presenter/usage_record.rb', line 57 def step_part_of_total @record.map {|step_name, data| data[:total]}.sort.reverse end |
#total_elapsed_time ⇒ Object
61 62 63 |
# File 'lib/cucumber_timing_presenter/usage_record.rb', line 61 def total_elapsed_time @record.map {|step_name, data| data[:total]}.inject{|sum,x| sum + x } end |
#total_times_plot_data ⇒ Object
53 54 55 |
# File 'lib/cucumber_timing_presenter/usage_record.rb', line 53 def total_times_plot_data sort_by_property(:average).reverse.map {|step_name, data| data[:total].to_f} end |