Add a test case to cover timeout message flush in emqx_misc

This commit is contained in:
spring2maz 2018-09-18 23:20:40 +02:00
parent 25b61afe0d
commit f75a624197
2 changed files with 11 additions and 5 deletions

View File

@ -36,14 +36,13 @@ start_timer(Interval, Dest, Msg) ->
erlang:start_timer(Interval, Dest, Msg). erlang:start_timer(Interval, Dest, Msg).
-spec(cancel_timer(undefined | reference()) -> ok). -spec(cancel_timer(undefined | reference()) -> ok).
cancel_timer(undefined) -> cancel_timer(Timer) when is_reference(Timer) ->
ok; case erlang:cancel_timer(Timer) of
cancel_timer(Timer) ->
case catch erlang:cancel_timer(Timer) of
false -> false ->
receive {timeout, Timer, _} -> ok after 0 -> ok end; receive {timeout, Timer, _} -> ok after 0 -> ok end;
_ -> ok _ -> ok
end. end;
cancel_timer(_) -> ok.
-spec(proc_name(atom(), pos_integer()) -> atom()). -spec(proc_name(atom(), pos_integer()) -> atom()).
proc_name(Mod, Id) -> proc_name(Mod, Id) ->

View File

@ -15,6 +15,13 @@
-module(emqx_misc_tests). -module(emqx_misc_tests).
-include_lib("eunit/include/eunit.hrl"). -include_lib("eunit/include/eunit.hrl").
timer_cancel_flush_test() ->
Timer = emqx_misc:start_timer(0, foo),
ok = emqx_misc:cancel_timer(Timer),
receive {timeout, Timer, foo} -> error(unexpected)
after 0 -> ok
end.
shutdown_disabled_test() -> shutdown_disabled_test() ->
with_env( with_env(
[{conn_max_msg_queue_len, 0}, [{conn_max_msg_queue_len, 0},