Class: Chaos::Instability::MemoryUsage
- Inherits:
-
Object
- Object
- Chaos::Instability::MemoryUsage
- Defined in:
- lib/chaos/instability/memory_usage.rb
Instance Method Summary collapse
- #call(duration_in_seconds:, memory_limit_in_megabytes:) ⇒ Object
-
#initialize(sleep_provider: Kernel, accum: [], chunk_size_in_bytes: MEGABYTES_IN_BYTES, single_byte_character: SINGLE_BYE_CHARACTER, clock: Time) ⇒ MemoryUsage
constructor
A new instance of MemoryUsage.
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 |