Sha256: b0f24c6837df233c9ebf21d52bc5447e346037859d13b20f18126e790e04e412

Contents?: true

Size: 1.08 KB

Versions: 1

Compression:

Stored size: 1.08 KB

Contents

require 'test_helper'

class Workhorse::PoolTest < WorkhorseTest
  def test_idle
    with_pool 5 do |p|
      assert_equal 5, p.idle

      4.times do |_i|
        p.post do
          sleep 1
        end
      end

      sleep 0.5
      assert_equal 1, p.idle

      sleep 1
      assert_equal 5, p.idle
    end
  end

  def test_overflow
    with_pool 5 do |p|
      5.times { p.post { sleep 1 } }

      exception = assert_raises do
        p.post { sleep 1 }
      end

      assert_equal 'All threads are busy.', exception.message
    end
  end

  def test_work
    with_pool 5 do |p|
      counter = Concurrent::AtomicFixnum.new(0)

      5.times do
        p.post do
          sleep 1
          counter.increment
        end
      end

      sleep 1.2

      assert_equal 5, counter.value

      2.times do
        p.post do
          sleep 1
          counter.increment
        end
      end

      sleep 1.2

      assert_equal 7, counter.value
    end
  end

  private

  def with_pool(size)
    p = Workhorse::Pool.new(size)
    begin
      yield(p)
    ensure
      p.shutdown
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
workhorse-0.0.2 test/workhorse/pool_test.rb