From b0ab6ee2c0bea2f50a60d2260fc2e71dfb01320b Mon Sep 17 00:00:00 2001 From: Siraaj Khandkar Date: Tue, 11 Aug 2015 18:23:59 -0400 Subject: [PATCH] Add some StatsD consumer tests. --- .gitignore | 1 + Makefile | 9 +++- cover.spec | 2 + rebar.config | 4 ++ rebar_test_build.config | 4 ++ src/beam_stats_consumer_statsd.erl | 35 +++++++++++++++ test/beam_stats_consumer_statsd_SUITE.erl | 55 +++++++++++++++++++++++ 7 files changed, 108 insertions(+), 2 deletions(-) create mode 100644 cover.spec create mode 100644 test/beam_stats_consumer_statsd_SUITE.erl diff --git a/.gitignore b/.gitignore index 1204ed7..618744e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ deps/ ebin/ +logs/ diff --git a/Makefile b/Makefile index f63c06c..5078ecd 100644 --- 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 index 0000000..bc70ac2 --- /dev/null +++ b/cover.spec @@ -0,0 +1,2 @@ +%%% vim: set filetype=erlang: +{incl_app , beam_stats, details}. diff --git a/rebar.config b/rebar.config index 8d9caba..c59940d 100644 --- a/rebar.config +++ b/rebar.config @@ -2,3 +2,7 @@ , [ {hope, ".*"} ] }. + +{cover_enabled, true}. + +{clean_files, ["test/*.beam"]}. diff --git a/rebar_test_build.config b/rebar_test_build.config index b65a1df..8a4f3f1 100644 --- a/rebar_test_build.config +++ b/rebar_test_build.config @@ -2,3 +2,7 @@ , [ {hope, ".*", {git, "https://github.com/ibnfirnas/hope.git", {tag, "3.7.0"}}} ] }. + +{cover_enabled, true}. + +{clean_files, ["test/*.beam"]}. diff --git a/src/beam_stats_consumer_statsd.erl b/src/beam_stats_consumer_statsd.erl index fe8299c..09a8e95 100644 --- a/src/beam_stats_consumer_statsd.erl +++ b/src/beam_stats_consumer_statsd.erl @@ -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}]}, + [<>] = + 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'). diff --git a/test/beam_stats_consumer_statsd_SUITE.erl b/test/beam_stats_consumer_statsd_SUITE.erl new file mode 100644 index 0000000..0f5f3d7 --- /dev/null +++ b/test/beam_stats_consumer_statsd_SUITE.erl @@ -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). -- 2.20.1