@@ -253,6 +253,7 @@ mod tests {
253
253
use crate :: testing:: metrics:: metric_reader:: TestMetricReader ;
254
254
use crate :: Resource ;
255
255
use opentelemetry:: global;
256
+ use opentelemetry:: metrics:: MeterProvider ;
256
257
use opentelemetry:: { Key , KeyValue , Value } ;
257
258
use std:: env;
258
259
@@ -433,4 +434,28 @@ mod tests {
433
434
// Now the shutdown should be invoked
434
435
assert ! ( reader. is_shutdown( ) ) ;
435
436
}
437
+
438
+ #[ test]
439
+ fn same_meter_reused_same_scope ( ) {
440
+ let provider = super :: SdkMeterProvider :: builder ( ) . build ( ) ;
441
+ let _meter1 = provider. meter ( "test" ) ;
442
+ let _meter2 = provider. meter ( "test" ) ;
443
+ assert_eq ! ( provider. inner. meters. lock( ) . unwrap( ) . len( ) , 1 ) ;
444
+ let _meter3 =
445
+ provider. versioned_meter ( "test" , Some ( "1.0.0" ) , Some ( "http://example.com" ) , None ) ;
446
+ let _meter4 =
447
+ provider. versioned_meter ( "test" , Some ( "1.0.0" ) , Some ( "http://example.com" ) , None ) ;
448
+ let _meter5 =
449
+ provider. versioned_meter ( "test" , Some ( "1.0.0" ) , Some ( "http://example.com" ) , None ) ;
450
+ assert_eq ! ( provider. inner. meters. lock( ) . unwrap( ) . len( ) , 2 ) ;
451
+
452
+ // the below are different meters, as meter names are case sensitive
453
+ let _meter6 =
454
+ provider. versioned_meter ( "ABC" , Some ( "1.0.0" ) , Some ( "http://example.com" ) , None ) ;
455
+ let _meter7 =
456
+ provider. versioned_meter ( "Abc" , Some ( "1.0.0" ) , Some ( "http://example.com" ) , None ) ;
457
+ let _meter8 =
458
+ provider. versioned_meter ( "abc" , Some ( "1.0.0" ) , Some ( "http://example.com" ) , None ) ;
459
+ assert_eq ! ( provider. inner. meters. lock( ) . unwrap( ) . len( ) , 5 ) ;
460
+ }
436
461
}
0 commit comments