Skip to content

Commit f5c72c9

Browse files
authored
Fix flaky tests on TestReceiveResourceSpansV2 in datadogconnector (#37546)
<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue. Ex. Adding a feature - Explain what this achieves.--> #### Description Address flaky test `TestReceiveResourceSpansV2/ReceiveResourceSpansV1` in datadogconnector. Previously, test results would depend on test execution order, since the feature flag setting would persist between tests. <!-- Issue number (e.g. #1234) or full URL to issue, if applicable. --> #### Link to tracking issue Fixes #37515
1 parent 14d1118 commit f5c72c9

File tree

3 files changed

+40
-31
lines changed

3 files changed

+40
-31
lines changed

connector/datadogconnector/connector_native_test.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import (
2424
"go.uber.org/zap"
2525
"google.golang.org/protobuf/proto"
2626
"google.golang.org/protobuf/testing/protocmp"
27+
28+
pkgdatadog "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/datadog"
2729
)
2830

2931
var _ component.Component = (*traceToMetricConnectorNative)(nil) // testing that the connectorImp properly implements the type Component interface
@@ -276,9 +278,11 @@ func TestObfuscate(t *testing.T) {
276278
cfg := NewFactory().CreateDefaultConfig().(*Config)
277279
cfg.Traces.BucketInterval = time.Second
278280

279-
if err := featuregate.GlobalRegistry().Set("datadog.EnableReceiveResourceSpansV2", true); err != nil {
280-
t.Fatal(err)
281-
}
281+
prevVal := pkgdatadog.ReceiveResourceSpansV2FeatureGate.IsEnabled()
282+
require.NoError(t, featuregate.GlobalRegistry().Set("datadog.EnableReceiveResourceSpansV2", true))
283+
defer func() {
284+
require.NoError(t, featuregate.GlobalRegistry().Set("datadog.EnableReceiveResourceSpansV2", prevVal))
285+
}()
282286
if err := featuregate.GlobalRegistry().Set("datadog.EnableOperationAndResourceNameV2", true); err != nil {
283287
t.Fatal(err)
284288
}

connector/datadogconnector/connector_test.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import (
2424
semconv "go.opentelemetry.io/collector/semconv/v1.27.0"
2525
"go.uber.org/zap"
2626
"google.golang.org/protobuf/proto"
27+
28+
pkgdatadog "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/datadog"
2729
)
2830

2931
var _ component.Component = (*traceToMetricConnector)(nil) // testing that the connectorImp properly implements the type Component interface
@@ -202,11 +204,11 @@ func TestReceiveResourceSpansV2(t *testing.T) {
202204
}
203205

204206
func testReceiveResourceSpansV2(t *testing.T, enableReceiveResourceSpansV2 bool) {
205-
if enableReceiveResourceSpansV2 {
206-
if err := featuregate.GlobalRegistry().Set("datadog.EnableReceiveResourceSpansV2", true); err != nil {
207-
t.Fatal(err)
208-
}
209-
}
207+
prevVal := pkgdatadog.ReceiveResourceSpansV2FeatureGate.IsEnabled()
208+
require.NoError(t, featuregate.GlobalRegistry().Set("datadog.EnableReceiveResourceSpansV2", enableReceiveResourceSpansV2))
209+
defer func() {
210+
require.NoError(t, featuregate.GlobalRegistry().Set("datadog.EnableReceiveResourceSpansV2", prevVal))
211+
}()
210212
connector, metricsSink := creteConnector(t)
211213
err := connector.Start(context.Background(), componenttest.NewNopHost())
212214
if err != nil {

exporter/datadogexporter/traces_exporter_test.go

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import (
3232
semconv "go.opentelemetry.io/collector/semconv/v1.6.1"
3333
"google.golang.org/protobuf/proto"
3434

35+
pkgdatadog "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/datadog"
3536
datadogconfig "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/datadog/config"
3637
)
3738

@@ -114,11 +115,11 @@ func TestTracesSource(t *testing.T) {
114115
}
115116

116117
func testTracesSource(t *testing.T, enableReceiveResourceSpansV2 bool) {
117-
if enableReceiveResourceSpansV2 {
118-
if err := featuregate.GlobalRegistry().Set("datadog.EnableReceiveResourceSpansV2", true); err != nil {
119-
t.Fatal(err)
120-
}
121-
}
118+
prevVal := pkgdatadog.ReceiveResourceSpansV2FeatureGate.IsEnabled()
119+
require.NoError(t, featuregate.GlobalRegistry().Set("datadog.EnableReceiveResourceSpansV2", enableReceiveResourceSpansV2))
120+
defer func() {
121+
require.NoError(t, featuregate.GlobalRegistry().Set("datadog.EnableReceiveResourceSpansV2", prevVal))
122+
}()
122123

123124
reqs := make(chan []byte, 1)
124125
metricsServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
@@ -261,11 +262,11 @@ func TestTraceExporter(t *testing.T) {
261262
}
262263

263264
func testTraceExporter(t *testing.T, enableReceiveResourceSpansV2 bool) {
264-
if enableReceiveResourceSpansV2 {
265-
if err := featuregate.GlobalRegistry().Set("datadog.EnableReceiveResourceSpansV2", true); err != nil {
266-
t.Fatal(err)
267-
}
268-
}
265+
prevVal := pkgdatadog.ReceiveResourceSpansV2FeatureGate.IsEnabled()
266+
require.NoError(t, featuregate.GlobalRegistry().Set("datadog.EnableReceiveResourceSpansV2", enableReceiveResourceSpansV2))
267+
defer func() {
268+
require.NoError(t, featuregate.GlobalRegistry().Set("datadog.EnableReceiveResourceSpansV2", prevVal))
269+
}()
269270
metricsServer := testutil.DatadogServerMock()
270271
defer metricsServer.Close()
271272

@@ -346,11 +347,11 @@ func TestPushTraceData(t *testing.T) {
346347
}
347348

348349
func testPushTraceData(t *testing.T, enableReceiveResourceSpansV2 bool) {
349-
if enableReceiveResourceSpansV2 {
350-
if err := featuregate.GlobalRegistry().Set("datadog.EnableReceiveResourceSpansV2", true); err != nil {
351-
t.Fatal(err)
352-
}
353-
}
350+
prevVal := pkgdatadog.ReceiveResourceSpansV2FeatureGate.IsEnabled()
351+
require.NoError(t, featuregate.GlobalRegistry().Set("datadog.EnableReceiveResourceSpansV2", enableReceiveResourceSpansV2))
352+
defer func() {
353+
require.NoError(t, featuregate.GlobalRegistry().Set("datadog.EnableReceiveResourceSpansV2", prevVal))
354+
}()
354355
server := testutil.DatadogServerMock()
355356
defer server.Close()
356357
cfg := &Config{
@@ -398,11 +399,11 @@ func TestPushTraceDataNewEnvConvention(t *testing.T) {
398399
}
399400

400401
func testPushTraceDataNewEnvConvention(t *testing.T, enableReceiveResourceSpansV2 bool) {
401-
if enableReceiveResourceSpansV2 {
402-
if err := featuregate.GlobalRegistry().Set("datadog.EnableReceiveResourceSpansV2", true); err != nil {
403-
t.Fatal(err)
404-
}
405-
}
402+
prevVal := pkgdatadog.ReceiveResourceSpansV2FeatureGate.IsEnabled()
403+
require.NoError(t, featuregate.GlobalRegistry().Set("datadog.EnableReceiveResourceSpansV2", enableReceiveResourceSpansV2))
404+
defer func() {
405+
require.NoError(t, featuregate.GlobalRegistry().Set("datadog.EnableReceiveResourceSpansV2", prevVal))
406+
}()
406407

407408
tracesRec := &testutil.HTTPRequestRecorderWithChan{Pattern: testutil.TraceEndpoint, ReqChan: make(chan []byte)}
408409
server := testutil.DatadogServerMock(tracesRec.HandlerFunc)
@@ -489,9 +490,11 @@ func TestPushTraceData_OperationAndResourceNameV2(t *testing.T) {
489490
}
490491

491492
func TestResRelatedAttributesInSpanAttributes_ReceiveResourceSpansV2Enabled(t *testing.T) {
492-
if err := featuregate.GlobalRegistry().Set("datadog.EnableReceiveResourceSpansV2", true); err != nil {
493-
t.Fatal(err)
494-
}
493+
prevVal := pkgdatadog.ReceiveResourceSpansV2FeatureGate.IsEnabled()
494+
require.NoError(t, featuregate.GlobalRegistry().Set("datadog.EnableReceiveResourceSpansV2", true))
495+
defer func() {
496+
require.NoError(t, featuregate.GlobalRegistry().Set("datadog.EnableReceiveResourceSpansV2", prevVal))
497+
}()
495498

496499
tracesRec := &testutil.HTTPRequestRecorderWithChan{Pattern: testutil.TraceEndpoint, ReqChan: make(chan []byte)}
497500
server := testutil.DatadogServerMock(tracesRec.HandlerFunc)

0 commit comments

Comments
 (0)