diff --git a/apps/emqx/src/emqx_alarm.erl b/apps/emqx/src/emqx_alarm.erl index 0eaa16507..1ae985deb 100644 --- a/apps/emqx/src/emqx_alarm.erl +++ b/apps/emqx/src/emqx_alarm.erl @@ -382,9 +382,9 @@ normalize_message(high_system_memory_usage, #{high_watermark := HighWatermark}) normalize_message(high_process_memory_usage, #{high_watermark := HighWatermark}) -> list_to_binary(io_lib:format("Process memory usage is higher than ~p%", [HighWatermark])); normalize_message(high_cpu_usage, #{usage := Usage}) -> - list_to_binary(io_lib:format("~p% cpu usage", [Usage])); + list_to_binary(io_lib:format("~s cpu usage", [Usage])); normalize_message(too_many_processes, #{usage := Usage}) -> - list_to_binary(io_lib:format("~p% process usage", [Usage])); + list_to_binary(io_lib:format("~s process usage", [Usage])); normalize_message(partition, #{occurred := Node}) -> list_to_binary(io_lib:format("Partition occurs at node ~s", [Node])); normalize_message(<<"resource", _/binary>>, #{type := Type, id := ID}) -> diff --git a/apps/emqx/src/emqx_flapping.erl b/apps/emqx/src/emqx_flapping.erl index b48f43094..dcc88f6b4 100644 --- a/apps/emqx/src/emqx_flapping.erl +++ b/apps/emqx/src/emqx_flapping.erl @@ -125,7 +125,7 @@ handle_cast({detected, #flapping{clientid = ClientId, by = <<"flapping detector">>, reason = <<"flapping is detected">>, at = Now, - until = Now + Interval}, + until = Now + (Interval div 1000)}, emqx_banned:create(Banned); false -> ?LOG(warning, "~s(~s) disconnected ~w times in ~wms", diff --git a/apps/emqx/src/emqx_os_mon.erl b/apps/emqx/src/emqx_os_mon.erl index 8768586ce..3e161030c 100644 --- a/apps/emqx/src/emqx_os_mon.erl +++ b/apps/emqx/src/emqx_os_mon.erl @@ -143,7 +143,7 @@ handle_info({timeout, _Timer, check}, State) -> case emqx_vm:cpu_util() of %% TODO: should be improved? 0 -> ok; Busy when Busy >= CPUHighWatermark -> - emqx_alarm:activate(high_cpu_usage, #{usage => Busy, + emqx_alarm:activate(high_cpu_usage, #{usage => io_lib:format("~p%", [Busy]), high_watermark => CPUHighWatermark, low_watermark => CPULowWatermark}), start_check_timer(); diff --git a/apps/emqx/test/emqx_broker_SUITE.erl b/apps/emqx/test/emqx_broker_SUITE.erl index d6fa36c18..fe754e9df 100644 --- a/apps/emqx/test/emqx_broker_SUITE.erl +++ b/apps/emqx/test/emqx_broker_SUITE.erl @@ -42,19 +42,19 @@ end_per_suite(_Config) -> %%-------------------------------------------------------------------- t_stats_fun(_) -> - ?assertEqual(0, emqx_stats:getstat('subscribers.count')), - ?assertEqual(0, emqx_stats:getstat('subscriptions.count')), - ?assertEqual(0, emqx_stats:getstat('suboptions.count')), + Subscribers = emqx_stats:getstat('subscribers.count'), + Subscriptions = emqx_stats:getstat('subscriptions.count'), + Subopts = emqx_stats:getstat('suboptions.count'), ok = emqx_broker:subscribe(<<"topic">>, <<"clientid">>), ok = emqx_broker:subscribe(<<"topic2">>, <<"clientid">>), emqx_broker:stats_fun(), ct:sleep(10), - ?assertEqual(2, emqx_stats:getstat('subscribers.count')), - ?assertEqual(2, emqx_stats:getstat('subscribers.max')), - ?assertEqual(2, emqx_stats:getstat('subscriptions.count')), - ?assertEqual(2, emqx_stats:getstat('subscriptions.max')), - ?assertEqual(2, emqx_stats:getstat('suboptions.count')), - ?assertEqual(2, emqx_stats:getstat('suboptions.max')). + ?assertEqual(Subscribers + 2, emqx_stats:getstat('subscribers.count')), + ?assertEqual(Subscribers + 2, emqx_stats:getstat('subscribers.max')), + ?assertEqual(Subscriptions + 2, emqx_stats:getstat('subscriptions.count')), + ?assertEqual(Subscriptions + 2, emqx_stats:getstat('subscriptions.max')), + ?assertEqual(Subopts + 2, emqx_stats:getstat('suboptions.count')), + ?assertEqual(Subopts + 2, emqx_stats:getstat('suboptions.max')). t_subscribed(_) -> emqx_broker:subscribe(<<"topic">>), diff --git a/apps/emqx/test/emqx_flapping_SUITE.erl b/apps/emqx/test/emqx_flapping_SUITE.erl index e5b12a122..b4318ff64 100644 --- a/apps/emqx/test/emqx_flapping_SUITE.erl +++ b/apps/emqx/test/emqx_flapping_SUITE.erl @@ -28,8 +28,8 @@ init_per_suite(Config) -> emqx_ct_helpers:start_apps([]), emqx_config:put_listener_conf(default, mqtt_tcp, [flapping_detect], #{max_count => 3, - window_time => 100, - ban_time => 2 + window_time => 100, % 0.1s + ban_time => 2000 %% 2s }), Config. @@ -41,7 +41,7 @@ end_per_suite(_Config) -> t_detect_check(_) -> ClientInfo = #{zone => default, listener => mqtt_tcp, - clientid => <<"clientid">>, + clientid => <<"client007">>, peerhost => {127,0,0,1} }, false = emqx_flapping:detect(ClientInfo), @@ -50,6 +50,8 @@ t_detect_check(_) -> false = emqx_banned:check(ClientInfo), true = emqx_flapping:detect(ClientInfo), timer:sleep(50), + ct:pal("the table emqx_banned: ~p, nowsec: ~p", [ets:tab2list(emqx_banned), + erlang:system_time(second)]), true = emqx_banned:check(ClientInfo), timer:sleep(3000), false = emqx_banned:check(ClientInfo), @@ -63,11 +65,11 @@ t_detect_check(_) -> t_expired_detecting(_) -> ClientInfo = #{zone => default, listener => mqtt_tcp, - clientid => <<"clientid">>, + clientid => <<"client008">>, peerhost => {127,0,0,1}}, false = emqx_flapping:detect(ClientInfo), - ?assertEqual(true, lists:any(fun({flapping, <<"clientid">>, _, _, _}) -> true; + ?assertEqual(true, lists:any(fun({flapping, <<"client008">>, _, _, _}) -> true; (_) -> false end, ets:tab2list(emqx_flapping))), timer:sleep(200), - ?assertEqual(true, lists:all(fun({flapping, <<"clientid">>, _, _, _}) -> false; + ?assertEqual(true, lists:all(fun({flapping, <<"client008">>, _, _, _}) -> false; (_) -> true end, ets:tab2list(emqx_flapping))). \ No newline at end of file diff --git a/apps/emqx/test/emqx_session_SUITE.erl b/apps/emqx/test/emqx_session_SUITE.erl index 5c96c96df..87dd66183 100644 --- a/apps/emqx/test/emqx_session_SUITE.erl +++ b/apps/emqx/test/emqx_session_SUITE.erl @@ -54,7 +54,7 @@ t_session_init(_) -> #{receive_maximum => 64}), ?assertEqual(#{}, emqx_session:info(subscriptions, Session)), ?assertEqual(0, emqx_session:info(subscriptions_cnt, Session)), - ?assertEqual(0, emqx_session:info(subscriptions_max, Session)), + ?assertEqual(infinity, emqx_session:info(subscriptions_max, Session)), ?assertEqual(false, emqx_session:info(upgrade_qos, Session)), ?assertEqual(0, emqx_session:info(inflight_cnt, Session)), ?assertEqual(64, emqx_session:info(inflight_max, Session)), @@ -73,13 +73,13 @@ t_session_init(_) -> t_session_info(_) -> ?assertMatch(#{subscriptions := #{}, upgrade_qos := false, - retry_interval := 0, + retry_interval := 30, await_rel_timeout := 300 }, emqx_session:info(session())). t_session_stats(_) -> Stats = emqx_session:stats(session()), - ?assertMatch(#{subscriptions_max := 0, + ?assertMatch(#{subscriptions_max := infinity, inflight_max := 0, mqueue_len := 0, mqueue_max := 1000, @@ -153,7 +153,7 @@ t_publish_qos2_with_error_return(_) -> {error, ?RC_RECEIVE_MAXIMUM_EXCEEDED} = emqx_session:publish(3, Msg, Session1). t_is_awaiting_full_false(_) -> - Session = session(#{max_awaiting_rel => 0}), + Session = session(#{max_awaiting_rel => infinity}), ?assertNot(emqx_session:is_awaiting_full(Session)). t_is_awaiting_full_true(_) ->