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 6fca651a84
commit f70d16e387
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).
-spec(cancel_timer(undefined | reference()) -> ok).
cancel_timer(undefined) ->
ok;
cancel_timer(Timer) ->
case catch erlang:cancel_timer(Timer) of
cancel_timer(Timer) when is_reference(Timer) ->
case erlang:cancel_timer(Timer) of
false ->
receive {timeout, Timer, _} -> ok after 0 -> ok end;
_ -> ok
end.
end;
cancel_timer(_) -> ok.
-spec(proc_name(atom(), pos_integer()) -> atom()).
proc_name(Mod, Id) ->

View File

@ -15,6 +15,13 @@
-module(emqx_misc_tests).
-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() ->
with_env(
[{conn_max_msg_queue_len, 0},