Class: Evidence::LittlesLawAnalysis

Inherits:
Object
  • Object
show all
Defined in:
lib/evidence/littles_law_analysis.rb

Overview

Little’s Law analysis, input stream log should include the following data => {:timestamp, :response => :completed_time}

Defined Under Namespace

Classes: Result

Instance Method Summary collapse

Constructor Details

#initialize(time_window) ⇒ LittlesLawAnalysis

time_window: second



36
37
38
# File 'lib/evidence/littles_law_analysis.rb', line 36

def initialize(time_window)
  @time_window = time_window
end

Instance Method Details

#[](block) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/evidence/littles_law_analysis.rb', line 40

def [](block)
  result = nil
  lambda do |log|
    timestamp = Time.parse(log[:request][:timestamp])
    if result.nil?
      result = Result.new(timestamp, @time_window)
    else
      if result.ended?(timestamp)
        block.call(result.value)
        result = result.next
      end
    end
    result.add(log[:response][:completed_time].to_i)
  end
end