mirror of
https://github.com/mperham/connection_pool
synced 2023-03-27 23:22:21 -04:00
0ebb059111
This also supports forward-compatibility through use of timeout as a keyword argument.
130 lines
2 KiB
Ruby
130 lines
2 KiB
Ruby
require_relative 'helper'
|
|
|
|
class TestConnectionPoolTimedStack < Minitest::Test
|
|
|
|
def setup
|
|
@stack = ConnectionPool::TimedStack.new { Object.new }
|
|
end
|
|
|
|
def test_empty_eh
|
|
stack = ConnectionPool::TimedStack.new(1) { Object.new }
|
|
|
|
refute_empty stack
|
|
|
|
popped = stack.pop
|
|
|
|
assert_empty stack
|
|
|
|
stack.push popped
|
|
|
|
refute_empty stack
|
|
end
|
|
|
|
def test_length
|
|
stack = ConnectionPool::TimedStack.new(1) { Object.new }
|
|
|
|
assert_equal 1, stack.length
|
|
|
|
popped = stack.pop
|
|
|
|
assert_equal 0, stack.length
|
|
|
|
stack.push popped
|
|
|
|
assert_equal 1, stack.length
|
|
end
|
|
|
|
def test_pop
|
|
object = Object.new
|
|
@stack.push object
|
|
|
|
popped = @stack.pop
|
|
|
|
assert_same object, popped
|
|
end
|
|
|
|
def test_pop_empty
|
|
e = assert_raises Timeout::Error do
|
|
@stack.pop timeout: 0
|
|
end
|
|
|
|
assert_equal 'Waited 0 sec', e.message
|
|
end
|
|
|
|
def test_pop_empty_2_0_compatibility
|
|
e = assert_raises Timeout::Error do
|
|
@stack.pop 0
|
|
end
|
|
|
|
assert_equal 'Waited 0 sec', e.message
|
|
end
|
|
|
|
def test_pop_full
|
|
stack = ConnectionPool::TimedStack.new(1) { Object.new }
|
|
|
|
popped = stack.pop
|
|
|
|
refute_nil popped
|
|
assert_empty stack
|
|
end
|
|
|
|
def test_pop_wait
|
|
thread = Thread.start do
|
|
@stack.pop
|
|
end
|
|
|
|
Thread.pass while thread.status == 'run'
|
|
|
|
object = Object.new
|
|
|
|
@stack.push object
|
|
|
|
assert_same object, thread.value
|
|
end
|
|
|
|
def test_pop_shutdown
|
|
@stack.shutdown { }
|
|
|
|
assert_raises ConnectionPool::PoolShuttingDownError do
|
|
@stack.pop
|
|
end
|
|
end
|
|
|
|
def test_push
|
|
stack = ConnectionPool::TimedStack.new(1) { Object.new }
|
|
|
|
conn = stack.pop
|
|
|
|
stack.push conn
|
|
|
|
refute_empty stack
|
|
end
|
|
|
|
def test_push_shutdown
|
|
called = []
|
|
|
|
@stack.shutdown do |object|
|
|
called << object
|
|
end
|
|
|
|
@stack.push Object.new
|
|
|
|
refute_empty called
|
|
assert_empty @stack
|
|
end
|
|
|
|
def test_shutdown
|
|
@stack.push Object.new
|
|
|
|
called = []
|
|
|
|
@stack.shutdown do |object|
|
|
called << object
|
|
end
|
|
|
|
refute_empty called
|
|
assert_empty @stack
|
|
end
|
|
|
|
end
|
|
|