Module: TimeWindowDropCollector::Utils

Included in:
Storage
Defined in:
lib/time_window_drop_collector/utils.rb

Instance Method Summary collapse

Instance Method Details

#grouping_count(key_values) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
# File 'lib/time_window_drop_collector/utils.rb', line 2

def grouping_count( key_values )
  groups = key_values.group_by { |k,v| k.match( /drop_window_(.*)_/ )[1]  }

  result = {}

  groups.each do |k,v|
    result[k] = v.inject(0) { |acc,e| acc += e[1].to_i }
  end

  result
end

#slice_millisecondsObject



36
37
38
# File 'lib/time_window_drop_collector/utils.rb', line 36

def slice_milliseconds
  @slice_milliseconds ||= ( window * 1000 ) / slices
end

#slice_start_timestamp(time) ⇒ Object



40
41
42
43
44
# File 'lib/time_window_drop_collector/utils.rb', line 40

def slice_start_timestamp( time )
  time_milliseconds = ( time.to_f * 1000 ).truncate

  ( time_milliseconds / slice_milliseconds ) * slice_milliseconds
end

#timestampObject



32
33
34
# File 'lib/time_window_drop_collector/utils.rb', line 32

def timestamp
  Time.now
end

#timestamp_key(key, time = timestamp) ⇒ Object



14
15
16
# File 'lib/time_window_drop_collector/utils.rb', line 14

def timestamp_key( key, time = timestamp )
  "drop_window_#{key}_#{slice_start_timestamp( time )}"
end

#timestamp_key_multi(keys, time = timestamp) ⇒ Object



18
19
20
# File 'lib/time_window_drop_collector/utils.rb', line 18

def timestamp_key_multi( keys, time = timestamp)
  keys.map { |key| timestamp_key( key, time) }.flatten
end

#window_keys(key, time = timestamp) ⇒ Object



22
23
24
25
26
# File 'lib/time_window_drop_collector/utils.rb', line 22

def window_keys( key, time = timestamp )
  ( 0..( slices - 1 ) ).map{ |i|
    timestamp_key( key, time - ( ( i*slice_milliseconds ) / 1000 ) )
  }
end

#window_keys_multi(keys) ⇒ Object



28
29
30
# File 'lib/time_window_drop_collector/utils.rb', line 28

def window_keys_multi( keys )
  keys.map { |key| window_keys( key ) }.flatten
end