X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=src%2Fbeam_stats_consumer_statsd.erl;h=6baf459397af889171a41cea7545be6e7135fed4;hb=76aefffb4a92500ad4664d120b5ef2fec80e7988;hp=cfd6cbf828ac3a112a6e255482b4ed3b53ce6df4;hpb=7093966438a142f4a65615a3d242482e074c747e;p=beam_stats.git diff --git a/src/beam_stats_consumer_statsd.erl b/src/beam_stats_consumer_statsd.erl index cfd6cbf..6baf459 100644 --- a/src/beam_stats_consumer_statsd.erl +++ b/src/beam_stats_consumer_statsd.erl @@ -8,14 +8,24 @@ [ option/0 ]). +%% Consumer interface -export( [ init/1 , consume/2 , terminate/1 ]). +%% Tests (to be run by CT): +-export( + [ ct_test__beam_stats_to_bins/1 + , ct_test__memory_component_to_statsd_msg/1 + , ct_test__statsd_msg_add_name_prefix/1 + , ct_test__statsd_msg_to_bin/1 + , ct_test__node_id_to_bin/1 + ]). + -type option() :: - {consumption_interval , erlang:time()} + {consumption_interval , non_neg_integer()} | {dst_host , inet:ip_address() | inet:hostname()} | {dst_port , inet:port_number()} | {src_port , inet:port_number()} @@ -55,7 +65,7 @@ %% ============================================================================ -spec init([option()]) -> - {erlang:time(), state()}. + {non_neg_integer(), state()}. init(Options) -> ConsumptionInterval = hope_kv_list:get(Options, consumption_interval, 60000), DstHost = hope_kv_list:get(Options, dst_host, ?DEFAULT_DST_HOST), @@ -144,12 +154,12 @@ beam_stats_to_bins(#beam_stats Msgs2 = [statsd_msg_add_name_prefix(M, NodeIDBin) || M <- Msgs1], [statsd_msg_to_bin(M) || M <- Msgs2]. --spec memory_to_msgs(erlang:memory()) -> +-spec memory_to_msgs([{atom(), non_neg_integer()}]) -> [statsd_msg()]. memory_to_msgs(Memory) -> [memory_component_to_statsd_msg(MC) || MC <- Memory]. --spec memory_component_to_statsd_msg({erlang:memory_type(), non_neg_integer()}) -> +-spec memory_component_to_statsd_msg({atom(), non_neg_integer()}) -> statsd_msg(). memory_component_to_statsd_msg({MemType, MemSize}) when MemSize >= 0 -> #statsd_msg @@ -194,3 +204,28 @@ metric_type_to_bin(gauge) -> node_id_to_bin(NodeID) -> NodeIDBin = atom_to_binary(NodeID, utf8), re:replace(NodeIDBin, "[\@\.]", "_", [global, {return, binary}]). + +%% ============================================================================ +%% Tests +%% ============================================================================ + +ct_test__beam_stats_to_bins(_Cfg) -> + BEAMStats = #beam_stats{node_id = 'node@host.local', memory = [{foo,1}]}, + [<>] = + beam_stats_to_bins(BEAMStats). + +ct_test__memory_component_to_statsd_msg(_Cfg) -> + #statsd_msg{name = <<"foo">>, value = 1, type = gauge} = + memory_component_to_statsd_msg({foo, 1}). + +ct_test__statsd_msg_add_name_prefix(_Cfg) -> + Msg1 = #statsd_msg{name = <<"foo">>, value = 1, type = gauge}, + Msg2 = statsd_msg_add_name_prefix(Msg1, <<"bar">>), + <> = Msg2#statsd_msg.name. + +ct_test__statsd_msg_to_bin(_Cfg) -> + Msg = #statsd_msg{name = <<"foo">>, value = 1, type = gauge}, + <<"foo:1|g\n">> = statsd_msg_to_bin(Msg). + +ct_test__node_id_to_bin(_Cfg) -> + <<"foo_bar_local">> = node_id_to_bin('foo@bar.local').