Explorar el Código

Merge pull request #6689 from k32/bpapi-telemetry

fix(emqx_telemetry): Decorate RPC calls
k32 hace 4 años
padre
commit
13f0b12b45

+ 1 - 1
apps/emqx_modules/src/emqx_telemetry.erl

@@ -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 rpc:call(Node, ?MODULE, get_uuid, []) of
+                    case emqx_modules_proto_v1:get_uuid(Node) of
                         {badrpc, _Reason} ->
                         {badrpc, _Reason} ->
                             Acc;
                             Acc;
                         {ok, UUID} ->
                         {ok, UUID} ->

+ 33 - 0
apps/emqx_modules/src/proto/emqx_modules_proto_v1.erl

@@ -0,0 +1,33 @@
+%%--------------------------------------------------------------------
+%%Copyright (c) 2022 EMQ Technologies Co., Ltd. All Rights Reserved.
+%%
+%% Licensed under the Apache License, Version 2.0 (the "License");
+%% you may not use this file except in compliance with the License.
+%% You may obtain a copy of the License at
+%%
+%%     http://www.apache.org/licenses/LICENSE-2.0
+%%
+%% Unless required by applicable law or agreed to in writing, software
+%% distributed under the License is distributed on an "AS IS" BASIS,
+%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+%% See the License for the specific language governing permissions and
+%% limitations under the License.
+%%--------------------------------------------------------------------
+
+-module(emqx_modules_proto_v1).
+
+-behaviour(emqx_bpapi).
+
+-export([ introduced_in/0
+
+        , get_uuid/1
+        ]).
+
+-include_lib("emqx/include/bpapi.hrl").
+
+introduced_in() ->
+    "5.0.0".
+
+-spec get_uuid(node()) -> {ok, binary()} | emqx_rpc:badrpc().
+get_uuid(Node) ->
+    rpc:call(Node, emqx_telemetry, get_uuid, []).

+ 4 - 1
apps/emqx_modules/test/emqx_telemetry_SUITE.erl

@@ -44,7 +44,10 @@ t_uuid(_) ->
     emqx_telemetry:disable(),
     emqx_telemetry:disable(),
     emqx_telemetry:enable(),
     emqx_telemetry:enable(),
     {ok, UUID3} = emqx_telemetry:get_uuid(),
     {ok, UUID3} = emqx_telemetry:get_uuid(),
-    ?assertEqual(UUID2, UUID3).
+    {ok, UUID4} = emqx_modules_proto_v1:get_uuid(node()),
+    ?assertEqual(UUID2, UUID3),
+    ?assertEqual(UUID3, UUID4),
+    ?assertMatch({badrpc, nodedown}, emqx_modules_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"),