@@ -16,7 +16,6 @@ import (
16
16
17
17
"go.opentelemetry.io/collector/component/componenttest"
18
18
"go.opentelemetry.io/collector/exporter/exporterbatcher"
19
- "go.opentelemetry.io/collector/exporter/exporterhelper/internal/request"
20
19
"go.opentelemetry.io/collector/exporter/exporterhelper/internal/requesttest"
21
20
)
22
21
@@ -44,26 +43,26 @@ func TestDefaultBatcher_NoSplit_MinThresholdZero_TimeoutDisabled(t *testing.T) {
44
43
MinSize : 0 ,
45
44
}
46
45
47
- ba , err := NewBatcher (cfg ,
48
- func (ctx context.Context , req request.Request ) error { return req .Export (ctx ) },
49
- tt .maxWorkers )
46
+ sink := requesttest .NewSink ()
47
+ ba , err := NewBatcher (cfg , sink .Export , tt .maxWorkers )
50
48
require .NoError (t , err )
51
49
require .NoError (t , ba .Start (context .Background (), componenttest .NewNopHost ()))
52
50
t .Cleanup (func () {
53
51
require .NoError (t , ba .Shutdown (context .Background ()))
54
52
})
55
53
56
54
done := newFakeDone ()
57
- sink := requesttest .NewSink ()
58
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 8 , Sink : sink }, done )
59
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 8 , ExportErr : errors .New ("transient error" ), Sink : sink }, done )
60
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 17 , Sink : sink }, done )
61
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 13 , Sink : sink }, done )
62
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 35 , Sink : sink }, done )
63
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 2 , Sink : sink }, done )
55
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 8 }, done )
56
+ sink .SetExportErr (errors .New ("transient error" ))
57
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 8 }, done )
58
+ <- time .After (10 * time .Millisecond )
59
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 17 }, done )
60
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 13 }, done )
61
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 35 }, done )
62
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 2 }, done )
64
63
assert .Eventually (t , func () bool {
65
64
return sink .RequestsCount () == 5 && sink .ItemsCount () == 75
66
- }, 30 * time .Millisecond , 10 * time .Millisecond )
65
+ }, 1 * time .Second , 10 * time .Millisecond )
67
66
// Check that done callback is called for the right amount of times.
68
67
assert .EqualValues (t , 1 , done .errors .Load ())
69
68
assert .EqualValues (t , 5 , done .success .Load ())
@@ -95,30 +94,30 @@ func TestDefaultBatcher_NoSplit_TimeoutDisabled(t *testing.T) {
95
94
MinSize : 10 ,
96
95
}
97
96
98
- ba , err := NewBatcher (cfg ,
99
- func (ctx context.Context , req request.Request ) error { return req .Export (ctx ) },
100
- tt .maxWorkers )
97
+ sink := requesttest .NewSink ()
98
+ ba , err := NewBatcher (cfg , sink .Export , tt .maxWorkers )
101
99
require .NoError (t , err )
102
100
require .NoError (t , ba .Start (context .Background (), componenttest .NewNopHost ()))
103
101
104
102
done := newFakeDone ()
105
- sink := requesttest .NewSink ()
106
103
// These two requests will be dropped because of export error.
107
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 8 , Sink : sink }, done )
108
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 8 , ExportErr : errors .New ("transient error" ), Sink : sink }, done )
104
+ sink .SetExportErr (errors .New ("transient error" ))
105
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 8 }, done )
106
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 8 }, done )
107
+ <- time .After (10 * time .Millisecond )
109
108
110
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 7 , Sink : sink }, done )
109
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 7 }, done )
111
110
// This requests will be dropped because of merge error.
112
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 8 , MergeErr : errors .New ("transient error" ), Sink : sink }, done )
111
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 8 , MergeErr : errors .New ("transient error" )}, done )
113
112
114
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 13 , Sink : sink }, done )
115
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 35 , Sink : sink }, done )
116
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 2 , Sink : sink }, done )
113
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 13 }, done )
114
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 35 }, done )
115
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 2 }, done )
117
116
118
- // Only the requests with 13 and 35 will be flushed.
117
+ // Only the requests with 7+ 13 and 35 will be flushed.
119
118
assert .Eventually (t , func () bool {
120
119
return sink .RequestsCount () == 2 && sink .ItemsCount () == 55
121
- }, 30 * time .Millisecond , 10 * time .Millisecond )
120
+ }, 1 * time .Second , 10 * time .Millisecond )
122
121
123
122
require .NoError (t , ba .Shutdown (context .Background ()))
124
123
@@ -161,28 +160,26 @@ func TestDefaultBatcher_NoSplit_WithTimeout(t *testing.T) {
161
160
MinSize : 100 ,
162
161
}
163
162
164
- ba , err := NewBatcher (cfg ,
165
- func (ctx context.Context , req request.Request ) error { return req .Export (ctx ) },
166
- tt .maxWorkers )
163
+ sink := requesttest .NewSink ()
164
+ ba , err := NewBatcher (cfg , sink .Export , tt .maxWorkers )
167
165
require .NoError (t , err )
168
166
require .NoError (t , ba .Start (context .Background (), componenttest .NewNopHost ()))
169
167
t .Cleanup (func () {
170
168
require .NoError (t , ba .Shutdown (context .Background ()))
171
169
})
172
170
173
171
done := newFakeDone ()
174
- sink := requesttest .NewSink ()
175
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 8 , Sink : sink }, done )
176
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 17 , Sink : sink }, done )
172
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 8 }, done )
173
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 17 }, done )
177
174
// This requests will be dropped because of merge error.
178
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 8 , MergeErr : errors .New ("transient error" ), Sink : sink }, done )
175
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 8 , MergeErr : errors .New ("transient error" )}, done )
179
176
180
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 13 , Sink : sink }, done )
181
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 35 , Sink : sink }, done )
182
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 2 , Sink : sink }, done )
177
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 13 }, done )
178
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 35 }, done )
179
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 2 }, done )
183
180
assert .Eventually (t , func () bool {
184
181
return sink .RequestsCount () == 1 && sink .ItemsCount () == 75
185
- }, 100 * time .Millisecond , 10 * time .Millisecond )
182
+ }, 1 * time .Second , 10 * time .Millisecond )
186
183
187
184
// Check that done callback is called for the right amount of times.
188
185
assert .EqualValues (t , 1 , done .errors .Load ())
@@ -220,33 +217,31 @@ func TestDefaultBatcher_Split_TimeoutDisabled(t *testing.T) {
220
217
MaxSize : 100 ,
221
218
}
222
219
223
- ba , err := NewBatcher (cfg ,
224
- func (ctx context.Context , req request.Request ) error { return req .Export (ctx ) },
225
- tt .maxWorkers )
220
+ sink := requesttest .NewSink ()
221
+ ba , err := NewBatcher (cfg , sink .Export , tt .maxWorkers )
226
222
require .NoError (t , err )
227
223
require .NoError (t , ba .Start (context .Background (), componenttest .NewNopHost ()))
228
224
229
225
done := newFakeDone ()
230
- sink := requesttest .NewSink ()
231
226
// This requests will be dropped because of merge error.
232
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 8 , MergeErr : errors .New ("transient error" ), Sink : sink }, done )
233
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 8 , Sink : sink }, done )
234
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 17 , Sink : sink }, done )
227
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 8 , MergeErr : errors .New ("transient error" )}, done )
228
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 8 }, done )
229
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 17 }, done )
235
230
// This requests will be dropped because of merge error.
236
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 8 , MergeErr : errors .New ("transient error" ), Sink : sink }, done )
231
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 8 , MergeErr : errors .New ("transient error" )}, done )
237
232
238
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 13 , Sink : sink }, done )
239
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 35 , Sink : sink }, done )
240
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 2 , Sink : sink }, done )
241
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 30 , Sink : sink }, done )
233
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 13 }, done )
234
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 35 }, done )
235
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 2 }, done )
236
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 30 }, done )
242
237
assert .Eventually (t , func () bool {
243
238
return sink .RequestsCount () == 1 && sink .ItemsCount () == 100
244
- }, 100 * time .Millisecond , 10 * time .Millisecond )
239
+ }, 1 * time .Second , 10 * time .Millisecond )
245
240
246
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 900 , Sink : sink }, done )
241
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 900 }, done )
247
242
assert .Eventually (t , func () bool {
248
243
return sink .RequestsCount () == 10 && sink .ItemsCount () == 1000
249
- }, 100 * time .Millisecond , 10 * time .Millisecond )
244
+ }, 1 * time .Second , 10 * time .Millisecond )
250
245
251
246
// At this point the 7th not failing request is still pending.
252
247
assert .EqualValues (t , 6 , done .success .Load ())
@@ -269,16 +264,14 @@ func TestDefaultBatcher_Shutdown(t *testing.T) {
269
264
batchCfg .MinSize = 10
270
265
batchCfg .FlushTimeout = 100 * time .Second
271
266
272
- ba , err := NewBatcher (batchCfg ,
273
- func (ctx context.Context , req request.Request ) error { return req .Export (ctx ) },
274
- 2 )
267
+ sink := requesttest .NewSink ()
268
+ ba , err := NewBatcher (batchCfg , sink .Export , 2 )
275
269
require .NoError (t , err )
276
270
require .NoError (t , ba .Start (context .Background (), componenttest .NewNopHost ()))
277
271
278
272
done := newFakeDone ()
279
- sink := requesttest .NewSink ()
280
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 1 , Sink : sink }, done )
281
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 2 , Sink : sink }, done )
273
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 1 }, done )
274
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 2 }, done )
282
275
283
276
assert .EqualValues (t , 0 , sink .RequestsCount ())
284
277
assert .EqualValues (t , 0 , sink .ItemsCount ())
@@ -298,19 +291,19 @@ func TestDefaultBatcher_MergeError(t *testing.T) {
298
291
batchCfg .MinSize = 5
299
292
batchCfg .MaxSize = 7
300
293
301
- ba , err := NewBatcher ( batchCfg ,
302
- func ( ctx context. Context , req request. Request ) error { return req .Export ( ctx ) },
303
- 2 )
294
+ sink := requesttest . NewSink ()
295
+ ba , err := NewBatcher ( batchCfg , sink .Export , 2 )
296
+
304
297
require .NoError (t , err )
305
298
require .NoError (t , ba .Start (context .Background (), componenttest .NewNopHost ()))
306
299
t .Cleanup (func () {
307
300
require .NoError (t , ba .Shutdown (context .Background ()))
308
301
})
309
302
310
303
done := newFakeDone ()
311
- sink := requesttest .NewSink ( )
312
- ba . Consume ( context . Background (), & requesttest. FakeRequest { Items : 9 , Sink : sink }, done )
313
- ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 4 , Sink : sink , ExportErr : errors . New ( "transient error" ) }, done )
304
+ ba . Consume ( context . Background (), & requesttest.FakeRequest { Items : 9 }, done )
305
+ sink . SetExportErr ( errors . New ( "transient error" ) )
306
+ ba .Consume (context .Background (), & requesttest.FakeRequest {Items : 4 }, done )
314
307
315
308
assert .Eventually (t , func () bool {
316
309
return sink .RequestsCount () == 1 && sink .ItemsCount () == 7
0 commit comments