From cb230b69a2a3f6c1d603272b767e9282881973b9 Mon Sep 17 00:00:00 2001 From: Juan Batiz-Benet Date: Mon, 15 Sep 2014 16:30:11 -0700 Subject: [PATCH] bugfix: service has a Start func We were issuing handling goroutines in both NewService and Start --- bitswap/transmission/service_wrapper.go | 3 ++- net/service/service.go | 8 ++----- net/service/service_test.go | 31 +++++++++++++++++++++---- 3 files changed, 30 insertions(+), 12 deletions(-) diff --git a/bitswap/transmission/service_wrapper.go b/bitswap/transmission/service_wrapper.go index 4a85d1c04..fc02e48a6 100644 --- a/bitswap/transmission/service_wrapper.go +++ b/bitswap/transmission/service_wrapper.go @@ -11,7 +11,8 @@ import ( func NewServiceWrapper(ctx context.Context, r Receiver) Sender { h := &handlerWrapper{r} - s := netservice.NewService(ctx, h) + s := netservice.NewService(h) + s.Start(ctx) return &senderWrapper{s} } diff --git a/net/service/service.go b/net/service/service.go index c4eb01433..a40d5ed3c 100644 --- a/net/service/service.go +++ b/net/service/service.go @@ -37,16 +37,12 @@ type Service struct { } // NewService creates a service object with given type ID and Handler -func NewService(ctx context.Context, h Handler) *Service { - s := &Service{ +func NewService(h Handler) *Service { + return &Service{ Handler: h, Requests: RequestMap{}, Pipe: msg.NewPipe(10), } - - go s.handleIncomingMessages(ctx) - - return s } // Start kicks off the Service goroutines. diff --git a/net/service/service_test.go b/net/service/service_test.go index 0e798bb78..6642117f3 100644 --- a/net/service/service_test.go +++ b/net/service/service_test.go @@ -39,9 +39,13 @@ func newPeer(t *testing.T, id string) *peer.Peer { func TestServiceHandler(t *testing.T) { ctx := context.Background() h := &ReverseHandler{} - s := NewService(ctx, h) + s := NewService(h) peer1 := newPeer(t, "11140beec7b5ea3f0fdbc95d0dd47f3c5bc275aaaaaa") + if err := s.Start(ctx); err != nil { + t.Error(err) + } + d, err := wrapData([]byte("beep"), nil) if err != nil { t.Error(err) @@ -67,8 +71,17 @@ func TestServiceHandler(t *testing.T) { func TestServiceRequest(t *testing.T) { ctx := context.Background() - s1 := NewService(ctx, &ReverseHandler{}) - s2 := NewService(ctx, &ReverseHandler{}) + s1 := NewService(&ReverseHandler{}) + s2 := NewService(&ReverseHandler{}) + + if err := s1.Start(ctx); err != nil { + t.Error(err) + } + + if err := s2.Start(ctx); err != nil { + t.Error(err) + } + peer1 := newPeer(t, "11140beec7b5ea3f0fdbc95d0dd47f3c5bc275aaaaaa") // patch services together @@ -98,10 +111,18 @@ func TestServiceRequest(t *testing.T) { func TestServiceRequestTimeout(t *testing.T) { ctx, _ := context.WithTimeout(context.Background(), time.Millisecond) - s1 := NewService(ctx, &ReverseHandler{}) - s2 := NewService(ctx, &ReverseHandler{}) + s1 := NewService(&ReverseHandler{}) + s2 := NewService(&ReverseHandler{}) peer1 := newPeer(t, "11140beec7b5ea3f0fdbc95d0dd47f3c5bc275aaaaaa") + if err := s1.Start(ctx); err != nil { + t.Error(err) + } + + if err := s2.Start(ctx); err != nil { + t.Error(err) + } + // patch services together go func() { for {