@@ -777,4 +777,45 @@ TEST(PrometheusExporterUtils, InstrumentationScopePointAttributeCollisions)
777777 }
778778}
779779
780+ TEST (PrometheusExporterUtils, TargetInfoExcludesInstrumentationScopeLabels)
781+ {
782+ auto scope = InstrumentationScope::Create (
783+ " library_name" , " 1.2.0" , " https://opentelemetry.io/schemas/1.21.0" , {{" foo" , " scope_foo" }});
784+
785+ metric_sdk::SumPointData sum_point_data{};
786+ sum_point_data.value_ = 5.0 ;
787+ metric_sdk::MetricData metric_data{
788+ metric_sdk::InstrumentDescriptor{" requests" , " description" , " 1" ,
789+ metric_sdk::InstrumentType::kCounter ,
790+ metric_sdk::InstrumentValueType::kDouble },
791+ metric_sdk::AggregationTemporality::kCumulative , opentelemetry::common::SystemTimestamp{},
792+ opentelemetry::common::SystemTimestamp{},
793+ std::vector<metric_sdk::PointDataAttributes>{{{}, sum_point_data}}};
794+
795+ Resource resource = Resource::Create (
796+ ResourceAttributes{{" service.name" , " test_service" }, {" otel_scope_foo" , " resource_foo" }});
797+ metric_sdk::ResourceMetrics data{
798+ &resource, std::vector<metric_sdk::ScopeMetrics>{
799+ {scope.get (), std::vector<metric_sdk::MetricData>{metric_data}}}};
800+
801+ auto translated = PrometheusExporterUtils::TranslateToPrometheus (data, true , false );
802+ ASSERT_EQ (translated.size (), 2U );
803+ ASSERT_EQ (translated[0 ].name , " target" );
804+ ASSERT_EQ (translated[0 ].metric .size (), 1U );
805+
806+ std::size_t otel_scope_foo_count = 0 ;
807+ for (const auto &label : translated[0 ].metric [0 ].label )
808+ {
809+ EXPECT_NE (label.name , " otel_scope_name" );
810+ EXPECT_NE (label.name , " otel_scope_version" );
811+ EXPECT_NE (label.name , " otel_scope_schema_url" );
812+ if (label.name == " otel_scope_foo" )
813+ {
814+ EXPECT_EQ (label.value , " resource_foo" );
815+ ++otel_scope_foo_count;
816+ }
817+ }
818+ EXPECT_EQ (otel_scope_foo_count, 1U );
819+ }
820+
780821OPENTELEMETRY_END_NAMESPACE
0 commit comments