@@ -30,7 +30,8 @@ defmodule Telemetry.Metrics.ConsoleReporterTest do
30
30
) ,
31
31
distribution ( "phoenix.endpoint.stop.duration" ,
32
32
measurement: & __MODULE__ . measurement / 1
33
- )
33
+ ) ,
34
+ summary ( "my_app.repo.query.query_time" , unit: { :native , :millisecond } )
34
35
]
35
36
36
37
{ :ok , device } = StringIO . open ( "" )
@@ -158,7 +159,7 @@ defmodule Telemetry.Metrics.ConsoleReporterTest do
158
159
All measurements: %{}
159
160
All metadata: %{key: :value}
160
161
161
- Metric measurement: &Telemetry.Metrics.ConsoleReporterTest.metadata_measurement/2 (sum)
162
+ Metric measurement: :metadata [via &Telemetry.Metrics.ConsoleReporterTest.metadata_measurement/2] (sum)
162
163
With value: 1
163
164
Tag values: %{}
164
165
@@ -176,10 +177,48 @@ defmodule Telemetry.Metrics.ConsoleReporterTest do
176
177
All measurements: %{duration: 100}
177
178
All metadata: %{}
178
179
179
- Metric measurement: &Telemetry.Metrics.ConsoleReporterTest.measurement/1 (distribution)
180
+ Metric measurement: :duration [via &Telemetry.Metrics.ConsoleReporterTest.measurement/1] (distribution)
180
181
With value: 100
181
182
Tag values: %{}
182
183
183
184
"""
184
185
end
186
+
187
+ test "can show metric name and unit conversion fun" , % { device: device , formatter: formatter } do
188
+ event = [ :my_app , :repo , :query ]
189
+ native_time = :erlang . system_time ( )
190
+
191
+ expected_millisecond = native_time * ( 1 / System . convert_time_unit ( 1 , :millisecond , :native ) )
192
+
193
+ expected_measurement_fun = measurement_fun ( event , :query_time , formatter , device )
194
+
195
+ :telemetry . execute ( event , % { query_time: native_time } )
196
+
197
+ { _in , out } = StringIO . contents ( device )
198
+
199
+ assert out == """
200
+ [Telemetry.Metrics.ConsoleReporter] Got new event!
201
+ Event name: my_app.repo.query
202
+ All measurements: %{query_time: #{ native_time } }
203
+ All metadata: %{}
204
+
205
+ Metric measurement: :query_time [via #{ inspect ( expected_measurement_fun ) } ] (summary)
206
+ With value: #{ expected_millisecond } millisecond
207
+ Tag values: %{}
208
+
209
+ """
210
+ end
211
+
212
+ defp measurement_fun ( event , measurement , formatter , device ) do
213
+ name = event ++ [ measurement ]
214
+
215
+ event
216
+ |> :telemetry . list_handlers ( )
217
+ |> Enum . find_value ( fn
218
+ % { id: { Telemetry.Metrics.ConsoleReporter , ^ event , ^ formatter } , config: { config , ^ device } } ->
219
+ Enum . find_value ( config , fn % { name: ^ name , measurement: fun } when is_function ( fun ) ->
220
+ fun
221
+ end )
222
+ end )
223
+ end
185
224
end
0 commit comments