Drain msg queue for deterministic test

This commit is contained in:
spring2maz 2019-03-05 04:28:01 +01:00
parent 252b376e48
commit 1e27098e8c
1 changed files with 17 additions and 0 deletions

View File

@ -47,12 +47,14 @@ timer_cancel_flush_test() ->
end. end.
shutdown_disabled_test() -> shutdown_disabled_test() ->
ok = drain(),
self() ! foo, self() ! foo,
?assertEqual(continue, conn_proc_mng_policy(0)), ?assertEqual(continue, conn_proc_mng_policy(0)),
receive foo -> ok end, receive foo -> ok end,
?assertEqual(hibernate, conn_proc_mng_policy(0)). ?assertEqual(hibernate, conn_proc_mng_policy(0)).
message_queue_too_long_test() -> message_queue_too_long_test() ->
ok = drain(),
self() ! foo, self() ! foo,
self() ! bar, self() ! bar,
?assertEqual({shutdown, message_queue_too_long}, ?assertEqual({shutdown, message_queue_too_long},
@ -63,3 +65,18 @@ message_queue_too_long_test() ->
conn_proc_mng_policy(L) -> conn_proc_mng_policy(L) ->
emqx_misc:conn_proc_mng_policy(#{message_queue_len => L}). emqx_misc:conn_proc_mng_policy(#{message_queue_len => L}).
%% drain self() msg queue for deterministic test behavior
drain() ->
_ = drain([]), % maybe log
ok.
drain(Acc) ->
receive
Msg ->
drain([Msg | Acc])
after
0 ->
lists:reverse(Acc)
end.