Commit | Line | Data |
---|---|---|
b0ab6ee2 SK |
1 | -module(beam_stats_consumer_statsd_SUITE). |
2 | ||
da5f2544 | 3 | -include_lib("beam_stats/include/beam_stats.hrl"). |
a8d431d1 | 4 | -include_lib("beam_stats/include/beam_stats_ets_table.hrl"). |
da5f2544 | 5 | |
b0ab6ee2 SK |
6 | -export( |
7 | [ all/0 | |
8 | , groups/0 | |
9 | ]). | |
10 | ||
11 | %% Test cases | |
12 | -export( | |
5681263f | 13 | [ t_send/1 |
b0ab6ee2 SK |
14 | ]). |
15 | ||
5681263f | 16 | -define(GROUP, beam_stats_consumer_statsd). |
b0ab6ee2 SK |
17 | |
18 | %% ============================================================================ | |
19 | %% Common Test callbacks | |
20 | %% ============================================================================ | |
21 | ||
22 | all() -> | |
23 | [{group, ?GROUP}]. | |
24 | ||
25 | groups() -> | |
26 | Tests = | |
5681263f | 27 | [ t_send |
b0ab6ee2 SK |
28 | ], |
29 | Properties = [], | |
30 | [{?GROUP, Properties, Tests}]. | |
31 | ||
32 | %% ============================================================================= | |
33 | %% Test cases | |
34 | %% ============================================================================= | |
35 | ||
da5f2544 | 36 | t_send(_Cfg) -> |
a8d431d1 SK |
37 | ETSTableStatsFoo = |
38 | #beam_stats_ets_table | |
39 | { id = foo | |
40 | , name = foo | |
41 | , size = 5 | |
42 | , memory = 25 | |
43 | }, | |
44 | ETSTableStatsBar = | |
45 | #beam_stats_ets_table | |
46 | { id = 37 | |
47 | , name = bar | |
48 | , size = 8 | |
49 | , memory = 38 | |
50 | }, | |
51 | % TODO: Indent #beam_stats as #beam_stats_ets_table | |
da5f2544 SK |
52 | BEAMStats = #beam_stats |
53 | { timestamp = {1, 2, 3} | |
54 | , node_id = 'node_foo@host_bar' | |
4d24f3b7 | 55 | , memory = [{mem_type_foo, 1}, {mem_type_bar, 2}, {mem_type_baz, 3}] |
b4e2333f SK |
56 | , io_bytes_in = 3 |
57 | , io_bytes_out = 7 | |
3fe887d7 | 58 | , context_switches = 5 |
142c0796 | 59 | , reductions = 9 |
deefeb3c | 60 | , run_queue = 17 |
a8d431d1 | 61 | , ets = [ETSTableStatsFoo, ETSTableStatsBar] |
da5f2544 SK |
62 | }, |
63 | ServerPort = 8125, | |
64 | {ok, ServerSocket} = gen_udp:open(ServerPort, [binary, {active, false}]), | |
65 | BEAMStatsQ = queue:in(BEAMStats, queue:new()), | |
66 | Options = [{dst_port, ServerPort}], | |
67 | {_, State1} = beam_stats_consumer_statsd:init(Options), | |
68 | State2 = beam_stats_consumer_statsd:consume(BEAMStatsQ, State1), | |
69 | {} = beam_stats_consumer_statsd:terminate(State2), | |
4d24f3b7 SK |
70 | ResultOfReceive1 = gen_udp:recv(ServerSocket, 0), |
71 | {ok, {_, _, PacketReceived1}} = ResultOfReceive1, | |
72 | ResultOfReceive2 = gen_udp:recv(ServerSocket, 0), | |
73 | {ok, {_, _, PacketReceived2}} = ResultOfReceive2, | |
da5f2544 | 74 | ok = gen_udp:close(ServerSocket), |
4d24f3b7 SK |
75 | ct:log("PacketReceived1: ~n~s~n", [PacketReceived1]), |
76 | ct:log("PacketReceived2: ~n~s~n", [PacketReceived2]), | |
77 | PacketsCombined = <<PacketReceived1/binary, PacketReceived2/binary>>, | |
78 | ct:log("PacketsCombined: ~n~s~n", [PacketsCombined]), | |
79 | MsgsExpected = | |
80 | [ <<"beam_stats.node_foo_host_bar.io.bytes_in:3|g">> | |
81 | , <<"beam_stats.node_foo_host_bar.io.bytes_out:7|g">> | |
82 | , <<"beam_stats.node_foo_host_bar.context_switches:5|g">> | |
83 | , <<"beam_stats.node_foo_host_bar.reductions:9|g">> | |
84 | , <<"beam_stats.node_foo_host_bar.run_queue:17|g">> | |
85 | , <<"beam_stats.node_foo_host_bar.memory.mem_type_foo:1|g">> | |
86 | , <<"beam_stats.node_foo_host_bar.memory.mem_type_bar:2|g">> | |
87 | , <<"beam_stats.node_foo_host_bar.memory.mem_type_baz:3|g">> | |
88 | , <<"beam_stats.node_foo_host_bar.ets_table.size.foo.foo:5|g">> | |
89 | , <<"beam_stats.node_foo_host_bar.ets_table.memory.foo.foo:25|g">> | |
90 | , <<"beam_stats.node_foo_host_bar.ets_table.size.bar.37:8|g">> | |
91 | , <<"beam_stats.node_foo_host_bar.ets_table.memory.bar.37:38|g">> | |
92 | ], | |
93 | MsgsReceived = binary:split(PacketsCombined, <<"\n">>, [global, trim]), | |
94 | RemoveExpectedFromReceived = | |
95 | fun (Expected, Received) -> | |
96 | ct:log( | |
97 | "Looking for expected msg ~p in remaining received ~p~n", | |
98 | [Expected, Received] | |
99 | ), | |
100 | true = lists:member(Expected, Received), | |
101 | Received -- [Expected] | |
102 | end, | |
103 | [] = lists:foldl(RemoveExpectedFromReceived, MsgsReceived, MsgsExpected). |