Skip to content

Commit 906a87f

Browse files
committed
Fix incorrect measurement callback argument in ConsoleReporter
I was incorrectly passing the entire `measurements` map instead of the specific `measurement` for a metric to the `keep`/`drop` callbacks. This fixes that issue and adds a test to verify.
1 parent 74d186e commit 906a87f

File tree

3 files changed

+32
-3
lines changed

3 files changed

+32
-3
lines changed

lib/telemetry_metrics.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,7 @@ defmodule Telemetry.Metrics do
412412
@type tag_values :: (:telemetry.event_metadata() -> :telemetry.event_metadata())
413413
@type predicate_fun ::
414414
(:telemetry.event_metadata() -> boolean())
415-
| (:telemetry.event_metadata(), :telemetry.event_measurements() -> boolean())
415+
| (:telemetry.event_metadata(), :telemetry.event_value() -> boolean())
416416
@type keep :: predicate_fun()
417417
@type drop :: predicate_fun()
418418
@type description :: nil | String.t()

lib/telemetry_metrics/console_reporter.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ defmodule Telemetry.Metrics.ConsoleReporter do
100100
Measurement value missing (metric skipped)
101101
"""
102102

103-
not keep?(metric, metadata, measurements) ->
103+
not keep?(metric, metadata, measurement) ->
104104
"""
105105
Event dropped
106106
"""

test/console_reporter_test.exs

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ defmodule Telemetry.Metrics.ConsoleReporterTest do
2525
metadata[:boom] == :pow
2626
end
2727
),
28+
summary("parser.result.size",
29+
keep: fn _metadata, measurement -> measurement > 1024 end
30+
),
2831
sum("telemetry.event_size.metadata",
2932
measurement: &__MODULE__.metadata_measurement/2
3033
),
@@ -110,7 +113,7 @@ defmodule Telemetry.Metrics.ConsoleReporterTest do
110113
"""
111114
end
112115

113-
test "filters events", %{device: device} do
116+
test "filters events on metadata", %{device: device} do
114117
:telemetry.execute([:http, :request], %{response_time: 1000}, %{foo: :bar, boom: :pow})
115118
{_in, out} = StringIO.contents(device)
116119

@@ -126,6 +129,32 @@ defmodule Telemetry.Metrics.ConsoleReporterTest do
126129
"""
127130
end
128131

132+
test "filters events on measurement", %{device: device} do
133+
:telemetry.execute([:parser, :result], %{size: 512})
134+
:telemetry.execute([:parser, :result], %{size: 2048})
135+
{_in, out} = StringIO.contents(device)
136+
137+
assert out == """
138+
[Telemetry.Metrics.ConsoleReporter] Got new event!
139+
Event name: parser.result
140+
All measurements: %{size: 512}
141+
All metadata: %{}
142+
143+
Metric measurement: :size (summary)
144+
Event dropped
145+
146+
[Telemetry.Metrics.ConsoleReporter] Got new event!
147+
Event name: parser.result
148+
All measurements: %{size: 2048}
149+
All metadata: %{}
150+
151+
Metric measurement: :size (summary)
152+
With value: 2048
153+
Tag values: %{}
154+
155+
"""
156+
end
157+
129158
test "logs bad metrics", %{device: device} do
130159
log =
131160
capture_log(fn ->

0 commit comments

Comments
 (0)