Skip to content

Commit 8f1b545

Browse files
committed
Add otelriver batch error tests
1 parent 8fec1fa commit 8f1b545

1 file changed

Lines changed: 96 additions & 0 deletions

File tree

otelriver/middleware_test.go

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,94 @@ func TestMiddleware(t *testing.T) {
402402
require.True(t, getAttribute(t, span.Attributes, "snooze").AsBool())
403403
})
404404

405+
t.Run("WorkBatchResultWithJobError", func(t *testing.T) {
406+
t.Parallel()
407+
408+
middleware, bundle := setup(t)
409+
410+
doInner := func(ctx context.Context) error {
411+
return &fakeBatchError{errorsByID: map[int64]error{
412+
123: errors.New("job-specific error"),
413+
456: errors.New("other job error"),
414+
}}
415+
}
416+
417+
err := middleware.Work(ctx, &rivertype.JobRow{ID: 123, Kind: "no_op"}, doInner)
418+
require.EqualError(t, err, "batch error")
419+
420+
spans := bundle.traceExporter.GetSpans()
421+
require.Len(t, spans, 1)
422+
423+
span := spans[0]
424+
require.Equal(t, "error", getAttribute(t, span.Attributes, "status").AsString())
425+
require.Equal(t, codes.Error, span.Status.Code)
426+
require.Equal(t, "job-specific error", span.Status.Description)
427+
})
428+
429+
t.Run("WorkBatchResultWithNoJobError", func(t *testing.T) {
430+
t.Parallel()
431+
432+
middleware, bundle := setup(t)
433+
434+
doInner := func(ctx context.Context) error {
435+
return &fakeBatchError{errorsByID: map[int64]error{
436+
456: errors.New("other job error"),
437+
}}
438+
}
439+
440+
err := middleware.Work(ctx, &rivertype.JobRow{ID: 123, Kind: "no_op"}, doInner)
441+
require.EqualError(t, err, "batch error")
442+
443+
spans := bundle.traceExporter.GetSpans()
444+
require.Len(t, spans, 1)
445+
446+
span := spans[0]
447+
require.Equal(t, "ok", getAttribute(t, span.Attributes, "status").AsString())
448+
require.Equal(t, codes.Ok, span.Status.Code)
449+
})
450+
451+
t.Run("WorkBatchResultWithJobCancelError", func(t *testing.T) {
452+
t.Parallel()
453+
454+
middleware, bundle := setup(t)
455+
456+
doInner := func(ctx context.Context) error {
457+
return &fakeBatchError{errorsByID: map[int64]error{
458+
123: rivertype.JobCancel(errors.New("cancelled")),
459+
}}
460+
}
461+
462+
err := middleware.Work(ctx, &rivertype.JobRow{ID: 123, Kind: "no_op"}, doInner)
463+
require.EqualError(t, err, "batch error")
464+
465+
spans := bundle.traceExporter.GetSpans()
466+
require.Len(t, spans, 1)
467+
468+
span := spans[0]
469+
require.True(t, getAttribute(t, span.Attributes, "cancel").AsBool())
470+
})
471+
472+
t.Run("WorkBatchResultWithJobSnoozeError", func(t *testing.T) {
473+
t.Parallel()
474+
475+
middleware, bundle := setup(t)
476+
477+
doInner := func(ctx context.Context) error {
478+
return &fakeBatchError{errorsByID: map[int64]error{
479+
123: &rivertype.JobSnoozeError{},
480+
}}
481+
}
482+
483+
err := middleware.Work(ctx, &rivertype.JobRow{ID: 123, Kind: "no_op"}, doInner)
484+
require.EqualError(t, err, "batch error")
485+
486+
spans := bundle.traceExporter.GetSpans()
487+
require.Len(t, spans, 1)
488+
489+
span := spans[0]
490+
require.True(t, getAttribute(t, span.Attributes, "snooze").AsBool())
491+
})
492+
405493
t.Run("WorkPanic", func(t *testing.T) {
406494
t.Parallel()
407495

@@ -543,6 +631,14 @@ func TestMiddleware(t *testing.T) {
543631
})
544632
}
545633

634+
type fakeBatchError struct {
635+
errorsByID map[int64]error
636+
}
637+
638+
func (e *fakeBatchError) Error() string { return "batch error" }
639+
640+
func (e *fakeBatchError) ErrorsByID() map[int64]error { return e.errorsByID }
641+
546642
func getAttribute(t *testing.T, attrs []attribute.KeyValue, key string) attribute.Value {
547643
t.Helper()
548644

0 commit comments

Comments
 (0)