Sha256: 7b70ff2d2e3f129d0e07fed5b0863b8880abaa3e23d4b43c2347fb162b1f9a39
Contents?: true
Size: 1.97 KB
Versions: 2
Compression:
Stored size: 1.97 KB
Contents
# frozen_string_literal: true require_relative 'helper' class ResourcePoolTest < MiniTest::Test def test_resource_pool_limit resources = [+'a', +'b'] pool = Polyphony::ResourcePool.new(limit: 2) { resources.shift } assert_equal 2, pool.limit assert_equal 0, pool.available assert_equal 0, pool.size results = [] 4.times { spin { snooze pool.acquire { |resource| results << resource snooze } } } 2.times { snooze } assert_equal 2, pool.limit assert_equal 0, pool.available assert_equal 2, pool.size 2.times { snooze } assert_equal ['a', 'b', 'a', 'b'], results 2.times { snooze } assert_equal 2, pool.limit assert_equal 2, pool.available assert_equal 2, pool.size end def test_single_resource_limit resources = [+'a', +'b'] pool = Polyphony::ResourcePool.new(limit: 1) { resources.shift } results = [] 10.times { spin { snooze pool.acquire { |resource| results << resource snooze } } } 20.times { snooze } assert_equal ['a'] * 10, results end def test_failing_allocator pool = Polyphony::ResourcePool.new(limit: 4) { raise } assert_raises { pool.acquire { } } end def test_method_delegation resources = [+'a', +'b'] pool = Polyphony::ResourcePool.new(limit: 2) { resources.shift } assert_respond_to pool, :upcase assert_equal 'A', pool.upcase end def test_preheat resources = [+'a', +'b'] pool = Polyphony::ResourcePool.new(limit: 2) { resources.shift } assert_equal 2, pool.limit assert_equal 0, pool.size pool.preheat! assert_equal 2, pool.size end def test_reentrant_resource_pool resources = [+'a', +'b'] pool = Polyphony::ResourcePool.new(limit: 1) { resources.shift } pool.acquire do |r| assert_equal 'a', r pool.acquire do |r| assert_equal 'a', r end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
polyphony-0.43.10 | test/test_resource_pool.rb |
polyphony-0.43.9 | test/test_resource_pool.rb |