From 701eeb5cdfaea6222f6dfcfb36e10ab943891b31 Mon Sep 17 00:00:00 2001 From: Karolis Petrauskas Date: Thu, 4 Jul 2024 10:16:15 +0300 Subject: [PATCH 1/2] Metric names might be tuples, they have to be escaped in match specs. Signed-off-by: Karolis Petrauskas --- src/exometer_admin.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/exometer_admin.erl b/src/exometer_admin.erl index ae0e4b8..f7dc089 100644 --- a/src/exometer_admin.erl +++ b/src/exometer_admin.erl @@ -612,7 +612,7 @@ find_auto_template(Name) -> make_patterns(Type, Name) when is_list(Name) -> Prefixes = prefixes(Name), [{ #exometer_entry{name = {default,Type,[V || {_,V} <- Pfx]}, _ = '_'}, - [{'or',{'=:=',V,X},{'=:=',V,''}} || {X,V} <- Pfx], ['$_'] } + [{'or',{'=:=',V,{const,X}},{'=:=',V,''}} || {X,V} <- Pfx], ['$_'] } || Pfx <- Prefixes]. prefixes(L) -> From 52ac740dcc4ed2a609db016d64f02342050709d0 Mon Sep 17 00:00:00 2001 From: Ulf Wiger Date: Thu, 4 Jul 2024 10:33:35 +0200 Subject: [PATCH 2/2] Add test case for erisata/fix_name_tuples --- test/exometer_SUITE.erl | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/test/exometer_SUITE.erl b/test/exometer_SUITE.erl index b5b0561..cb5ba4a 100644 --- a/test/exometer_SUITE.erl +++ b/test/exometer_SUITE.erl @@ -27,6 +27,7 @@ test_eval_script_match_case/1, test_wrapping_counter/1, test_update_or_create/1, + test_update_or_create_w_tuple_name/1, test_update_or_create2/1, test_default_override/1, test_std_histogram/1, @@ -84,6 +85,7 @@ groups() -> {test_defaults, [shuffle], [ test_update_or_create, + test_update_or_create_w_tuple_name, test_update_or_create2, test_default_override ]}, @@ -270,6 +272,18 @@ test_update_or_create(_Config) -> counter = exometer:info(exometer_admin:find_auto_template([a,b,c]), type), ok. +test_update_or_create_w_tuple_name(_Config) -> + N = [a,b,{c,1}], + {error, not_found} = exometer:update(N, 2), + {error, no_template} = exometer:update_or_create(N, 10), + exometer_admin:set_default(N, counter, []), + ok = exometer:update_or_create(N, 3), + {ok, [{value, 3}]} = exometer:get_value(N, [value]), + exometer_admin:set_default([a,'_',d], histogram, []), + histogram = exometer:info(exometer_admin:find_auto_template([a,{b,1},d]), type), + counter = exometer:info(exometer_admin:find_auto_template(N), type), + ok. + test_default_override(_Config) -> E = [d,e,f], E1 = [d,e,f,1],