./ct_report/coverage/mongoose_instrument_hooks.COVER.html

1 -module(mongoose_instrument_hooks).
2
3 -export([set_up/2, tear_down/2, execute/2]).
4
5 -include("mongoose.hrl").
6
7 -spec set_up(gen_hook:hook_name(), gen_hook:hook_tag()) -> ok.
8 set_up(HookName, Tag) ->
9 27965 case is_instrumented(HookName) of
10 true ->
11 18674 EventName = event_name(HookName),
12 18674 persistent_term:put({?MODULE, HookName}, EventName),
13 18674 try
14 18674 mongoose_instrument:set_up(EventName, labels(Tag), #{metrics => #{count => spiral}})
15 catch
16 error:#{what := inconsistent_labels} ->
17
:-(
log_tag_error(HookName, Tag)
18 end;
19 false ->
20 9291 ok
21 end.
22
23 -spec log_tag_error(gen_hook:hook_name(), gen_hook:hook_tag()) -> ok.
24 log_tag_error(HookName, Tag) ->
25
:-(
?LOG_ERROR(#{what => inconsistent_hook_handler_tags,
26 text => <<"A single hook should not have both global and host-type handlers. "
27 "Instrumentation is not set up.">>,
28
:-(
hook_name => HookName, tag => Tag}).
29
30 -spec tear_down(gen_hook:hook_name(), gen_hook:hook_tag()) -> ok.
31 tear_down(HookName, Tag) ->
32 16861 case is_instrumented(HookName) of
33 true ->
34 14060 EventName = event_name(HookName),
35 14060 mongoose_instrument:tear_down(EventName, labels(Tag)),
36 14060 persistent_term:erase({?MODULE, HookName});
37 false ->
38 2801 ok
39 end.
40
41 -spec execute(gen_hook:hook_name(), gen_hook:hook_tag()) -> ok.
42 execute(HookName, Tag) ->
43 181460 case is_instrumented(HookName) of
44 true ->
45 85340 try persistent_term:get({?MODULE, HookName}) of
46 EventName ->
47 54299 mongoose_instrument:execute(EventName, labels(Tag), #{count => 1})
48 catch error:badarg ->
49 31041 ok % no handlers registered for this hook
50 end;
51 false ->
52 96120 ok
53 end.
54
55 -spec event_name(gen_hook:hook_name()) -> mongoose_instrument:event_name().
56 event_name(HookName) ->
57 32734 list_to_atom("hook_" ++ atom_to_list(HookName)).
58
59 -spec labels(gen_hook:hook_tag()) -> mongoose_instrument:labels().
60 1294 labels(global) -> #{};
61 85739 labels(HostType) -> #{host_type => HostType}.
62
63 -spec is_instrumented(gen_hook:hook_name()) -> boolean().
64 4113 is_instrumented(sm_register_connection) -> false;
65 3764 is_instrumented(sm_remove_connection) -> false;
66 593 is_instrumented(auth_failed) -> false;
67 11332 is_instrumented(user_send_packet) -> false;
68 2499 is_instrumented(user_send_message) -> false;
69 4734 is_instrumented(user_send_presence) -> false;
70 3760 is_instrumented(user_send_iq) -> false;
71 17807 is_instrumented(user_receive_packet) -> false;
72 3297 is_instrumented(user_receive_message) -> false;
73 9120 is_instrumented(user_receive_presence) -> false;
74 5022 is_instrumented(user_receive_iq) -> false;
75 576 is_instrumented(xmpp_bounce_message) -> false;
76 584 is_instrumented(xmpp_stanza_dropped) -> false;
77 28129 is_instrumented(xmpp_send_element) -> false;
78 994 is_instrumented(roster_get) -> false;
79
:-(
is_instrumented(roster_set) -> false;
80
:-(
is_instrumented(roster_push) -> false;
81 3403 is_instrumented(register_user) -> false;
82 3399 is_instrumented(remove_user) -> false;
83 602 is_instrumented(privacy_iq_get) -> false;
84 679 is_instrumented(privacy_iq_set) -> false;
85 3805 is_instrumented(privacy_check_packet) -> false;
86
:-(
is_instrumented(mam_get_prefs) -> false;
87
:-(
is_instrumented(mam_set_prefs) -> false;
88
:-(
is_instrumented(mam_remove_archive) -> false;
89
:-(
is_instrumented(mam_archive_message) -> false;
90
:-(
is_instrumented(mam_muc_get_prefs) -> false;
91
:-(
is_instrumented(mam_muc_set_prefs) -> false;
92
:-(
is_instrumented(mam_muc_remove_archive) -> false;
93
:-(
is_instrumented(mam_muc_lookup_messages) -> false;
94
:-(
is_instrumented(mam_muc_archive_message) -> false;
95 118074 is_instrumented(_) -> true.
Line Hits Source