Sha256: cfaa54e5900d0eb59af3b8860525ca8c90f87434720e952ada817c9de05ed913

Contents?: true

Size: 1.07 KB

Versions: 13

Compression:

Stored size: 1.07 KB

Contents

# frozen_string_literal: true

require_relative 'helper'

class ThrottlerTest < MiniTest::Test
  def test_throttler_with_rate
    t = Polyphony::Throttler.new(10)
    buffer = []
    t0 = Time.now
    f = spin { loop { t.process { buffer << 1 } } }
    sleep 0.2
    f.stop
    elapsed = Time.now - t0
    expected = (elapsed * 10).to_i
    assert buffer.size >= expected - 1 && buffer.size <= expected + 1
  ensure
    t.stop
  end

  def test_throttler_with_hash_of_rate
    t = Polyphony::Throttler.new(rate: 20)
    buffer = []
    f = spin do
      loop { t.process { buffer << 1 } }
    end
    sleep 0.25
    f.stop
    assert (2..6).include?(buffer.size)
  ensure
    t.stop
  end

  def test_throttler_with_hash_of_interval
    t = Polyphony::Throttler.new(interval: 0.01)
    buffer = []
    f = spin { loop { t.process { buffer << 1 } } }
    sleep 0.02
    f.stop
    assert buffer.size >= 2
    assert buffer.size <= 3
  ensure
    t.stop
  end

  def test_throttler_with_invalid_argument
    assert_raises RuntimeError do
      Polyphony::Throttler.new(:foobar)
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
polyphony-0.45.5 test/test_throttler.rb
polyphony-0.45.4 test/test_throttler.rb
polyphony-0.45.2 test/test_throttler.rb
polyphony-0.45.0 test/test_throttler.rb
polyphony-0.44.0 test/test_throttler.rb
polyphony-0.43.11 test/test_throttler.rb
polyphony-0.43.10 test/test_throttler.rb
polyphony-0.43.9 test/test_throttler.rb
polyphony-0.43.8 test/test_throttler.rb
polyphony-0.43.6 test/test_throttler.rb
polyphony-0.43.5 test/test_throttler.rb
polyphony-0.43.4 test/test_throttler.rb
polyphony-0.43.3 test/test_throttler.rb