diff --git a/tests/receivers/envoy/bundled_k8s_test.go b/tests/receivers/envoy/bundled_k8s_test.go index 4d3480e8bd..316b04d182 100644 --- a/tests/receivers/envoy/bundled_k8s_test.go +++ b/tests/receivers/envoy/bundled_k8s_test.go @@ -124,39 +124,45 @@ func TestEnvoyK8sObserver(t *testing.T) { expected, err := golden.ReadMetrics(filepath.Join("testdata", "expected_k8s.yaml")) require.NoError(t, err) - i := 0 + index := 0 require.EventuallyWithT(t, func(tt *assert.CollectT) { if len(sink.AllMetrics()) == 0 { assert.Fail(tt, "No metrics collected") return } - - i++ - err := pmetrictest.CompareMetrics(expected, sink.AllMetrics()[len(sink.AllMetrics())-1], - pmetrictest.IgnoreResourceAttributeValue("service.instance.id"), - pmetrictest.IgnoreResourceAttributeValue("net.host.port"), - pmetrictest.IgnoreResourceAttributeValue("net.host.name"), - pmetrictest.IgnoreResourceAttributeValue("server.address"), - pmetrictest.IgnoreResourceAttributeValue("container.name"), - pmetrictest.IgnoreResourceAttributeValue("server.port"), - pmetrictest.IgnoreResourceAttributeValue("service.name"), - pmetrictest.IgnoreResourceAttributeValue("service_instance_id"), - pmetrictest.IgnoreResourceAttributeValue("service_version"), - pmetrictest.IgnoreResourceAttributeValue("discovery.endpoint.id"), - pmetrictest.IgnoreMetricAttributeValue("service_version"), - pmetrictest.IgnoreMetricAttributeValue("service_instance_id"), - pmetrictest.IgnoreResourceAttributeValue("server.address"), - pmetrictest.IgnoreResourceAttributeValue("k8s.pod.name"), - pmetrictest.IgnoreResourceAttributeValue("k8s.pod.uid"), - pmetrictest.IgnoreTimestamp(), - pmetrictest.IgnoreStartTimestamp(), - pmetrictest.IgnoreMetricDataPointsOrder(), - pmetrictest.IgnoreScopeMetricsOrder(), - pmetrictest.IgnoreScopeVersion(), - pmetrictest.IgnoreResourceMetricsOrder(), - pmetrictest.IgnoreMetricsOrder(), - pmetrictest.IgnoreMetricValues(), - ) + var err error + newIndex := len(sink.AllMetrics()) + for i := index; i < newIndex; i++ { + err = pmetrictest.CompareMetrics(expected, sink.AllMetrics()[i], + pmetrictest.IgnoreResourceAttributeValue("service.instance.id"), + pmetrictest.IgnoreResourceAttributeValue("net.host.port"), + pmetrictest.IgnoreResourceAttributeValue("net.host.name"), + pmetrictest.IgnoreResourceAttributeValue("server.address"), + pmetrictest.IgnoreResourceAttributeValue("container.name"), + pmetrictest.IgnoreResourceAttributeValue("server.port"), + pmetrictest.IgnoreResourceAttributeValue("service.name"), + pmetrictest.IgnoreResourceAttributeValue("service_instance_id"), + pmetrictest.IgnoreResourceAttributeValue("service_version"), + pmetrictest.IgnoreResourceAttributeValue("discovery.endpoint.id"), + pmetrictest.IgnoreMetricAttributeValue("service_version"), + pmetrictest.IgnoreMetricAttributeValue("service_instance_id"), + pmetrictest.IgnoreResourceAttributeValue("server.address"), + pmetrictest.IgnoreResourceAttributeValue("k8s.pod.name"), + pmetrictest.IgnoreResourceAttributeValue("k8s.pod.uid"), + pmetrictest.IgnoreTimestamp(), + pmetrictest.IgnoreStartTimestamp(), + pmetrictest.IgnoreMetricDataPointsOrder(), + pmetrictest.IgnoreScopeMetricsOrder(), + pmetrictest.IgnoreScopeVersion(), + pmetrictest.IgnoreResourceMetricsOrder(), + pmetrictest.IgnoreMetricsOrder(), + pmetrictest.IgnoreMetricValues(), + ) + if err == nil { + return + } + } + index = newIndex assert.NoError(tt, err) }, 120*time.Second, 1*time.Second) } diff --git a/tests/receivers/smartagent/postgresql/postgresql_test.go b/tests/receivers/smartagent/postgresql/postgresql_test.go index a20e38a13a..1ac33ae5ac 100644 --- a/tests/receivers/smartagent/postgresql/postgresql_test.go +++ b/tests/receivers/smartagent/postgresql/postgresql_test.go @@ -26,7 +26,6 @@ import ( "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest/pmetrictest" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "go.opentelemetry.io/collector/pdata/pmetric" "github.com/signalfx/splunk-otel-collector/tests/testutils" ) @@ -55,43 +54,44 @@ func TestPostgresReceiverProvidesAllMetrics(t *testing.T) { expected, err := golden.ReadMetrics(filepath.Join("testdata", "expected", "all.yaml")) require.NoError(t, err) + lastIndex := 0 assert.EventuallyWithT(t, func(tt *assert.CollectT) { if len(tc.OTLPReceiverSink.AllMetrics()) == 0 { assert.Fail(tt, "No metrics collected") return } - var selected *pmetric.Metrics - for i := len(tc.OTLPReceiverSink.AllMetrics()) - 1; i >= 0; i-- { + var err error + newIndex := len(tc.OTLPReceiverSink.AllMetrics()) - 1 + for i := newIndex; i >= lastIndex; i-- { m := tc.OTLPReceiverSink.AllMetrics()[i] if m.MetricCount() == expected.MetricCount() { - selected = &m - break + err = pmetrictest.CompareMetrics(expected, m, + pmetrictest.IgnoreResourceAttributeValue("service.instance.id"), + pmetrictest.IgnoreResourceAttributeValue("net.host.port"), + pmetrictest.IgnoreResourceAttributeValue("server.port"), + pmetrictest.IgnoreResourceAttributeValue("service.name"), + pmetrictest.IgnoreResourceAttributeValue("service_instance_id"), + pmetrictest.IgnoreResourceAttributeValue("service_version"), + pmetrictest.IgnoreMetricAttributeValue("service_version"), + pmetrictest.IgnoreMetricAttributeValue("service_instance_id"), + pmetrictest.IgnoreMetricAttributeValue("queryid"), + pmetrictest.IgnoreMetricAttributeValue("table"), + pmetrictest.IgnoreSubsequentDataPoints(), + pmetrictest.IgnoreTimestamp(), + pmetrictest.IgnoreStartTimestamp(), + pmetrictest.IgnoreMetricDataPointsOrder(), + pmetrictest.IgnoreScopeMetricsOrder(), + pmetrictest.IgnoreMetricsOrder(), + pmetrictest.IgnoreScopeVersion(), + pmetrictest.IgnoreResourceMetricsOrder(), + pmetrictest.IgnoreMetricValues(), + ) + if err == nil { + return + } } } - - require.NotNil(tt, selected) - - err := pmetrictest.CompareMetrics(expected, *selected, - pmetrictest.IgnoreResourceAttributeValue("service.instance.id"), - pmetrictest.IgnoreResourceAttributeValue("net.host.port"), - pmetrictest.IgnoreResourceAttributeValue("server.port"), - pmetrictest.IgnoreResourceAttributeValue("service.name"), - pmetrictest.IgnoreResourceAttributeValue("service_instance_id"), - pmetrictest.IgnoreResourceAttributeValue("service_version"), - pmetrictest.IgnoreMetricAttributeValue("service_version"), - pmetrictest.IgnoreMetricAttributeValue("service_instance_id"), - pmetrictest.IgnoreMetricAttributeValue("queryid"), - pmetrictest.IgnoreMetricAttributeValue("table"), - pmetrictest.IgnoreSubsequentDataPoints(), - pmetrictest.IgnoreTimestamp(), - pmetrictest.IgnoreStartTimestamp(), - pmetrictest.IgnoreMetricDataPointsOrder(), - pmetrictest.IgnoreScopeMetricsOrder(), - pmetrictest.IgnoreMetricsOrder(), - pmetrictest.IgnoreScopeVersion(), - pmetrictest.IgnoreResourceMetricsOrder(), - pmetrictest.IgnoreMetricValues(), - ) + lastIndex = newIndex assert.NoError(tt, err) }, 30*time.Second, 1*time.Second) } diff --git a/tests/testutils/golden.go b/tests/testutils/golden.go index 587a231a3d..135e2c3ef9 100644 --- a/tests/testutils/golden.go +++ b/tests/testutils/golden.go @@ -123,13 +123,23 @@ func RunMetricsCollectionTest(t *testing.T, configFile string, expectedFilePath expected, err := golden.ReadMetrics(filepath.Join("testdata", expectedFilePath)) require.NoError(t, err) + index := 0 assert.EventuallyWithT(t, func(tt *assert.CollectT) { if len(sink.AllMetrics()) == 0 { assert.Fail(tt, "No metrics collected") return } - err := pmetrictest.CompareMetrics(expected, sink.AllMetrics()[len(sink.AllMetrics())-1], - opts.compareMetricsOptions...) + var err error + newIndex := len(sink.AllMetrics()) + for i := index; i < newIndex; i++ { + m := sink.AllMetrics()[i] + err = pmetrictest.CompareMetrics(expected, m, + opts.compareMetricsOptions...) + if err == nil { + return + } + } + index = newIndex assert.NoError(tt, err) }, 30*time.Second, 1*time.Second) }