diff --git a/src/imetrics.erl b/src/imetrics.erl index ad2d7aa..8742374 100644 --- a/src/imetrics.erl +++ b/src/imetrics.erl @@ -2,7 +2,7 @@ -include("../include/imetrics.hrl"). --export([add/1, add/2, add/3, set_exemplar/2, set_exemplar/3, set_exemplar/4, set_exemplar/5, set_exemplar/6, add_m/2, add_m/3, set_info/2]). +-export([add/1, add/2, add/3, set_exemplar/2, set_exemplar/3, set_exemplar/4, set_exemplar/5, set_exemplar/6, add_m/2, add_m/3, set_info/2, init_counter/1, init_counter/2]). -export([set_gauge/2, set_gauge/3, set_gauge_m/3, set_multigauge/2, set_multigauge/3, update_gauge/2, update_gauge/3, update_gauge_m/3]). @@ -55,6 +55,11 @@ add(Name, Tags, Value) -> end ). +init_counter(Name) -> + init_counter(Name, #{}). +init_counter(Name, Tags) when is_map(Tags) -> + add(Name, Tags, 0). + set_exemplar(Name, EValue) -> set_exemplar(Name, #{}, EValue, #{}, erlang:system_time(millisecond)/1000, counter). diff --git a/test/imetrics_tests.erl b/test/imetrics_tests.erl index dcc89ce..08caf36 100644 --- a/test/imetrics_tests.erl +++ b/test/imetrics_tests.erl @@ -171,6 +171,21 @@ exemplar_test(_Fixture) -> ?_assertMatch({1, #{}, _}, imetrics:get_exemplar(#{name => <<"test1">>, '__name__' => <<"l">>})), ?_assertMatch({2, #{}, _}, imetrics:get_exemplar(#{name => <<"test2">>, '__name__' => <<"l">>})). +init_counter_test_() -> + {setup, + fun start/0, + fun stop/1, + fun init_counter_test/1}. + +init_counter_test(_Fixture) -> + Data1 = imetrics:get_with_types(), + ?_assertEqual(undefined, proplists:get_value(<<"empty_counter">>, Data1)), + ?_assertEqual(undefined, proplists:get_value(<<"empty_counter_mapped">>, Data1)), + imetrics:init_counter(empty_counter), + imetrics:init_counter(empty_counter_mapped, #{key => "abc"}), + Data2 = imetrics:get_with_types(), + ?_assertEqual({counter, [{#{}, 0}]}, proplists:get_value(<<"empty_counter">>, Data2)), + ?_assertEqual({counter, [{#{key => <<"abc">>}, 0}]}, proplists:get_value(<<"empty_counter_mapped">>, Data2)). %% get tests get_test_() ->