91 lines
2.4 KiB
Erlang
91 lines
2.4 KiB
Erlang
%%--------------------------------------------------------------------
|
|
%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved.
|
|
%%
|
|
%% Licensed under the Apache License, Version 2.0 (the "License");
|
|
%% you may not use this file except in compliance with the License.
|
|
%% You may obtain a copy of the License at
|
|
%%
|
|
%% http://www.apache.org/licenses/LICENSE-2.0
|
|
%%
|
|
%% Unless required by applicable law or agreed to in writing, software
|
|
%% distributed under the License is distributed on an "AS IS" BASIS,
|
|
%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
%% See the License for the specific language governing permissions and
|
|
%% limitations under the License.
|
|
%%--------------------------------------------------------------------
|
|
|
|
-module(emqx_pool_SUITE).
|
|
|
|
-compile(export_all).
|
|
-compile(nowarn_export_all).
|
|
|
|
-include_lib("eunit/include/eunit.hrl").
|
|
|
|
all() ->
|
|
[{group, submit},
|
|
{group, async_submit},
|
|
t_unexpected
|
|
].
|
|
|
|
groups() ->
|
|
[{submit, [sequence],
|
|
[t_submit_mfa,
|
|
t_submit_fa
|
|
]},
|
|
{async_submit, [sequence],
|
|
[t_async_submit_mfa,
|
|
t_async_submit_crash
|
|
]}
|
|
].
|
|
|
|
init_per_suite(Config) ->
|
|
ok = emqx_logger:set_log_level(emergency),
|
|
application:ensure_all_started(gproc),
|
|
Config.
|
|
|
|
end_per_suite(_Config) ->
|
|
ok.
|
|
|
|
init_per_testcase(_, Config) ->
|
|
{ok, Sup} = emqx_pool_sup:start_link(),
|
|
[{pool_sup, Sup}|Config].
|
|
|
|
end_per_testcase(_, Config) ->
|
|
Sup = proplists:get_value(pool_sup, Config),
|
|
%% ???
|
|
exit(Sup, normal).
|
|
|
|
t_submit_mfa(_Config) ->
|
|
Result = emqx_pool:submit({?MODULE, test_mfa, []}),
|
|
?assertEqual(15, Result).
|
|
|
|
t_submit_fa(_Config) ->
|
|
Fun = fun(X) ->
|
|
case X rem 2 of
|
|
0 -> {true, X div 2};
|
|
_ -> false
|
|
end
|
|
end,
|
|
Result = emqx_pool:submit(Fun, [2]),
|
|
?assertEqual({true, 1}, Result).
|
|
|
|
t_async_submit_mfa(_Config) ->
|
|
emqx_pool:async_submit({?MODULE, test_mfa, []}),
|
|
emqx_pool:async_submit(fun ?MODULE:test_mfa/0, []).
|
|
|
|
t_async_submit_crash(_) ->
|
|
emqx_pool:async_submit(fun() -> error(unexpected_error) end).
|
|
|
|
t_unexpected(_) ->
|
|
Pid = emqx_pool:worker(),
|
|
?assertEqual(ignored, gen_server:call(Pid, bad_request)),
|
|
?assertEqual(ok, gen_server:cast(Pid, bad_msg)),
|
|
Pid ! bad_info,
|
|
ok = gen_server:stop(Pid).
|
|
|
|
test_mfa() ->
|
|
lists:foldl(fun(X, Sum) -> X + Sum end, 0, [1,2,3,4,5]).
|
|
|
|
% t_async_submit(_) ->
|
|
% error('TODO').
|