./ct_report/coverage/stats_api.COVER.html

1 -module(stats_api).
2
3 -export([incoming_s2s_number/0, outgoing_s2s_number/0, stats/1, stats/2]).
4 -export([stats_mongooseimctl/1, stats_mongooseimctl/2]).
5
6 -ignore_xref([stats_mongooseimctl/1, stats_mongooseimctl/2]).
7
8 -include("mongoose.hrl").
9
10 -spec incoming_s2s_number() -> {ok, non_neg_integer()}.
11 incoming_s2s_number() ->
12 4 {ok, length(supervisor:which_children(ejabberd_s2s_in_sup))}.
13
14 -spec outgoing_s2s_number() -> {ok, non_neg_integer()}.
15 outgoing_s2s_number() ->
16 4 {ok, length(supervisor:which_children(ejabberd_s2s_out_sup))}.
17
18 -spec stats(binary()) -> {ok, integer()} | {not_found, string()}.
19 stats(<<"uptimeseconds">>) ->
20 4 {ok, trunc(element(1, erlang:statistics(wall_clock)) / 1000)};
21 stats(<<"registeredusers">>) ->
22 4 Domains = lists:flatmap(fun mongoose_domain_api:get_domains_by_host_type/1,
23 ?ALL_HOST_TYPES),
24 4 {ok, lists:sum([ejabberd_auth:get_vh_registered_users_number(Domain) || Domain <- Domains])};
25 stats(<<"onlineusersnode">>) ->
26 4 {ok, ejabberd_sm:get_node_sessions_number()};
27 stats(<<"onlineusers">>) ->
28 4 {ok, ejabberd_sm:get_total_sessions_number()};
29 stats(_Name) ->
30
:-(
{not_found, "Stats not found"}.
31
32 -spec stats(binary(), jid:server()) -> {ok, integer()} | {not_found, string()}.
33 stats(<<"registeredusers">>, Host) ->
34 14 {ok, ejabberd_auth:get_vh_registered_users_number(Host)};
35 stats(<<"onlineusers">>, Host) ->
36 14 {ok, ejabberd_sm:get_vh_session_number(Host)};
37 stats(_Name, _Host) ->
38
:-(
{not_found, "Stats not found"}.
39
40 -spec stats_mongooseimctl(binary()) -> {ok | not_found, string()}.
41 stats_mongooseimctl(Name) ->
42
:-(
case stats(Name) of
43
:-(
{ok, Stat} -> {ok, integer_to_list(Stat)};
44
:-(
Error -> Error
45 end.
46
47 -spec stats_mongooseimctl(binary(), binary()) -> {ok | not_found, string()}.
48 stats_mongooseimctl(Name, Host) ->
49
:-(
case stats(Name, Host) of
50
:-(
{ok, Stat} -> {ok, integer_to_list(Stat)};
51
:-(
Error -> Error
52 end.
Line Hits Source