Просмотр исходного кода

chore: sys uptime by millisecond

DDDHuang 4 лет назад
Родитель
Сommit
ec88e3a404

+ 3 - 18
apps/emqx/src/emqx_sys.erl

@@ -90,7 +90,7 @@ version() -> emqx_app:get_release().
 sysdescr() -> emqx_app:get_description().
 sysdescr() -> emqx_app:get_description().
 
 
 %% @doc Get sys uptime
 %% @doc Get sys uptime
--spec(uptime() -> string()).
+-spec(uptime() -> Milliseconds :: integer()).
 uptime() ->
 uptime() ->
     gen_server:call(?SYS, uptime).
     gen_server:call(?SYS, uptime).
 
 
@@ -143,7 +143,7 @@ handle_cast(Msg, State) ->
     {noreply, State}.
     {noreply, State}.
 
 
 handle_info({timeout, TRef, heartbeat}, State = #state{heartbeat = TRef}) ->
 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())),
     publish_any(datetime, iolist_to_binary(datetime())),
     {noreply, heartbeat(State)};
     {noreply, heartbeat(State)};
 
 
@@ -168,22 +168,7 @@ terminate(_Reason, #state{heartbeat = TRef1, ticker = TRef2}) ->
 %%-----------------------------------------------------------------------------
 %%-----------------------------------------------------------------------------
 
 
 uptime(#state{start_time = Ts}) ->
 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_any(Name, Value) ->
     _ = publish(Name, Value),
     _ = publish(Name, Value),

+ 0 - 6
apps/emqx/test/emqx_sys_SUITE.erl

@@ -39,12 +39,6 @@ end_per_suite(_Config) ->
 % t_sysdescr(_) ->
 % t_sysdescr(_) ->
 %     error('TODO').
 %     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(_) ->
 % t_datetime(_) ->
 %     error('TODO').
 %     error('TODO').
 
 

+ 1 - 1
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) ->
 postcondition(_State, {call, emqx_sys, version, []}, Version) ->
     is_list(Version);
     is_list(Version);
 postcondition(_State, {call, emqx_sys, uptime, []}, Uptime) ->
 postcondition(_State, {call, emqx_sys, uptime, []}, Uptime) ->
-    is_list(Uptime);
+    is_integer(Uptime);
 postcondition(_State, {call, emqx_sys, datetime, []}, Datetime) ->
 postcondition(_State, {call, emqx_sys, datetime, []}, Datetime) ->
     is_list(Datetime);
     is_list(Datetime);
 postcondition(_State, {call, emqx_sys, sysdescr, []}, Sysdescr) ->
 postcondition(_State, {call, emqx_sys, sysdescr, []}, Sysdescr) ->

+ 1 - 1
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)))),
           max_fds           => proplists:get_value(max_fds, lists:usort(lists:flatten(erlang:system_info(check_io)))),
           connections       => ets:info(emqx_channel, size),
           connections       => ets:info(emqx_channel, size),
           node_status       => 'Running',
           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))
           version           => iolist_to_binary(proplists:get_value(version, BrokerInfo))
           };
           };
 node_info(Node) ->
 node_info(Node) ->

+ 2 - 2
apps/emqx_management/src/emqx_mgmt_api_nodes.erl

@@ -82,8 +82,8 @@ node_schema() ->
                     type => integer,
                     type => integer,
                     description => <<"Number of used processes">>},
                     description => <<"Number of used processes">>},
                 uptime => #{
                 uptime => #{
-                    type => string,
-                    description => <<"EMQ X Broker runtime">>},
+                    type => integer,
+                    description => <<"EMQ X Broker runtime, millisecond">>},
                 version => #{
                 version => #{
                     type => string,
                     type => string,
                     description => <<"EMQ X Broker version">>},
                     description => <<"EMQ X Broker version">>},