./ct_report/coverage/mongoose_metrics_probe_queues.COVER.html

1 %%==============================================================================
2 %% Copyright 2019 Erlang Solutions Ltd.
3 %%
4 %% Licensed under the Apache License, Version 2.0 (the "License");
5 %% you may not use this file except in compliance with the License.
6 %% You may obtain a copy of the License at
7 %%
8 %% http://www.apache.org/licenses/LICENSE-2.0
9 %%
10 %% Unless required by applicable law or agreed to in writing, software
11 %% distributed under the License is distributed on an "AS IS" BASIS,
12 %% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 %% See the License for the specific language governing permissions and
14 %% limitations under the License.
15 %%==============================================================================
16 -module(mongoose_metrics_probe_queues).
17 -behaviour(mongoose_metrics_probe).
18
19 -export([sample/0, datapoints/0]).
20
21 datapoints() ->
22 130 [regular, fsm, total].
23
24 sample() ->
25 169 {FinalNormalQueueLen, FinalFsmQueueLen} =
26 lists:foldl(
27 fun(Pid, {NormalQueueLen, FsmQueueLen}) ->
28 125821 {MsgQueueLen, Dict} =
29 case erlang:process_info(Pid, [message_queue_len, dictionary]) of
30 125699 [{message_queue_len, Msgs}, {dictionary, D}] -> {Msgs, D};
31 122 _ -> {0, []}
32 end,
33 125821 FsmInternal = proplists:get_value('$internal_queue_len', Dict, 0),
34 125821 {
35 NormalQueueLen + MsgQueueLen,
36 FsmQueueLen + FsmInternal
37 }
38 end, {0, 0}, erlang:processes()),
39 169 #{
40 regular => FinalNormalQueueLen,
41 fsm => FinalFsmQueueLen,
42 total => FinalNormalQueueLen + FinalFsmQueueLen
43 }.
Line Hits Source