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};
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);

View File

@ -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,

View File

@ -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
%%--------------------------------------------------------------------