From ec88e3a404dc70d59ef2f7cc539c5af1cae3036d Mon Sep 17 00:00:00 2001 From: DDDHuang <904897578@qq.com> Date: Fri, 23 Jul 2021 17:55:46 +0800 Subject: [PATCH] chore: sys uptime by millisecond --- apps/emqx/src/emqx_sys.erl | 21 +++---------------- apps/emqx/test/emqx_sys_SUITE.erl | 6 ------ apps/emqx/test/props/prop_emqx_sys.erl | 2 +- apps/emqx_management/src/emqx_mgmt.erl | 2 +- .../src/emqx_mgmt_api_nodes.erl | 4 ++-- 5 files changed, 7 insertions(+), 28 deletions(-) diff --git a/apps/emqx/src/emqx_sys.erl b/apps/emqx/src/emqx_sys.erl index 2f3f782e6..8881de5cb 100644 --- a/apps/emqx/src/emqx_sys.erl +++ b/apps/emqx/src/emqx_sys.erl @@ -90,7 +90,7 @@ version() -> emqx_app:get_release(). sysdescr() -> emqx_app:get_description(). %% @doc Get sys uptime --spec(uptime() -> string()). +-spec(uptime() -> Milliseconds :: integer()). uptime() -> gen_server:call(?SYS, uptime). @@ -143,7 +143,7 @@ handle_cast(Msg, State) -> {noreply, State}. handle_info({timeout, TRef, heartbeat}, State = #state{heartbeat = TRef}) -> - publish_any(uptime, iolist_to_binary(uptime(State))), + publish_any(uptime, integer_to_binary(uptime(State))), publish_any(datetime, iolist_to_binary(datetime())), {noreply, heartbeat(State)}; @@ -168,22 +168,7 @@ terminate(_Reason, #state{heartbeat = TRef1, ticker = TRef2}) -> %%----------------------------------------------------------------------------- uptime(#state{start_time = Ts}) -> - Secs = timer:now_diff(erlang:timestamp(), Ts) div 1000000, - lists:flatten(uptime(seconds, Secs)). -uptime(seconds, Secs) when Secs < 60 -> - [integer_to_list(Secs), " seconds"]; -uptime(seconds, Secs) -> - [uptime(minutes, Secs div 60), integer_to_list(Secs rem 60), " seconds"]; -uptime(minutes, M) when M < 60 -> - [integer_to_list(M), " minutes, "]; -uptime(minutes, M) -> - [uptime(hours, M div 60), integer_to_list(M rem 60), " minutes, "]; -uptime(hours, H) when H < 24 -> - [integer_to_list(H), " hours, "]; -uptime(hours, H) -> - [uptime(days, H div 24), integer_to_list(H rem 24), " hours, "]; -uptime(days, D) -> - [integer_to_list(D), " days, "]. + timer:now_diff(erlang:timestamp(), Ts) div 1000. publish_any(Name, Value) -> _ = publish(Name, Value), diff --git a/apps/emqx/test/emqx_sys_SUITE.erl b/apps/emqx/test/emqx_sys_SUITE.erl index 65f09caf6..354e1a8a2 100644 --- a/apps/emqx/test/emqx_sys_SUITE.erl +++ b/apps/emqx/test/emqx_sys_SUITE.erl @@ -39,12 +39,6 @@ end_per_suite(_Config) -> % t_sysdescr(_) -> % error('TODO'). -t_uptime(_) -> - ?assertEqual(<<"1 seconds">>, iolist_to_binary(emqx_sys:uptime(seconds, 1))), - ?assertEqual(<<"1 minutes, 0 seconds">>, iolist_to_binary(emqx_sys:uptime(seconds, 60))), - ?assertEqual(<<"1 hours, 0 minutes, 0 seconds">>, iolist_to_binary(emqx_sys:uptime(seconds, 3600))), - ?assertEqual(<<"1 days, 0 hours, 0 minutes, 0 seconds">>, iolist_to_binary(emqx_sys:uptime(seconds, 86400))). - % t_datetime(_) -> % error('TODO'). diff --git a/apps/emqx/test/props/prop_emqx_sys.erl b/apps/emqx/test/props/prop_emqx_sys.erl index 170611061..3b2b8b94c 100644 --- a/apps/emqx/test/props/prop_emqx_sys.erl +++ b/apps/emqx/test/props/prop_emqx_sys.erl @@ -114,7 +114,7 @@ postcondition(_State, {call, emqx_sys, info, []}, Info) -> postcondition(_State, {call, emqx_sys, version, []}, Version) -> is_list(Version); postcondition(_State, {call, emqx_sys, uptime, []}, Uptime) -> - is_list(Uptime); + is_integer(Uptime); postcondition(_State, {call, emqx_sys, datetime, []}, Datetime) -> is_list(Datetime); postcondition(_State, {call, emqx_sys, sysdescr, []}, Sysdescr) -> diff --git a/apps/emqx_management/src/emqx_mgmt.erl b/apps/emqx_management/src/emqx_mgmt.erl index eae5563ba..8c915a950 100644 --- a/apps/emqx_management/src/emqx_mgmt.erl +++ b/apps/emqx_management/src/emqx_mgmt.erl @@ -147,7 +147,7 @@ node_info(Node) when Node =:= node() -> max_fds => proplists:get_value(max_fds, lists:usort(lists:flatten(erlang:system_info(check_io)))), connections => ets:info(emqx_channel, size), node_status => 'Running', - uptime => iolist_to_binary(proplists:get_value(uptime, BrokerInfo)), + uptime => proplists:get_value(uptime, BrokerInfo), version => iolist_to_binary(proplists:get_value(version, BrokerInfo)) }; node_info(Node) -> diff --git a/apps/emqx_management/src/emqx_mgmt_api_nodes.erl b/apps/emqx_management/src/emqx_mgmt_api_nodes.erl index bd92abf98..6ead07b07 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_nodes.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_nodes.erl @@ -82,8 +82,8 @@ node_schema() -> type => integer, description => <<"Number of used processes">>}, uptime => #{ - type => string, - description => <<"EMQ X Broker runtime">>}, + type => integer, + description => <<"EMQ X Broker runtime, millisecond">>}, version => #{ type => string, description => <<"EMQ X Broker version">>},