Class: Chaos::Instability::MemoryUsage

Inherits:
Object
  • Object
show all
Defined in:
lib/chaos/instability/memory_usage.rb

Instance Method Summary collapse

Constructor Details

#initialize(sleep_provider: Kernel, accum: [], chunk_size_in_bytes: MEGABYTES_IN_BYTES, single_byte_character: SINGLE_BYE_CHARACTER, clock: Time) ⇒ MemoryUsage

Returns a new instance of MemoryUsage.



9
10
11
12
13
14
15
16
# File 'lib/chaos/instability/memory_usage.rb', line 9

def initialize(sleep_provider: Kernel, accum: [], chunk_size_in_bytes: MEGABYTES_IN_BYTES,
  single_byte_character: SINGLE_BYE_CHARACTER, clock: Time)
  @sleep_provider = sleep_provider
  @accum = accum
  @chunk_size_in_bytes = chunk_size_in_bytes
  @single_byte_character = single_byte_character
  @clock = clock
end

Instance Method Details

#call(duration_in_seconds:, memory_limit_in_megabytes:) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
# File 'lib/chaos/instability/memory_usage.rb', line 18

def call(duration_in_seconds:, memory_limit_in_megabytes:)
  start_time = clock.now
  memory_limit_in_megabytes.times.with_object(accum) do |_index, memory_leaking_accum|
    memory_leaking_accum << generate_chunk
  end
  current_time = clock.now
  time_already_spent = current_time - start_time
  time_left = [duration_in_seconds - time_already_spent , 0].max

  sleep_provider.sleep(time_left)
end