Flatten Graphite consumer options.
[beam_stats.git] / src / beam_stats_consumer_statsd.erl
index fe8299c..6baf459 100644 (file)
@@ -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),
@@ -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}]},
+    [<<?PATH_PREFIX, ".node_host_local.foo:1|g\n">>] =
+        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">>),
+    <<?PATH_PREFIX,".bar.foo">> = 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').
This page took 0.041765 seconds and 4 git commands to generate.