%%% ---------------------------------------------------------------------------- %%% @copyright (C) 2013, Erlang Solutions Ltd %%% @author Diana Parra Corbacho %%% @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).