Add some StatsD consumer tests.
authorSiraaj Khandkar <siraaj@khandkar.net>
Tue, 11 Aug 2015 22:23:59 +0000 (18:23 -0400)
committerSiraaj Khandkar <siraaj@khandkar.net>
Tue, 11 Aug 2015 22:23:59 +0000 (18:23 -0400)
.gitignore
Makefile
cover.spec [new file with mode: 0644]
rebar.config
rebar_test_build.config
src/beam_stats_consumer_statsd.erl
test/beam_stats_consumer_statsd_SUITE.erl [new file with mode: 0644]

index 1204ed7..618744e 100644 (file)
@@ -1,2 +1,3 @@
 deps/
 ebin/
+logs/
index f63c06c..5078ecd 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -10,13 +10,15 @@ REBAR := ./rebar --config rebar_test_build.config
        deps_get \
        deps_update \
        dialyze \
-       dialyzer_blt_build
+       dialyzer_blt_build \
+       test
 
 all: \
        clean_all \
        deps_get \
        compile_all \
-       dialyze
+       dialyze \
+       test
 
 deps_get:
        @$(REBAR) get-deps
@@ -51,3 +53,6 @@ dialyzer_blt_build:
                        | grep -v interface \
                        | sed -e 's/-[0-9.]*//' \
                )
+
+test:
+       @rebar ct skip_deps=true
diff --git a/cover.spec b/cover.spec
new file mode 100644 (file)
index 0000000..bc70ac2
--- /dev/null
@@ -0,0 +1,2 @@
+%%% vim: set filetype=erlang:
+{incl_app , beam_stats, details}.
index 8d9caba..c59940d 100644 (file)
@@ -2,3 +2,7 @@
 , [ {hope, ".*"}
   ]
 }.
+
+{cover_enabled, true}.
+
+{clean_files, ["test/*.beam"]}.
index b65a1df..8a4f3f1 100644 (file)
@@ -2,3 +2,7 @@
 , [ {hope, ".*", {git, "https://github.com/ibnfirnas/hope.git", {tag, "3.7.0"}}}
   ]
 }.
+
+{cover_enabled, true}.
+
+{clean_files, ["test/*.beam"]}.
index fe8299c..09a8e95 100644 (file)
@@ -8,12 +8,22 @@
     [ 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()}
     | {dst_host             , inet:ip_address() | inet:hostname()}
@@ -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').
diff --git a/test/beam_stats_consumer_statsd_SUITE.erl b/test/beam_stats_consumer_statsd_SUITE.erl
new file mode 100644 (file)
index 0000000..0f5f3d7
--- /dev/null
@@ -0,0 +1,55 @@
+-module(beam_stats_consumer_statsd_SUITE).
+
+-export(
+    [ all/0
+    , groups/0
+    ]).
+
+%% Test cases
+-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
+    ]).
+
+-define(statsd_module, beam_stats_consumer_statsd).
+-define(GROUP, ?statsd_module).
+
+%% ============================================================================
+%% Common Test callbacks
+%% ============================================================================
+
+all() ->
+    [{group, ?GROUP}].
+
+groups() ->
+    Tests =
+        [ ct_test__beam_stats_to_bins
+        , ct_test__memory_component_to_statsd_msg
+        , ct_test__statsd_msg_add_name_prefix
+        , ct_test__statsd_msg_to_bin
+        , ct_test__node_id_to_bin
+        ],
+    Properties = [],
+    [{?GROUP, Properties, Tests}].
+
+%% =============================================================================
+%%  Test cases
+%% =============================================================================
+
+ct_test__beam_stats_to_bins(_Cfg) ->
+    ?statsd_module:ct_test__beam_stats_to_bins(_Cfg).
+
+ct_test__memory_component_to_statsd_msg(_Cfg) ->
+    ?statsd_module:ct_test__memory_component_to_statsd_msg(_Cfg).
+
+ct_test__statsd_msg_add_name_prefix(_Cfg) ->
+    ?statsd_module:ct_test__statsd_msg_add_name_prefix(_Cfg).
+
+ct_test__statsd_msg_to_bin(_Cfg) ->
+    ?statsd_module:ct_test__statsd_msg_to_bin(_Cfg).
+
+ct_test__node_id_to_bin(_Cfg) ->
+    ?statsd_module:ct_test__node_id_to_bin(_Cfg).
This page took 0.03966 seconds and 4 git commands to generate.