From e93da062da7c57d86d9fbf2c0c80c5df55c5243e Mon Sep 17 00:00:00 2001 From: Joshua Marantz Date: Sun, 22 Mar 2026 12:35:08 -0400 Subject: [PATCH 1/3] add tag utility test. the tag joiner was previously covered by other tests, but lacked its own unit test Signed-off-by: Joshua Marantz --- test/common/stats/BUILD | 11 +++++++ test/common/stats/tag_utility_test.cc | 43 +++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 test/common/stats/tag_utility_test.cc diff --git a/test/common/stats/BUILD b/test/common/stats/BUILD index cdc01554e3ae5..6991db3f2284b 100644 --- a/test/common/stats/BUILD +++ b/test/common/stats/BUILD @@ -354,6 +354,17 @@ envoy_benchmark_test( benchmark_binary = "tag_extractor_impl_benchmark", ) +envoy_cc_test( + name = "tag_utility_test", + srcs = ["tag_utility_test.cc"], + rbe_pool = "6gig", + deps = [ + ":stat_test_utility_lib", + "//source/common/stats:symbol_table_lib", + "//source/common/stats:tag_utility_lib", + ], +) + envoy_cc_test( name = "thread_local_store_test", srcs = ["thread_local_store_test.cc"], diff --git a/test/common/stats/tag_utility_test.cc b/test/common/stats/tag_utility_test.cc new file mode 100644 index 0000000000000..4c82cc9afe63c --- /dev/null +++ b/test/common/stats/tag_utility_test.cc @@ -0,0 +1,43 @@ +#include "source/common/stats/tag_utility.h" + +#include "source/common/stats/symbol_table.h" + +#include "gtest/gtest.h" + +namespace Envoy { +namespace Stats { +namespace TagUtility { + +namespace { + +class TagUtilityTest : public ::testing::Test { + protected: + SymbolTable symbol_table_; + StatNamePool symbolic_pool_{symbol_table_}; + StatNamePool dynamic_pool_{symbol_table_};; +}; + +TEST_F(TagUtilityTest, Symbolic) { + StatNameTagVector tags; + tags.push_back(StatNameTag(symbolic_pool_.add("tag_name"), symbolic_pool_.add("tag_value"))); + TagStatNameJoiner joiner(symbolic_pool_.add("prefix"), + symbolic_pool_.add("name"), + tags, symbol_table_); + EXPECT_EQ("prefix.name.tag_name.tag_value", symbol_table_.toString(joiner.nameWithTags())); + EXPECT_EQ("prefix.name", symbol_table_.toString(joiner.tagExtractedName())); +} + +TEST_F(TagUtilityTest, Dynamic) { + StatNameTagVector tags; + tags.push_back(StatNameTag(dynamic_pool_.add("tag_name"), dynamic_pool_.add("tag_value"))); + TagStatNameJoiner joiner(dynamic_pool_.add("prefix"), + dynamic_pool_.add("name"), + tags, symbol_table_); + EXPECT_EQ("prefix.name.tag_name.tag_value", symbol_table_.toString(joiner.nameWithTags())); + EXPECT_EQ("prefix.name", symbol_table_.toString(joiner.tagExtractedName())); +} + +} // namespace +} // namespace TagUtility +} // namespace Stats +} // namespace Envoy From 7085105c907f41f580b54a66e6e19239a123061a Mon Sep 17 00:00:00 2001 From: Joshua Marantz Date: Sun, 22 Mar 2026 14:35:37 -0400 Subject: [PATCH 2/3] use dynamic pool. Signed-off-by: Joshua Marantz --- test/common/stats/tag_utility_test.cc | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/test/common/stats/tag_utility_test.cc b/test/common/stats/tag_utility_test.cc index 4c82cc9afe63c..770cbff18c4a0 100644 --- a/test/common/stats/tag_utility_test.cc +++ b/test/common/stats/tag_utility_test.cc @@ -1,6 +1,5 @@ -#include "source/common/stats/tag_utility.h" - #include "source/common/stats/symbol_table.h" +#include "source/common/stats/tag_utility.h" #include "gtest/gtest.h" @@ -11,18 +10,18 @@ namespace TagUtility { namespace { class TagUtilityTest : public ::testing::Test { - protected: +protected: SymbolTable symbol_table_; StatNamePool symbolic_pool_{symbol_table_}; - StatNamePool dynamic_pool_{symbol_table_};; + StatNameDynamicPool dynamic_pool_{symbol_table_}; + ; }; TEST_F(TagUtilityTest, Symbolic) { StatNameTagVector tags; tags.push_back(StatNameTag(symbolic_pool_.add("tag_name"), symbolic_pool_.add("tag_value"))); - TagStatNameJoiner joiner(symbolic_pool_.add("prefix"), - symbolic_pool_.add("name"), - tags, symbol_table_); + TagStatNameJoiner joiner(symbolic_pool_.add("prefix"), symbolic_pool_.add("name"), tags, + symbol_table_); EXPECT_EQ("prefix.name.tag_name.tag_value", symbol_table_.toString(joiner.nameWithTags())); EXPECT_EQ("prefix.name", symbol_table_.toString(joiner.tagExtractedName())); } @@ -30,9 +29,8 @@ TEST_F(TagUtilityTest, Symbolic) { TEST_F(TagUtilityTest, Dynamic) { StatNameTagVector tags; tags.push_back(StatNameTag(dynamic_pool_.add("tag_name"), dynamic_pool_.add("tag_value"))); - TagStatNameJoiner joiner(dynamic_pool_.add("prefix"), - dynamic_pool_.add("name"), - tags, symbol_table_); + TagStatNameJoiner joiner(dynamic_pool_.add("prefix"), dynamic_pool_.add("name"), tags, + symbol_table_); EXPECT_EQ("prefix.name.tag_name.tag_value", symbol_table_.toString(joiner.nameWithTags())); EXPECT_EQ("prefix.name", symbol_table_.toString(joiner.tagExtractedName())); } From 9bcd7d2cd32b3a60b51a699317da4b9a6c06e22b Mon Sep 17 00:00:00 2001 From: Joshua Marantz Date: Mon, 23 Mar 2026 09:03:53 -0400 Subject: [PATCH 3/3] remove extra semi-colon. Signed-off-by: Joshua Marantz --- test/common/stats/tag_utility_test.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/test/common/stats/tag_utility_test.cc b/test/common/stats/tag_utility_test.cc index 770cbff18c4a0..72c8196f52192 100644 --- a/test/common/stats/tag_utility_test.cc +++ b/test/common/stats/tag_utility_test.cc @@ -14,7 +14,6 @@ class TagUtilityTest : public ::testing::Test { SymbolTable symbol_table_; StatNamePool symbolic_pool_{symbol_table_}; StatNameDynamicPool dynamic_pool_{symbol_table_}; - ; }; TEST_F(TagUtilityTest, Symbolic) {