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