@@ -240,6 +240,7 @@ fn assert_counter_metric(metrics: &[Metric], name: &str, expected: f64) {
240240}
241241
242242#[ tokio:: test]
243+ #[ expect( clippy:: cast_precision_loss) ]
243244async fn emits_buffer_utilization_histogram_on_send_and_receive ( ) {
244245 metrics:: init_test ( ) ;
245246 let buffer_size = 2 ;
@@ -259,30 +260,34 @@ async fn emits_buffer_utilization_histogram_on_send_and_receive() {
259260 assert ! ( recv. next( ) . await . is_some( ) ) ;
260261 assert ! ( recv. next( ) . await . is_some( ) ) ;
261262
262- let utilization_metrics = Controller :: get ( )
263+ let metrics : Vec < _ > = Controller :: get ( )
263264 . expect ( "metrics controller available" )
264265 . capture_metrics ( )
265266 . into_iter ( )
266- . filter ( |metric| metric. name ( ) == "source_sender_buffer_utilization" )
267- . collect :: < Vec < _ > > ( ) ;
268- assert_eq ! (
269- utilization_metrics. len( ) ,
270- 1 ,
271- "expected a single utilization histogram"
272- ) ;
267+ . filter ( |metric| metric. name ( ) . starts_with ( "source_sender_buffer_" ) )
268+ . collect ( ) ;
269+ assert_eq ! ( metrics. len( ) , 3 , "expected 3 utilization metrics" ) ;
270+
271+ let find_metric = |name : & str | {
272+ metrics
273+ . iter ( )
274+ . find ( |m| m. name ( ) == name)
275+ . unwrap_or_else ( || panic ! ( "missing metric: {name}" ) )
276+ } ;
273277
274- let metric = & utilization_metrics [ 0 ] ;
278+ let metric = find_metric ( "source_sender_buffer_utilization" ) ;
275279 let tags = metric. tags ( ) . expect ( "utilization histogram has tags" ) ;
276- let max_events = buffer_size. to_string ( ) ;
277280 assert_eq ! ( tags. get( "output" ) , Some ( "_default" ) ) ;
278- assert_eq ! ( tags. get( "max_events" ) , Some ( max_events. as_str( ) ) ) ;
279281
280- let MetricValue :: AggregatedHistogram { count, sum, .. } = metric. value ( ) else {
281- panic ! ( "source_sender_buffer_utilization should be a histogram" ) ;
282+ let metric = find_metric ( "source_sender_buffer_utilization_level" ) ;
283+ let MetricValue :: Gauge { value } = metric. value ( ) else {
284+ panic ! ( "source_sender_buffer_utilization_level should be a gauge" ) ;
282285 } ;
283- assert_eq ! ( * count, 2 , "one sample per send expected" ) ;
284- assert ! (
285- ( * sum - 3.0 ) . abs( ) <= 0.001 ,
286- "unexpected histogram sum: expected 3.0, got {sum}"
287- ) ;
286+ assert_eq ! ( * value, 2.0 ) ;
287+
288+ let metric = find_metric ( "source_sender_buffer_max_event_size" ) ;
289+ let MetricValue :: Gauge { value } = metric. value ( ) else {
290+ panic ! ( "source_sender_buffer_max_event_size should be a gauge" ) ;
291+ } ;
292+ assert_eq ! ( * value, buffer_size as f64 ) ;
288293}
0 commit comments