58 lines
1.9 KiB
Erlang
58 lines
1.9 KiB
Erlang
%%% ----------------------------------------------------------------------------
|
|
%%% @copyright (C) 2013, Erlang Solutions Ltd
|
|
%%% @author Diana Parra Corbacho <diana.corbacho@erlang-solutions.com>
|
|
%%% @doc Fusco Client Pool tests
|
|
%%% @end
|
|
%%%-----------------------------------------------------------------------------
|
|
-module(fusco_cp_tests).
|
|
|
|
-include_lib("eunit/include/eunit.hrl").
|
|
|
|
-define(POOL, fusco_pool).
|
|
|
|
client_pool_test_() ->
|
|
{foreach,
|
|
fun() ->
|
|
{ok, Pid} = fusco_cp:start({"127.0.0.1", 5050, false}, [], 3),
|
|
erlang:register(?POOL, Pid),
|
|
Pid
|
|
end,
|
|
fun(Pid) ->
|
|
fusco_cp:stop(Pid)
|
|
end,
|
|
[
|
|
{timeout, 60000, {"Get client", fun get_client/0}},
|
|
{"Free client", fun free_client/0},
|
|
{"Unblock client", fun unblock_client/0}
|
|
]
|
|
}.
|
|
|
|
get_client() ->
|
|
?assertEqual(true, is_pid(fusco_cp:get_client(?POOL))),
|
|
?assertEqual(true, is_pid(fusco_cp:get_client(?POOL))),
|
|
?assertEqual(true, is_pid(fusco_cp:get_client(?POOL))),
|
|
?assertEqual({error, timeout}, fusco_cp:get_client(?POOL)).
|
|
|
|
free_client() ->
|
|
Pid = fusco_cp:get_client(?POOL),
|
|
?assertEqual(true, is_pid(Pid)),
|
|
?assertEqual(ok, fusco_cp:free_client(?POOL, Pid)),
|
|
?assertEqual(Pid, fusco_cp:get_client(?POOL)).
|
|
|
|
unblock_client() ->
|
|
Client = fusco_cp:get_client(?POOL),
|
|
?assertEqual(true, is_pid(Client)),
|
|
?assertEqual(true, is_pid(fusco_cp:get_client(?POOL))),
|
|
?assertEqual(true, is_pid(fusco_cp:get_client(?POOL))),
|
|
To = self(),
|
|
spawn(fun() ->
|
|
Pid = fusco_cp:get_client(?POOL),
|
|
To ! {client, Pid}
|
|
end),
|
|
?assertEqual(ok, fusco_cp:free_client(?POOL, Client)),
|
|
?assertEqual({client, Client}, receive
|
|
{client, _} = R ->
|
|
R
|
|
end).
|
|
|