From 5879a16c83fd2cf399125ae75f471f955bf89ba2 Mon Sep 17 00:00:00 2001 From: Chris AtLee Date: Mon, 22 Apr 2024 15:48:29 -0400 Subject: [PATCH] WIP - implement lazy tags --- lib/statsd/instrument/datagram_builder.rb | 4 ++++ test/datagram_builder_test.rb | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/lib/statsd/instrument/datagram_builder.rb b/lib/statsd/instrument/datagram_builder.rb index f233de4b..849befe8 100644 --- a/lib/statsd/instrument/datagram_builder.rb +++ b/lib/statsd/instrument/datagram_builder.rb @@ -79,6 +79,10 @@ def generate_generic_datagram(name, value, type, sample_rate, tags) datagram << @default_tags end + if tags.respond_to?(:call) + tags = tags.call + end + unless tags.nil? || tags.empty? datagram << (@default_tags.nil? ? "|#" : ",") compile_tags(tags, datagram) diff --git a/test/datagram_builder_test.rb b/test/datagram_builder_test.rb index d5be7d65..de57f14a 100644 --- a/test/datagram_builder_test.rb +++ b/test/datagram_builder_test.rb @@ -92,6 +92,17 @@ def test_tags assert_equal("foo:10|d|#foo:bar,baz:quc", datagram) end + def test_lazy_tags + datagram = @datagram_builder.d("foo", 10, nil, -> { { foo: "bar" } }) + assert_equal("foo:10|d|#foo:bar", datagram) + + datagram = @datagram_builder.d("foo", 10, nil, -> { ["foo", "bar"] }) + assert_equal("foo:10|d|#foo,bar", datagram) + + datagram = @datagram_builder.d("foo", 10, nil, -> { ["foo:bar"] }) + assert_equal("foo:10|d|#foo:bar", datagram) + end + def test_prefix datagram_builder = StatsD::Instrument::DatagramBuilder.new(prefix: "foo") datagram = datagram_builder.c("bar", 1, nil, nil)