module GoodData::Rest::Aggregator

class is responsible for storage and aggregation of REST calls information

Attributes

store[R]

Public Instance Methods

clear_store() click to toggle source
# File lib/gooddata/rest/rest_aggregator.rb, line 15
def clear_store
  @store.clear
end
initialize_store() click to toggle source
# File lib/gooddata/rest/rest_aggregator.rb, line 11
def initialize_store
  @store = {}
end
update_store(domain, method, duration, endpoint) click to toggle source
# File lib/gooddata/rest/rest_aggregator.rb, line 19
def update_store(domain, method, duration, endpoint)
  domain = domain.to_sym
  method = method.to_sym
  endpoint = endpoint.to_sym
  @store[domain] = {} unless @store.key?(domain)
  @store[domain][method] = {} unless @store[domain].key?(method)
  if @store[domain][method].key?(endpoint)
    record = @store[domain][method][endpoint]
    record[:min] = [duration, record[:min]].min
    record[:max] = [duration, record[:max]].max
    record[:avg] = (record[:avg] * record[:count] + duration).to_f / (record[:count] + 1)
    record[:count] += 1
    @store[domain][method][endpoint] = record
  else
    @store[domain][method][endpoint] = {
      :min => duration,
      :max => duration,
      :avg => duration,
      :count => 1,
      :method => method.to_s,
      :endpoint => endpoint.to_s,
      :domain => domain.to_s
    }
  end
end