Skip to content

Commit a3069de

Browse files
author
Guy Baron
committed
improved deadlettering test
the test now validates that messages get rejected when handlers return an error and all rety attempts did not sccueed
1 parent 592287c commit a3069de

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

tests/bus_test.go

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ package tests
33
import (
44
"context"
55
"database/sql"
6+
"errors"
67
"fmt"
78
"reflect"
9+
"sync"
810
"testing"
911
"time"
1012

@@ -209,28 +211,34 @@ func TestRPC(t *testing.T) {
209211
}
210212

211213
func TestDeadlettering(t *testing.T) {
214+
215+
var waitgroup sync.WaitGroup
216+
waitgroup.Add(2)
212217
poision := gbus.NewBusMessage(PoisionMessage{})
213218
service1 := createBusWithOptions(testSvc1, "grabbit-dead", true, true)
214219
deadletterSvc := createBusWithOptions("deadletterSvc", "grabbit-dead", true, true)
215-
proceed := make(chan bool)
216-
handler := func(tx *sql.Tx, poision amqp.Delivery) error {
217-
proceed <- true
220+
221+
deadMessageHandler := func(tx *sql.Tx, poision amqp.Delivery) error {
222+
waitgroup.Done()
218223
return nil
219224
}
220225

221-
deadletterSvc.HandleDeadletter(handler)
226+
faultyHandler := func(invocation gbus.Invocation, message *gbus.BusMessage) error {
227+
return errors.New("fail")
228+
}
229+
230+
deadletterSvc.HandleDeadletter(deadMessageHandler)
231+
service1.HandleMessage(Command1{}, faultyHandler)
222232

223233
deadletterSvc.Start()
224234
defer deadletterSvc.Shutdown()
225235
service1.Start()
226236
defer service1.Shutdown()
227237

228-
e := service1.Send(context.Background(), testSvc1, poision)
229-
if e != nil {
230-
log.Printf("send error: %v", e)
231-
}
238+
service1.Send(context.Background(), testSvc1, poision)
239+
service1.Send(context.Background(), testSvc1, gbus.NewBusMessage(Command1{}))
232240

233-
<-proceed
241+
waitgroup.Wait()
234242
}
235243

236244
func TestRegistrationAfterBusStarts(t *testing.T) {

0 commit comments

Comments
 (0)