class Chaos::Instability::MemoryUsage

Constants

MEGABYTES_IN_BYTES
SINGLE_BYE_CHARACTER

Attributes

accum[R]
chunk_size_in_bytes[R]
clock[R]
single_byte_character[R]
sleep_provider[R]

Public Class Methods

new(sleep_provider: Kernel, accum: [], chunk_size_in_bytes: MEGABYTES_IN_BYTES, single_byte_character: SINGLE_BYE_CHARACTER, clock: Time) click to toggle source
# 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

Public Instance Methods

call(duration_in_seconds:, memory_limit_in_megabytes:) click to toggle source
# 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

Private Instance Methods

generate_chunk() click to toggle source
# File lib/chaos/instability/memory_usage.rb, line 32
def generate_chunk
  single_byte_character * chunk_size_in_bytes
end