fix(emqx_exhook): improve test coverage of the emqx_exhook_metrics

This commit is contained in:
firest 2022-01-21 18:05:01 +08:00
parent a28d1efd39
commit 1d832c3026
3 changed files with 22 additions and 13 deletions

View File

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

View File

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

View File

@ -163,6 +163,21 @@ t_error_server_info(_) ->
not_found = emqx_exhook_mgr:server_info(<<"not_exists">>), not_found = emqx_exhook_mgr:server_info(<<"not_exists">>),
ok. 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 %% Utils
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------