Sha256: 7a473ec82f64e439974f6129254d0afeb54cc4acad611a7b1c53f71f5ad032a5

Contents?: true

Size: 1.28 KB

Versions: 4

Compression:

Stored size: 1.28 KB

Contents

RSpec.describe WorkerKiller::MemoryLimiter do
  let(:logger){ Logger.new(nil) }

  subject{ described_class.new(**options) }
  let(:mb){ 1024 * 1024 }
  let(:min){ rand(50..100) * mb }
  let(:max){ min + rand(100) * mb }
  let(:check_cycle){ 5 }
  let(:options){ { min: min, max: max, check_cycle: check_cycle, verbose: true} }

  it { is_expected.to have_attributes(min: min, max: max, limit: a_value_between(min, max)) }

  def skip_cycles(object, cycles)
    (cycles - 1).times do
      expect(object.check).to be_nil
    end
  end

  it 'expect to skip check while less than cycle count' do
    expect(GetProcessMem).not_to receive(:new)

    skip_cycles(subject, check_cycle)
  end

  it 'expect to skip check after cycle count reached' do
    memory = instance_double(GetProcessMem)
    expect(memory).to receive(:bytes).and_return(min - 1)
    expect(GetProcessMem).to receive(:new).and_return(memory)

    skip_cycles(subject, check_cycle)
    expect(subject.check).to be_falsey
  end

  it 'expect call reaction when check succeded' do
    memory = instance_double(GetProcessMem)
    expect(memory).to receive(:bytes).and_return(subject.limit + 1)
    expect(GetProcessMem).to receive(:new).and_return(memory)

    skip_cycles(subject, check_cycle)
    expect(subject.check).to be_truthy
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
worker_killer-1.0.2.187852 spec/memory_limiter_spec.rb
worker_killer-1.0.2.187805 spec/memory_limiter_spec.rb
worker_killer-1.0.2.187732 spec/memory_limiter_spec.rb
worker_killer-1.0.1.83603 spec/memory_limiter_spec.rb