@@ -54,6 +54,42 @@ fn scope_info_labels_are_added_to_metric_points() {
5454 assert ! ( !output. contains( "reserved-schema-url" ) ) ;
5555}
5656
57+ #[ test]
58+ fn scope_info_labels_do_not_collide_with_metric_attributes ( ) {
59+ let registry = prometheus:: Registry :: new ( ) ;
60+ let exporter = ExporterBuilder :: default ( )
61+ . with_registry ( registry. clone ( ) )
62+ . build ( )
63+ . unwrap ( ) ;
64+ let provider = SdkMeterProvider :: builder ( ) . with_reader ( exporter) . build ( ) ;
65+
66+ let scope = InstrumentationScope :: builder ( "scope-test" )
67+ . with_version ( "v1.2.3" )
68+ . with_schema_url ( "https://opentelemetry.io/schemas/1.0.0" )
69+ . build ( ) ;
70+ let meter = provider. meter_with_scope ( scope) ;
71+
72+ let counter = meter. u64_counter ( "scope.counter" ) . build ( ) ;
73+ counter. add (
74+ 1 ,
75+ & [
76+ KeyValue :: new ( "metric.attr" , "metric-value" ) ,
77+ KeyValue :: new ( "otel_scope_name" , "metric-scope-name" ) ,
78+ KeyValue :: new ( "otel_scope_version" , "metric-scope-version" ) ,
79+ KeyValue :: new ( "otel_scope_schema_url" , "metric-scope-schema-url" ) ,
80+ ] ,
81+ ) ;
82+
83+ let output = gather_and_encode ( registry) ;
84+
85+ assert ! ( output. contains(
86+ r#"scope_counter_total{metric_attr="metric-value",otel_scope_name="scope-test",otel_scope_version="v1.2.3",otel_scope_schema_url="https://opentelemetry.io/schemas/1.0.0"} 1"#
87+ ) ) ;
88+ assert ! ( !output. contains( "metric-scope-name" ) ) ;
89+ assert ! ( !output. contains( "metric-scope-version" ) ) ;
90+ assert ! ( !output. contains( "metric-scope-schema-url" ) ) ;
91+ }
92+
5793#[ test]
5894fn scope_info_labels_can_be_disabled ( ) {
5995 let registry = prometheus:: Registry :: new ( ) ;
0 commit comments