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