From 1d832c3026ecdceaee340d7151d283793499f2c1 Mon Sep 17 00:00:00 2001 From: firest Date: Fri, 21 Jan 2022 18:05:01 +0800 Subject: [PATCH] fix(emqx_exhook): improve test coverage of the emqx_exhook_metrics --- apps/emqx_exhook/src/emqx_exhook_api.erl | 12 +++--------- apps/emqx_exhook/src/emqx_exhook_metrics.erl | 8 ++++---- apps/emqx_exhook/test/emqx_exhook_SUITE.erl | 15 +++++++++++++++ 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/apps/emqx_exhook/src/emqx_exhook_api.erl b/apps/emqx_exhook/src/emqx_exhook_api.erl index 4df1b5573..52c16b39e 100644 --- a/apps/emqx_exhook/src/emqx_exhook_api.erl +++ b/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); diff --git a/apps/emqx_exhook/src/emqx_exhook_metrics.erl b/apps/emqx_exhook/src/emqx_exhook_metrics.erl index 7d63d31f8..b530f1035 100644 --- a/apps/emqx_exhook/src/emqx_exhook_metrics.erl +++ b/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, diff --git a/apps/emqx_exhook/test/emqx_exhook_SUITE.erl b/apps/emqx_exhook/test/emqx_exhook_SUITE.erl index 87bdc1641..e54478633 100644 --- a/apps/emqx_exhook/test/emqx_exhook_SUITE.erl +++ b/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 %%--------------------------------------------------------------------