Packages

The goal of ResourcePool (rsrc_pool_ex) Elixir library is reduce the overhead of creating new resources by reusing of the same resources among multiple processes.

Current section

Files

Jump to
rsrc_pool_ex test pool_add_test.exs
Raw

test/pool_add_test.exs

defmodule AddResourcePoolTest do
use ExUnit.Case, async: false
def set(:add), do: []
def set(:add_max_idle), do: [max_active: 2, max_idle: 2]
def set(:add_max_idle_neg), do: [max_idle: -1]
def set(_), do: []
setup %{test_name: testName} do
options = set(testName)
{:ok, pid} = ResourcePool.new(:test_pool, Factory, 0, options)
[pid: pid]
end
@tag test_name: :add
test "add", %{pid: pool} do
ResourcePool.borrow(pool)
ResourcePool.add(pool)
assert 2 == ResourcePoolTest.f(pool)
assert {1,1} == ResourcePoolTest.f2(pool)
ResourcePoolTest.check_activate_passivate(pool)
ResourcePool.borrow(pool)
assert {2,0} == ResourcePoolTest.f2(pool)
ResourcePoolTest.check_activate_passivate(pool)
end
@tag test_name: :add_max_idle
test "add with max idle", %{pid: pool} do
r1 = ResourcePool.borrow(pool)
r2 = ResourcePool.borrow(pool)
ResourcePool.return(pool, r1)
ResourcePool.return(pool, r2)
assert 2 == ResourcePoolTest.f(pool)
assert {0,2} == ResourcePoolTest.f2(pool)
ResourcePoolTest.check_activate_passivate(pool)
ResourcePool.add(pool)
assert 2 == ResourcePoolTest.f(pool)
assert {0,2} == ResourcePoolTest.f2(pool)
ResourcePoolTest.check_activate_passivate(pool)
end
@tag test_name: :add_max_idle_neg
test "add with negative max idle", %{pid: pool} do
for _x <- 1..10, do: ResourcePool.add(pool)
assert {0, 10} == ResourcePoolTest.f2(pool)
ResourcePoolTest.check_activate_passivate(pool)
for _x <- 1..10, do: ResourcePool.add(pool)
assert {0, 20} == ResourcePoolTest.f2(pool)
ResourcePoolTest.check_activate_passivate(pool)
end
end