@@ -17,6 +17,7 @@ import (
1717
1818 "go.opentelemetry.io/collector/component"
1919 "go.opentelemetry.io/collector/component/componenttest"
20+ "go.opentelemetry.io/collector/consumer/consumererror"
2021 "go.opentelemetry.io/collector/exporter"
2122 "go.opentelemetry.io/collector/exporter/exporterhelper/internal/metadatatest"
2223 "go.opentelemetry.io/collector/exporter/exporterhelper/internal/request"
@@ -46,9 +47,13 @@ func TestExportTraceDataOp(t *testing.T) {
4647 )
4748 require .NoError (t , err )
4849
50+ partialFailCount := 10
51+ errPartial := consumererror .NewPartial (errors .New ("errPartial" ), partialFailCount )
52+
4953 params := []testParams {
5054 {items : 22 , err : nil },
5155 {items : 14 , err : errFake },
56+ {items : 14 , err : errPartial },
5257 }
5358 for i := range params {
5459 exporterErr = params [i ].err
@@ -73,6 +78,14 @@ func TestExportTraceDataOp(t *testing.T) {
7378 require .Contains (t , span .Attributes (), attribute.KeyValue {Key : ItemsFailed , Value : attribute .Int64Value (int64 (params [i ].items ))})
7479 assert .Equal (t , codes .Error , span .Status ().Code )
7580 assert .Equal (t , params [i ].err .Error (), span .Status ().Description )
81+ case errors .Is (params [i ].err , errPartial ):
82+ partialSuccessCount := params [i ].items - partialFailCount
83+ sentSpans += partialSuccessCount
84+ failedToSendSpans += partialFailCount
85+ require .Contains (t , span .Attributes (), attribute.KeyValue {Key : ItemsSent , Value : attribute .Int64Value (int64 (partialSuccessCount ))})
86+ require .Contains (t , span .Attributes (), attribute.KeyValue {Key : ItemsFailed , Value : attribute .Int64Value (int64 (partialFailCount ))})
87+ assert .Equal (t , codes .Error , span .Status ().Code )
88+ assert .Equal (t , params [i ].err .Error (), span .Status ().Description )
7689 default :
7790 t .Fatalf ("unexpected error: %v" , params [i ].err )
7891 }
@@ -114,9 +127,13 @@ func TestExportMetricsOp(t *testing.T) {
114127 )
115128 require .NoError (t , err )
116129
130+ partialFailCount := 10
131+ errPartial := consumererror .NewPartial (errors .New ("errPartial" ), partialFailCount )
132+
117133 params := []testParams {
118134 {items : 17 , err : nil },
119135 {items : 23 , err : errFake },
136+ {items : 20 , err : errPartial },
120137 }
121138 for i := range params {
122139 exporterErr = params [i ].err
@@ -141,6 +158,14 @@ func TestExportMetricsOp(t *testing.T) {
141158 require .Contains (t , span .Attributes (), attribute.KeyValue {Key : ItemsFailed , Value : attribute .Int64Value (int64 (params [i ].items ))})
142159 assert .Equal (t , codes .Error , span .Status ().Code )
143160 assert .Equal (t , params [i ].err .Error (), span .Status ().Description )
161+ case errors .Is (params [i ].err , errPartial ):
162+ partialSuccessCount := params [i ].items - partialFailCount
163+ sentMetricPoints += partialSuccessCount
164+ failedToSendMetricPoints += partialFailCount
165+ require .Contains (t , span .Attributes (), attribute.KeyValue {Key : ItemsSent , Value : attribute .Int64Value (int64 (partialSuccessCount ))})
166+ require .Contains (t , span .Attributes (), attribute.KeyValue {Key : ItemsFailed , Value : attribute .Int64Value (int64 (partialFailCount ))})
167+ assert .Equal (t , codes .Error , span .Status ().Code )
168+ assert .Equal (t , params [i ].err .Error (), span .Status ().Description )
144169 default :
145170 t .Fatalf ("unexpected error: %v" , params [i ].err )
146171 }
@@ -182,9 +207,13 @@ func TestExportLogsOp(t *testing.T) {
182207 )
183208 require .NoError (t , err )
184209
210+ partialFailCount := 10
211+ errPartial := consumererror .NewPartial (errors .New ("errPartial" ), partialFailCount )
212+
185213 params := []testParams {
186214 {items : 17 , err : nil },
187215 {items : 23 , err : errFake },
216+ {items : 21 , err : errPartial },
188217 }
189218 for i := range params {
190219 exporterErr = params [i ].err
@@ -209,6 +238,14 @@ func TestExportLogsOp(t *testing.T) {
209238 require .Contains (t , span .Attributes (), attribute.KeyValue {Key : ItemsFailed , Value : attribute .Int64Value (int64 (params [i ].items ))})
210239 assert .Equal (t , codes .Error , span .Status ().Code )
211240 assert .Equal (t , params [i ].err .Error (), span .Status ().Description )
241+ case errors .Is (params [i ].err , errPartial ):
242+ partialSuccessCount := params [i ].items - partialFailCount
243+ sentLogRecords += partialSuccessCount
244+ failedToSendLogRecords += partialFailCount
245+ require .Contains (t , span .Attributes (), attribute.KeyValue {Key : ItemsSent , Value : attribute .Int64Value (int64 (partialSuccessCount ))})
246+ require .Contains (t , span .Attributes (), attribute.KeyValue {Key : ItemsFailed , Value : attribute .Int64Value (int64 (partialFailCount ))})
247+ assert .Equal (t , codes .Error , span .Status ().Code )
248+ assert .Equal (t , params [i ].err .Error (), span .Status ().Description )
212249 default :
213250 t .Fatalf ("unexpected error: %v" , params [i ].err )
214251 }
0 commit comments