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

fix(emqx_exhook): improve test coverage of the emqx_exhook_metrics

firest 4 лет назад
Родитель
Сommit
1d832c3026

+ 3 - 9
apps/emqx_exhook/src/emqx_exhook_api.erl

@@ -194,15 +194,9 @@ exhooks(get, _) ->
     {200, Infos};
 
 exhooks(post, #{body := Body}) ->
-    case emqx_exhook_mgr:update_config([exhook, servers], {add, Body}) of
-        {ok, _} ->
-            #{<<"name">> := Name} = Body,
-            get_nodes_server_info(Name);
-        {error, Error} ->
-            {500, #{code => <<"BAD_RPC">>,
-                    message => Error
-                   }}
-    end.
+    {ok, _} = emqx_exhook_mgr:update_config([exhook, servers], {add, Body}),
+    #{<<"name">> := Name} = Body,
+    get_nodes_server_info(Name).
 
 action_with_name(get, #{bindings := #{name := Name}}) ->
     get_nodes_server_info(Name);

+ 4 - 4
apps/emqx_exhook/src/emqx_exhook_metrics.erl

@@ -110,8 +110,8 @@ on_server_deleted(Name) ->
 
 -spec server_metrics(server_name()) -> metrics_info().
 server_metrics(SvrName) ->
-    Hooks = ets:match(?HOOKS_METRICS,
-                      {metrics, {SvrName, '_'}, '_', '_', '_', '_', '_'}),
+    Hooks = ets:match_object(?HOOKS_METRICS,
+                             {metrics, {SvrName, '_'}, '_', '_', '_', '_', '_'}),
 
     Fold = fun(#metrics{succeed = Succeed,
                         failed = Failed,
@@ -155,8 +155,8 @@ servers_metrics() ->
 
 -spec hooks_metrics(server_name()) -> hooks_metrics().
 hooks_metrics(SvrName) ->
-    Hooks = ets:match(?HOOKS_METRICS,
-                      {metrics, {SvrName, '_'}, '_', '_', '_', '_', '_'}),
+    Hooks = ets:match_object(?HOOKS_METRICS,
+                             {metrics, {SvrName, '_'}, '_', '_', '_', '_', '_'}),
 
     Fold = fun(#metrics{index = ?INDEX(_, HookPoint),
                         succeed = Succeed,

+ 15 - 0
apps/emqx_exhook/test/emqx_exhook_SUITE.erl

@@ -163,6 +163,21 @@ t_error_server_info(_) ->
     not_found = emqx_exhook_mgr:server_info(<<"not_exists">>),
     ok.
 
+t_metrics(_) ->
+    ok = emqx_exhook_metrics:succeed(<<"default">>, 'client.connect'),
+    ok = emqx_exhook_metrics:failed(<<"default">>, 'client.connect'),
+    true = emqx_exhook_metrics:update(1000),
+    timer:sleep(100),
+    SvrMetrics = emqx_exhook_metrics:server_metrics(<<"default">>),
+    ?assertMatch(#{succeed := _, failed := _, rate := _, max_rate := _}, SvrMetrics),
+
+    SvrsMetrics = emqx_exhook_metrics:servers_metrics(),
+    ?assertMatch(#{<<"default">> := #{succeed := _}}, SvrsMetrics),
+
+    HooksMetrics = emqx_exhook_metrics:hooks_metrics(<<"default">>),
+    ?assertMatch(#{'client.connect' := #{succeed := _}}, HooksMetrics),
+    ok.
+
 %%--------------------------------------------------------------------
 %% Utils
 %%--------------------------------------------------------------------