refactor(emqx_telemetry): Decorate remote procedure calls

This commit is contained in:
k32 2022-01-13 00:35:49 +01:00
parent e513583e70
commit 8570df075c
4 changed files with 22 additions and 15 deletions

View File

@ -256,7 +256,7 @@ uptime() ->
nodes_uuid() -> nodes_uuid() ->
Nodes = lists:delete(node(), mria_mnesia:running_nodes()), Nodes = lists:delete(node(), mria_mnesia:running_nodes()),
lists:foldl(fun(Node, Acc) -> lists:foldl(fun(Node, Acc) ->
case emqx_modules_proto_v1:get_uuid(Node) of case emqx_telemetry_proto_v1:get_uuid(Node) of
{badrpc, _Reason} -> {badrpc, _Reason} ->
Acc; Acc;
{ok, UUID} -> {ok, UUID} ->

View File

@ -153,15 +153,10 @@ enable_telemetry(Enable) ->
enable_telemetry(Node, Enable) enable_telemetry(Node, Enable)
end, mria_mnesia:running_nodes()). end, mria_mnesia:running_nodes()).
enable_telemetry(Node, Enable) when Node =:= node() -> enable_telemetry(Node, true) ->
case Enable of is_ok(emqx_telemetry_proto_v1:enable_telemetry(Node));
true -> enable_telemetry(Node, false) ->
emqx_telemetry:enable(); is_ok(emqx_telemetry_proto_v1:disable_telemetry(Node)).
false ->
emqx_telemetry:disable()
end;
enable_telemetry(Node, Enable) ->
rpc_call(Node, ?MODULE, enable_telemetry, [Node, Enable]).
get_telemetry_status() -> get_telemetry_status() ->
#{enabled => emqx_telemetry:get_status()}. #{enabled => emqx_telemetry:get_status()}.
@ -170,8 +165,8 @@ get_telemetry_data() ->
{ok, TelemetryData} = emqx_telemetry:get_telemetry(), {ok, TelemetryData} = emqx_telemetry:get_telemetry(),
TelemetryData. TelemetryData.
rpc_call(Node, Module, Fun, Args) -> is_ok(Result) ->
case rpc:call(Node, Module, Fun, Args) of case Result of
{badrpc, Reason} -> {error, Reason}; {badrpc, Reason} -> {error, Reason};
Result -> Result Result -> Result
end. end.

View File

@ -14,13 +14,15 @@
%% limitations under the License. %% limitations under the License.
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
-module(emqx_modules_proto_v1). -module(emqx_telemetry_proto_v1).
-behaviour(emqx_bpapi). -behaviour(emqx_bpapi).
-export([ introduced_in/0 -export([ introduced_in/0
, get_uuid/1 , get_uuid/1
, enable_telemetry/1
, disable_telemetry/1
]). ]).
-include_lib("emqx/include/bpapi.hrl"). -include_lib("emqx/include/bpapi.hrl").
@ -31,3 +33,11 @@ introduced_in() ->
-spec get_uuid(node()) -> {ok, binary()} | emqx_rpc:badrpc(). -spec get_uuid(node()) -> {ok, binary()} | emqx_rpc:badrpc().
get_uuid(Node) -> get_uuid(Node) ->
rpc:call(Node, emqx_telemetry, get_uuid, []). rpc:call(Node, emqx_telemetry, get_uuid, []).
-spec enable_telemetry(node()) -> _.
enable_telemetry(Node) ->
rpc:call(Node, emqx_telemetry, enable, []).
-spec disable_telemetry(node()) -> _.
disable_telemetry(Node) ->
rpc:call(Node, emqx_telemetry, disable, []).

View File

@ -43,11 +43,13 @@ t_uuid(_) ->
{ok, UUID2} = emqx_telemetry:get_uuid(), {ok, UUID2} = emqx_telemetry:get_uuid(),
emqx_telemetry:disable(), emqx_telemetry:disable(),
emqx_telemetry:enable(), emqx_telemetry:enable(),
emqx_telemetry_proto_v1:disable_telemetry(node()),
emqx_telemetry_proto_v1:enable_telemetry(node()),
{ok, UUID3} = emqx_telemetry:get_uuid(), {ok, UUID3} = emqx_telemetry:get_uuid(),
{ok, UUID4} = emqx_modules_proto_v1:get_uuid(node()), {ok, UUID4} = emqx_telemetry_proto_v1:get_uuid(node()),
?assertEqual(UUID2, UUID3), ?assertEqual(UUID2, UUID3),
?assertEqual(UUID3, UUID4), ?assertEqual(UUID3, UUID4),
?assertMatch({badrpc, nodedown}, emqx_modules_proto_v1:get_uuid('fake@node')). ?assertMatch({badrpc, nodedown}, emqx_telemetry_proto_v1:get_uuid('fake@node')).
t_official_version(_) -> t_official_version(_) ->
true = emqx_telemetry:official_version("0.0.0"), true = emqx_telemetry:official_version("0.0.0"),