ejabberd-contrib/ejabberd_auth_http/deps/fusco/test/fusco_cp_tests.erl

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).