You've already forked opentelemetry-go
mirror of
https://github.com/open-telemetry/opentelemetry-go.git
synced 2025-11-23 22:34:47 +02:00
Prometheus exporter tests: iterate through all scopes rather than looking only at the first (#7510)
**Current State:** Only inspected the first ScopeMetrics[0]. **New:** Iterates all ScopeMetrics to look for the four expected metrics anywhere. Co-authored-by: Damien Mathieu <42@dmathieu.com>
This commit is contained in:
@@ -2497,10 +2497,15 @@ func TestExporterSelfInstrumentation(t *testing.T) {
|
||||
var rm metricdata.ResourceMetrics
|
||||
err := observReader.Collect(t.Context(), &rm)
|
||||
require.NoError(t, err)
|
||||
if len(rm.ScopeMetrics) == 0 {
|
||||
return metricdata.ScopeMetrics{}
|
||||
|
||||
// Find the Prometheus exporter observability scope specifically.
|
||||
for _, sm := range rm.ScopeMetrics {
|
||||
if sm.Scope.Name == observ.ScopeName {
|
||||
return sm
|
||||
}
|
||||
}
|
||||
return rm.ScopeMetrics[0]
|
||||
// Exporter scope not found (e.g., if disabled or no scrape yet).
|
||||
return metricdata.ScopeMetrics{}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2811,14 +2816,25 @@ func TestExporterSelfInstrumentationExemplarHandling(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
if len(observMetrics.ScopeMetrics) > 0 {
|
||||
scopeMetrics := observMetrics.ScopeMetrics[0]
|
||||
expectedMetrics := map[string]bool{
|
||||
"otel.sdk.exporter.metric_data_point.inflight": false,
|
||||
"otel.sdk.exporter.metric_data_point.exported": false,
|
||||
"otel.sdk.exporter.operation.duration": false,
|
||||
"otel.sdk.metric_reader.collection.duration": false,
|
||||
}
|
||||
|
||||
// Check all scope metrics, not just the first one
|
||||
for _, scopeMetrics := range observMetrics.ScopeMetrics {
|
||||
for _, m := range scopeMetrics.Metrics {
|
||||
if _, exists := expectedMetrics[m.Name]; exists {
|
||||
expectedMetrics[m.Name] = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foundObservabilityMetrics := 0
|
||||
for _, m := range scopeMetrics.Metrics {
|
||||
switch m.Name {
|
||||
case "otel.sdk.exporter.metric_data_point.inflight",
|
||||
"otel.sdk.exporter.metric_data_point.exported",
|
||||
"otel.sdk.exporter.operation.duration",
|
||||
"otel.sdk.metric_reader.collection.duration":
|
||||
for _, found := range expectedMetrics {
|
||||
if found {
|
||||
foundObservabilityMetrics++
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user