Skip to content
Merged
Show file tree
Hide file tree
Changes from 89 commits
Commits
Show all changes
99 commits
Select commit Hold shift + click to select a range
ca361bb
adding first version for otelcol_receiver_requests
gizas Apr 3, 2025
6ee5ec8
dependenceies
gizas Apr 3, 2025
83b9462
dependenceies
gizas Apr 3, 2025
b926b14
dependenceies
gizas Apr 3, 2025
1803e33
dependenceies
gizas Apr 3, 2025
d729b2c
dependenceies
gizas Apr 3, 2025
81c6f86
adding logic for client disconnect errors
gizas Apr 4, 2025
140fc8f
change pointer
gizas Apr 4, 2025
a6db9e1
adding back setgate test
gizas Apr 4, 2025
45ab725
adding comments
gizas Apr 4, 2025
85bcabb
adding comments
gizas Apr 4, 2025
8a2116c
fixing go.mod
gizas Apr 4, 2025
6f013a7
adding comments
gizas Apr 4, 2025
61e3468
fixing metadata.yml
gizas Apr 4, 2025
b9e788d
fixing go.mod
gizas Apr 4, 2025
0019011
fixing metadata.yml
gizas Apr 4, 2025
d4c452a
fixing obsreport with otelcol_receiver_requests
gizas Apr 4, 2025
143b04c
fixing linting errors
gizas Apr 29, 2025
1c151b4
Merge branch 'main' into custom_receiverhelper
gizas Apr 29, 2025
cd2bb19
fixing lint errors
gizas Apr 30, 2025
0194ac5
Merge branch 'main' into custom_receiverhelper
gizas Apr 30, 2025
ad79665
fixing linting errors and some tests
gizas May 23, 2025
29e209d
fixing conflict
gizas May 23, 2025
2928c47
merging with main
gizas May 23, 2025
ed48254
adding correct metric telemetry
gizas May 23, 2025
1053f75
adding vars to internal
gizas May 23, 2025
fcc1943
removing unneeded requests metric
gizas May 23, 2025
5b0be26
adding test TestOTLPReceiverGRPCMetricsIngestTest
gizas May 23, 2025
9294a16
adding test TestOTLPReceiverGRPCMetricsIngestTest
gizas May 23, 2025
156f422
Merge branch 'main' into custom_receiverhelper
gizas May 23, 2025
0bb9732
adding test TestOTLPReceiverGRPCMetricsIngestTest and fix value
gizas May 23, 2025
cb2796a
Merge branch 'custom_receiverhelper' of github.com:gizas/opentelemetr…
gizas May 23, 2025
fdb2762
Merge branch 'main' into custom_receiverhelper
gizas May 26, 2025
d20d19d
Merge branch 'main' of github.com:gizas/opentelemetry-collector into …
gizas Jul 21, 2025
165b076
reverting docs
gizas Jul 21, 2025
79cc00c
Merge branch 'custom_receiverhelper' of github.com:gizas/opentelemetr…
gizas Jul 21, 2025
e475745
using generic status
gizas Jul 21, 2025
3decea5
adding otelcol_receiver_requests
gizas Jul 21, 2025
4846daf
adding otelcol_receiver_requests with correct attrs
gizas Jul 21, 2025
0d3e4b1
fixing tests
gizas Jul 21, 2025
666c5b2
fixing tests
gizas Jul 21, 2025
a6f7dc7
fixing tests
gizas Jul 21, 2025
2c6b080
fixing diffs
gizas Jul 21, 2025
53992b5
fixing diffs
gizas Jul 21, 2025
843ef40
fixing otltest
gizas Jul 21, 2025
0018f77
fixing diffs
gizas Jul 21, 2025
c3439a8
fixing diffs
gizas Jul 21, 2025
cd6e640
fixing fmt
gizas Jul 21, 2025
75e3e7f
adding changelog
gizas Jul 21, 2025
d9eebb1
fixing tests according to existing codes
gizas Jul 22, 2025
515e4d5
fixing tests according to existing codes
gizas Jul 22, 2025
0c4b977
fixing tests according to existing codes
gizas Jul 22, 2025
eb93ce5
fix chloggen issue int
gizas Jul 22, 2025
b76a51d
Merge branch 'main' into custom_receiverhelper
gizas Jul 22, 2025
3ab59d3
Update .chloggen/custom_receiverhelper.yaml
gizas Jul 22, 2025
d347bd1
fixing comments
gizas Jul 22, 2025
8a4a26c
Merge branch 'custom_receiverhelper' of github.com:gizas/opentelemetr…
gizas Jul 22, 2025
44b193e
Update receiver/receiverhelper/internal/obsmetrics.go
gizas Jul 22, 2025
579e532
fixing comments and metadata.yaml
gizas Jul 22, 2025
250f1ba
Merge branch 'custom_receiverhelper' of github.com:gizas/opentelemetr…
gizas Jul 22, 2025
0a38936
changing failed variable
gizas Jul 22, 2025
36acb84
changing internalErrorsKey to failedItemsKey
gizas Jul 22, 2025
08fb90d
fixing lint errors
gizas Jul 22, 2025
702d48a
make go generat
gizas Jul 22, 2025
d7f9533
fix test
gizas Jul 22, 2025
c82a466
Merge branch 'main' into custom_receiverhelper
gizas Jul 22, 2025
a92c7a6
Merge branch 'main' of github.com:gizas/opentelemetry-collector into …
gizas Jul 22, 2025
535d2ba
fix string in metadata and comment
gizas Jul 23, 2025
9b7c3f5
Merge branch 'custom_receiverhelper' of github.com:gizas/opentelemetr…
gizas Jul 23, 2025
7f5d19f
Merge branch 'main' of github.com:gizas/opentelemetry-collector into …
gizas Jul 23, 2025
b9543ac
updating obsreport for coverage
gizas Jul 23, 2025
52b302d
fixing title
gizas Jul 23, 2025
44c898c
Merge branch 'main' of github.com:gizas/opentelemetry-collector into …
gizas Jul 23, 2025
1f2a196
Merge branch 'main' into custom_receiverhelper
gizas Aug 19, 2025
6583a43
adding changes as featuregate
gizas Aug 19, 2025
9a6cf12
Merge branch 'main' into custom_receiverhelper
gizas Aug 19, 2025
3267177
merging feature gate in telemetry
gizas Aug 19, 2025
041e3f6
merging feature gate in telemetry
gizas Aug 19, 2025
3601749
changing id
gizas Aug 19, 2025
638370f
fixing tests with featuregate
gizas Aug 19, 2025
73fd278
fixing go mod
gizas Aug 19, 2025
909a081
udpating changelog
gizas Aug 19, 2025
f0297ff
udpating changelog
gizas Aug 19, 2025
25ea91a
added tests to improve coverage
gizas Aug 19, 2025
b3b8b87
added tests to improve coverage
gizas Aug 19, 2025
dd3df23
fixing version in go.mod
gizas Aug 19, 2025
89d7bc4
moving and renaming featuregate and added otelcol_receiver_requests u…
gizas Aug 20, 2025
de8ed1b
go mod tidy
gizas Aug 20, 2025
24e4281
Merge branch 'main' into custom_receiverhelper
gizas Aug 20, 2025
b77091f
updating logic
gizas Aug 20, 2025
89c07dd
Merge branch 'main' into custom_receiverhelper
gizas Aug 20, 2025
7fc9765
fixing tests
gizas Aug 20, 2025
a1c0105
fixing tests and lint errors
gizas Aug 21, 2025
8199a4b
Merge branch 'main' into custom_receiverhelper
gizas Aug 21, 2025
ec402d5
fixing go mod
gizas Aug 21, 2025
4fd8bc6
fixing go mod
gizas Aug 21, 2025
fac2c12
Update .chloggen/custom_receiverhelper.yaml
gizas Aug 25, 2025
a8a0b2d
adding alpha stability to receiver_requests
gizas Aug 25, 2025
5637ee6
Merge branch 'main' into custom_receiverhelper
gizas Aug 25, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions .chloggen/custom_receiverhelper.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Use this changelog template to create an entry for release notes.

# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
change_type: enhancement

# The name of the component, or a single word describing the area of concern, (e.g. otlpreceiver)
component: receiverhelper

# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
note: Update receiverhelper StartXOp and EndXOp methods to emit otelcol_receiver_refused_x and otelcol_receiver_failed_x in order to be able to distinguish internal vs downstream errors

# One or more tracking issues or pull requests related to the change
issues: [12207]

# (Optional) One or more lines of additional information to render under the primary note.
# These lines will be padded with 2 spaces and then inserted directly into the document.
# Use pipe (|) for multiline entries.
subtext: |
The specified feature is enable through feature-gate flag. Enable with command:
otelcol --config=config.yaml --feature-gates=+receiverhelper.newReceiverMetrics

# Optional: The change log or logs in which this entry should be included.
# e.g. '[user]' or '[user, api]'
# Include 'user' if the change is relevant to end users.
# Include 'api' if there is a change to a library API.
# Default: '[user]'
change_logs: []
2 changes: 1 addition & 1 deletion cmd/otelcorecol/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ require (
go.opentelemetry.io/collector/connector/connectortest v0.132.0 // indirect
go.opentelemetry.io/collector/connector/xconnector v0.132.0 // indirect
go.opentelemetry.io/collector/consumer v1.38.0 // indirect
go.opentelemetry.io/collector/consumer/consumererror v0.132.0 // indirect
go.opentelemetry.io/collector/consumer/consumererror v1.38.0 // indirect
go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.132.0 // indirect
go.opentelemetry.io/collector/consumer/consumertest v0.132.0 // indirect
go.opentelemetry.io/collector/consumer/xconsumer v0.132.0 // indirect
Expand Down
2 changes: 1 addition & 1 deletion internal/e2e/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ require (
go.opentelemetry.io/collector/config/configmiddleware v0.132.0 // indirect
go.opentelemetry.io/collector/confmap/xconfmap v0.132.0 // indirect
go.opentelemetry.io/collector/connector/xconnector v0.132.0 // indirect
go.opentelemetry.io/collector/consumer/consumererror v0.132.0 // indirect
go.opentelemetry.io/collector/consumer/consumererror v1.38.0 // indirect
go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.132.0 // indirect
go.opentelemetry.io/collector/consumer/xconsumer v0.132.0 // indirect
go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.132.0 // indirect
Expand Down
2 changes: 1 addition & 1 deletion receiver/otlpreceiver/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ require (
go.opentelemetry.io/collector/confmap v1.38.0
go.opentelemetry.io/collector/confmap/xconfmap v0.132.0
go.opentelemetry.io/collector/consumer v1.38.0
go.opentelemetry.io/collector/consumer/consumererror v0.132.0
go.opentelemetry.io/collector/consumer/consumererror v1.38.0
go.opentelemetry.io/collector/consumer/consumertest v0.132.0
go.opentelemetry.io/collector/consumer/xconsumer v0.132.0
go.opentelemetry.io/collector/internal/sharedcomponent v0.132.0
Expand Down
252 changes: 243 additions & 9 deletions receiver/otlpreceiver/otlp_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,13 @@ import (
"go.opentelemetry.io/collector/internal/testutil"
"go.opentelemetry.io/collector/pdata/plog"
"go.opentelemetry.io/collector/pdata/pmetric"
"go.opentelemetry.io/collector/pdata/pmetric/pmetricotlp"
"go.opentelemetry.io/collector/pdata/pprofile"
"go.opentelemetry.io/collector/pdata/ptrace"
"go.opentelemetry.io/collector/pdata/ptrace/ptraceotlp"
"go.opentelemetry.io/collector/pdata/testdata"
"go.opentelemetry.io/collector/receiver/otlpreceiver/internal/metadata"
"go.opentelemetry.io/collector/receiver/receiverhelper"
"go.opentelemetry.io/collector/receiver/receivertest"
)

Expand Down Expand Up @@ -118,8 +120,8 @@ func TestJsonHttp(t *testing.T) {
name: "Retryable GRPCError",
encoding: "",
contentType: "application/json",
err: status.New(codes.Unavailable, "").Err(),
expectedStatus: &spb.Status{Code: int32(codes.Unavailable), Message: ""},
err: status.New(codes.Unavailable, "Service Unavailable").Err(),
expectedStatus: &spb.Status{Code: int32(codes.Unavailable), Message: "Service Unavailable"},
expectedStatusCode: http.StatusServiceUnavailable,
},
}
Expand All @@ -145,7 +147,8 @@ func TestJsonHttp(t *testing.T) {
errStatus := &spb.Status{}
require.NoError(t, json.Unmarshal(respBytes, errStatus))
if s, ok := status.FromError(tt.err); ok {
assert.True(t, proto.Equal(errStatus, s.Proto()))
assert.Equal(t, s.Proto().Code, errStatus.Code)
assert.Equal(t, s.Proto().Message, errStatus.Message)
} else {
fmt.Println(errStatus)
assert.True(t, proto.Equal(errStatus, tt.expectedStatus))
Expand Down Expand Up @@ -365,15 +368,15 @@ func TestProtoHttp(t *testing.T) {
{
name: "Permanent GRPCError",
encoding: "",
err: status.New(codes.InvalidArgument, "").Err(),
expectedStatus: &spb.Status{Code: int32(codes.InvalidArgument), Message: ""},
err: status.New(codes.InvalidArgument, "Bad Request").Err(),
expectedStatus: &spb.Status{Code: int32(codes.InvalidArgument), Message: "Bad Request"},
expectedStatusCode: http.StatusBadRequest,
},
{
name: "Retryable GRPCError",
encoding: "",
err: status.New(codes.Unavailable, "").Err(),
expectedStatus: &spb.Status{Code: int32(codes.Unavailable), Message: ""},
err: status.New(codes.Unavailable, "Service Unavailable").Err(),
expectedStatus: &spb.Status{Code: int32(codes.Unavailable), Message: "Service Unavailable"},
expectedStatusCode: http.StatusServiceUnavailable,
},
}
Expand Down Expand Up @@ -553,6 +556,45 @@ func TestHTTPNewPortAlreadyUsed(t *testing.T) {
require.Error(t, r.Start(context.Background(), componenttest.NewNopHost()))
}

// TestOTLPReceiverGRPCMetricsIngestTest checks that the metrics receiver
// is returning the proper response (return and metrics) when the next consumer
// in the pipeline reports error.
func TestOTLPReceiverGRPCMetricsIngestTest(t *testing.T) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Was there a specific reason to add this new test for metrics? Do you expect the behavior to be different from TestOTLPReceiverGRPCTracesIngestTest?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not really, just same logic to catch also any changes in metrics. Let me know if you want me to remove it

// Get a new available port
addr := testutil.GetAvailableLocalAddress(t)

// Create a sink
sink := &errOrSinkConsumer{MetricsSink: new(consumertest.MetricsSink)}

// Create a telemetry instance
tt := componenttest.NewTelemetry()
t.Cleanup(func() { require.NoError(t, tt.Shutdown(context.Background())) })
// Create telemetry settings
settings := tt.NewTelemetrySettings()

recv := newGRPCReceiver(t, settings, addr, sink)
require.NotNil(t, recv)
require.NoError(t, recv.Start(context.Background(), componenttest.NewNopHost()))
t.Cleanup(func() { require.NoError(t, recv.Shutdown(context.Background())) })

cc, err := grpc.NewClient(addr, grpc.WithTransportCredentials(insecure.NewCredentials()))
require.NoError(t, err)
defer func() {
assert.NoError(t, cc.Close())
}()
// Set up the error case
sink.SetConsumeError(errors.New("consumer error"))

md := testdata.GenerateMetrics(1)
_, err = pmetricotlp.NewGRPCClient(cc).Export(context.Background(), pmetricotlp.NewExportRequestFromMetrics(md))
errStatus, ok := status.FromError(err)
require.True(t, ok)
assert.Equal(t, codes.Unavailable, errStatus.Code())

// Assert receiver metrics including receiver_requests
assertReceiverMetrics(t, tt, otlpReceiverID, "grpc", 0, 2)
}

// TestOTLPReceiverGRPCTracesIngestTest checks that the gRPC trace receiver
// is returning the proper response (return and metrics) when the next consumer
// in the pipeline reports error. The test changes the responses returned by the
Expand Down Expand Up @@ -1262,8 +1304,40 @@ func (esc *errOrSinkConsumer) checkData(t *testing.T, data any, dataLen int) {
}
}

func assertReceiverTraces(t *testing.T, tt *componenttest.Telemetry, id component.ID, transport string, accepted, refused int64) {
got, err := tt.GetMetric("otelcol_receiver_accepted_spans")
func assertReceiverTraces(t *testing.T, tt *componenttest.Telemetry, id component.ID, transport string, accepted, rejected int64) {
var refused, failed int64
var outcome string
gateEnabled := receiverhelper.NewReceiverMetricsGate.IsEnabled()
if gateEnabled {
refused = rejected
outcome = "refused"
} else {
failed = rejected
outcome = "failure"
}

got, err := tt.GetMetric("otelcol_receiver_failed_spans")
require.NoError(t, err)
metricdatatest.AssertEqual(t,
metricdata.Metrics{
Name: "otelcol_receiver_failed_spans",
Description: "The number of spans that failed to be processed by the receiver due to internal errors.",
Unit: "{spans}",
Data: metricdata.Sum[int64]{
Temporality: metricdata.CumulativeTemporality,
IsMonotonic: true,
DataPoints: []metricdata.DataPoint[int64]{
{
Attributes: attribute.NewSet(
attribute.String("receiver", id.String()),
attribute.String("transport", transport)),
Value: failed,
},
},
},
}, got, metricdatatest.IgnoreTimestamp(), metricdatatest.IgnoreExemplars())

got, err = tt.GetMetric("otelcol_receiver_accepted_spans")
require.NoError(t, err)
metricdatatest.AssertEqual(t,
metricdata.Metrics{
Expand Down Expand Up @@ -1304,4 +1378,164 @@ func assertReceiverTraces(t *testing.T, tt *componenttest.Telemetry, id componen
},
},
}, got, metricdatatest.IgnoreTimestamp(), metricdatatest.IgnoreExemplars())

// Assert receiver_requests metric
if gateEnabled {
got, err := tt.GetMetric("otelcol_receiver_requests")
require.NoError(t, err)

// Calculate expected requests based on accepted and refused counts
var expectedRequests []metricdata.DataPoint[int64]
if accepted > 0 {
expectedRequests = append(expectedRequests, metricdata.DataPoint[int64]{
Attributes: attribute.NewSet(
attribute.String("receiver", id.String()),
attribute.String("transport", transport),
attribute.String("outcome", "success")),
Value: accepted,
})
}
if rejected > 0 {
expectedRequests = append(expectedRequests, metricdata.DataPoint[int64]{
Attributes: attribute.NewSet(
attribute.String("receiver", id.String()),
attribute.String("transport", transport),
attribute.String("outcome", outcome)),
Value: rejected,
})
}

metricdatatest.AssertEqual(t,
metricdata.Metrics{
Name: "otelcol_receiver_requests",
Description: "The number of requests performed.",
Unit: "{requests}",
Data: metricdata.Sum[int64]{
Temporality: metricdata.CumulativeTemporality,
IsMonotonic: true,
DataPoints: expectedRequests,
},
}, got, metricdatatest.IgnoreTimestamp(), metricdatatest.IgnoreExemplars())
} else {
_, err := tt.GetMetric("otelcol_receiver_requests")
require.Error(t, err)
}
}

func assertReceiverMetrics(t *testing.T, tt *componenttest.Telemetry, id component.ID, transport string, accepted, rejected int64) {
var refused, failed int64
var outcome string
gateEnabled := receiverhelper.NewReceiverMetricsGate.IsEnabled()
if gateEnabled && consumererror.IsDownstream(errors.New("consumer error")) {
refused = rejected
outcome = "refused"
} else {
failed = rejected
outcome = "failure"
}

got, err := tt.GetMetric("otelcol_receiver_failed_metric_points")
require.NoError(t, err)
metricdatatest.AssertEqual(t,
metricdata.Metrics{
Name: "otelcol_receiver_failed_metric_points",
Description: "The number of metric points that failed to be processed by the receiver due to internal errors.",
Unit: "{datapoints}",
Data: metricdata.Sum[int64]{
Temporality: metricdata.CumulativeTemporality,
IsMonotonic: true,
DataPoints: []metricdata.DataPoint[int64]{
{
Attributes: attribute.NewSet(
attribute.String("receiver", id.String()),
attribute.String("transport", transport)),
Value: failed,
},
},
},
}, got, metricdatatest.IgnoreTimestamp(), metricdatatest.IgnoreExemplars())

got, err = tt.GetMetric("otelcol_receiver_accepted_metric_points")
require.NoError(t, err)
metricdatatest.AssertEqual(t,
metricdata.Metrics{
Name: "otelcol_receiver_accepted_metric_points",
Description: "Number of metric points successfully pushed into the pipeline. [alpha]",
Unit: "{datapoints}",
Data: metricdata.Sum[int64]{
Temporality: metricdata.CumulativeTemporality,
IsMonotonic: true,
DataPoints: []metricdata.DataPoint[int64]{
{
Attributes: attribute.NewSet(
attribute.String("receiver", id.String()),
attribute.String("transport", transport)),
Value: accepted,
},
},
},
}, got, metricdatatest.IgnoreTimestamp(), metricdatatest.IgnoreExemplars())

got, err = tt.GetMetric("otelcol_receiver_refused_metric_points")
require.NoError(t, err)
metricdatatest.AssertEqual(t,
metricdata.Metrics{
Name: "otelcol_receiver_refused_metric_points",
Description: "Number of metric points that could not be pushed into the pipeline. [alpha]",
Unit: "{datapoints}",
Data: metricdata.Sum[int64]{
Temporality: metricdata.CumulativeTemporality,
IsMonotonic: true,
DataPoints: []metricdata.DataPoint[int64]{
{
Attributes: attribute.NewSet(
attribute.String("receiver", id.String()),
attribute.String("transport", transport)),
Value: refused,
},
},
},
}, got, metricdatatest.IgnoreTimestamp(), metricdatatest.IgnoreExemplars())

// Assert receiver_requests metric
if gateEnabled {
got, err := tt.GetMetric("otelcol_receiver_requests")
require.NoError(t, err)

// Calculate expected requests based on accepted and refused counts
var expectedRequests []metricdata.DataPoint[int64]
if accepted > 0 {
expectedRequests = append(expectedRequests, metricdata.DataPoint[int64]{
Attributes: attribute.NewSet(
attribute.String("receiver", id.String()),
attribute.String("transport", transport),
attribute.String("outcome", "success")),
Value: accepted,
})
}
if rejected > 0 {
expectedRequests = append(expectedRequests, metricdata.DataPoint[int64]{
Attributes: attribute.NewSet(
attribute.String("receiver", id.String()),
attribute.String("transport", transport),
attribute.String("outcome", outcome)),
Value: 1, // One request failed
})
}

metricdatatest.AssertEqual(t,
metricdata.Metrics{
Name: "otelcol_receiver_requests",
Description: "The number of requests performed.",
Unit: "{requests}",
Data: metricdata.Sum[int64]{
Temporality: metricdata.CumulativeTemporality,
IsMonotonic: true,
DataPoints: expectedRequests,
},
}, got, metricdatatest.IgnoreTimestamp(), metricdatatest.IgnoreExemplars())
} else {
_, err := tt.GetMetric("otelcol_receiver_requests")
require.Error(t, err)
}
}
6 changes: 5 additions & 1 deletion receiver/otlpreceiver/otlphttp_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import (
"go.opentelemetry.io/collector/component/componenttest"
"go.opentelemetry.io/collector/internal/testutil"
"go.opentelemetry.io/collector/pdata/ptrace/ptraceotlp"
"go.opentelemetry.io/collector/receiver/otlpreceiver/internal/errors"
)

func TestHttpRetryAfter(t *testing.T) {
Expand Down Expand Up @@ -126,7 +127,10 @@ func TestHttpRetryAfter(t *testing.T) {
} else {
errStatus := &spb.Status{}
require.NoError(t, proto.Unmarshal(respBytes, errStatus))
s, ok := status.FromError(tt.err)
// The HTTP receiver transforms errors through GetStatusFromError
// We need to get the expected transformed error, not the original
expectedErr := errors.GetStatusFromError(tt.err)
s, ok := status.FromError(expectedErr)
require.True(t, ok)
assert.True(t, proto.Equal(errStatus, s.Proto()))
}
Expand Down
Loading
Loading