Просмотр исходного кода

Fix function args

Add test cases for emqx_pool module
HuangDan 7 лет назад
Родитель
Сommit
3822ff987b
3 измененных файлов с 67 добавлено и 2 удалено
  1. 1 1
      Makefile
  2. 1 1
      src/emqx_pool.erl
  3. 65 0
      test/emqx_pool_SUITE.erl

+ 1 - 1
Makefile

@@ -39,7 +39,7 @@ CT_SUITES = emqx emqx_zone emqx_banned emqx_connection emqx_session emqx_access
 			emqx_json emqx_keepalive emqx_lib emqx_metrics emqx_misc emqx_mod emqx_mqtt_caps \
 			emqx_json emqx_keepalive emqx_lib emqx_metrics emqx_misc emqx_mod emqx_mqtt_caps \
 			emqx_mqtt_compat emqx_mqtt_props emqx_mqueue emqx_net emqx_pqueue emqx_router emqx_sm \
 			emqx_mqtt_compat emqx_mqtt_props emqx_mqueue emqx_net emqx_pqueue emqx_router emqx_sm \
 			emqx_stats emqx_tables emqx_time emqx_topic emqx_trie emqx_vm \
 			emqx_stats emqx_tables emqx_time emqx_topic emqx_trie emqx_vm \
-		 	emqx_mountpoint emqx_listeners emqx_protocol
+		 	emqx_mountpoint emqx_listeners emqx_protocol emqx_pool
 
 
 CT_NODE_NAME = emqxct@127.0.0.1
 CT_NODE_NAME = emqxct@127.0.0.1
 CT_OPTS = -cover test/ct.cover.spec -erl_args -name $(CT_NODE_NAME)
 CT_OPTS = -cover test/ct.cover.spec -erl_args -name $(CT_NODE_NAME)

+ 1 - 1
src/emqx_pool.erl

@@ -65,7 +65,7 @@ cast(Msg) ->
 
 
 %% @private
 %% @private
 worker() ->
 worker() ->
-    gproc_pool:pick_worker(pool).
+    gproc_pool:pick_worker(?POOL).
 
 
 %%------------------------------------------------------------------------------
 %%------------------------------------------------------------------------------
 %% gen_server callbacks
 %% gen_server callbacks

+ 65 - 0
test/emqx_pool_SUITE.erl

@@ -0,0 +1,65 @@
+%% Copyright (c) 2018 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("emqx_mqtt.hrl").
+
+-include_lib("eunit/include/eunit.hrl").
+
+all() -> [
+          {group, submit_case},
+          {group, async_submit_case}
+         ].
+
+groups() ->
+    [
+     {submit_case, [sequence], [submit_mfa, submit_fa]},
+     {async_submit_case, [sequence], [async_submit_mfa]}
+    ].
+
+init_per_suite(Config) ->
+    application:ensure_all_started(gproc),
+    Config.
+
+end_per_suite(_Config) ->
+    ok.
+
+submit_mfa(_Config) ->
+    erlang:process_flag(trap_exit, true),
+    {ok, Pid} =  emqx_pool:start_link(),
+    Result = emqx_pool:submit({?MODULE, test_mfa, []}),
+    ?assertEqual(15, Result),
+    gen_server:stop(Pid, normal, 3000),
+    ok.
+
+submit_fa(_Config) ->
+    {ok, Pid} =  emqx_pool:start_link(),
+    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),
+    exit(Pid, normal).
+
+test_mfa() ->
+    lists:foldl(fun(X, Sum) -> X + Sum end, 0, [1,2,3,4,5]).
+
+async_submit_mfa(_Config) ->
+    {ok, Pid} =  emqx_pool:start_link(),
+    emqx_pool:async_submit({?MODULE, test_mfa, []}),
+    exit(Pid, normal).
+