From be01dcf172b93f0877dc7a698bf00c36ac3e27b4 Mon Sep 17 00:00:00 2001 From: Juan Batiz-Benet Date: Thu, 11 Sep 2014 00:56:22 -0700 Subject: [PATCH] mux test stop. --- net/mux/mux.go | 2 -- net/mux/mux_test.go | 67 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 2 deletions(-) diff --git a/net/mux/mux.go b/net/mux/mux.go index 6c84a1402..cd3c2f807 100644 --- a/net/mux/mux.go +++ b/net/mux/mux.go @@ -81,8 +81,6 @@ func (m *Muxer) handleIncomingMessages(ctx context.Context) { go m.handleIncomingMessage(ctx, msg) case <-ctx.Done(): - close(m.Incoming) - close(m.Outgoing) return } } diff --git a/net/mux/mux_test.go b/net/mux/mux_test.go index 0c63b49c9..4446952dc 100644 --- a/net/mux/mux_test.go +++ b/net/mux/mux_test.go @@ -216,3 +216,70 @@ func TestSimultMuxer(t *testing.T) { } } + +func TestStopping(t *testing.T) { + + // setup + p1 := &TestProtocol{Pipe: msg.NewPipe(10)} + p2 := &TestProtocol{Pipe: msg.NewPipe(10)} + pid1 := ProtocolID_Test + pid2 := ProtocolID_Identify + mux1 := &Muxer{ + Pipe: msg.NewPipe(10), + Protocols: ProtocolMap{ + pid1: p1, + pid2: p2, + }, + } + peer1 := newPeer(t, "11140beec7b5ea3f0fdbc95d0dd47f3c5bc275aaaaaa") + // peer2 := newPeer(t, "11140beec7b5ea3f0fdbc95d0dd47f3c5bc275bbbbbb") + + // run muxer + mux1.Start(context.Background()) + + // test outgoing p1 + for _, s := range []string{"foo", "bar", "baz"} { + p1.Outgoing <- &msg.Message{Peer: peer1, Data: []byte(s)} + testWrappedMsg(t, <-mux1.Outgoing, pid1, []byte(s)) + } + + // test incoming p1 + for _, s := range []string{"foo", "bar", "baz"} { + d, err := wrapData([]byte(s), pid1) + if err != nil { + t.Error(err) + } + mux1.Incoming <- &msg.Message{Peer: peer1, Data: d} + testMsg(t, <-p1.Incoming, []byte(s)) + } + + mux1.Stop() + if mux1.cancel != nil { + t.Error("mux.cancel should be nil") + } + + // test outgoing p1 + for _, s := range []string{"foo", "bar", "baz"} { + p1.Outgoing <- &msg.Message{Peer: peer1, Data: []byte(s)} + select { + case <-mux1.Outgoing: + t.Error("should not have received anything.") + case <-time.After(time.Millisecond): + } + } + + // test incoming p1 + for _, s := range []string{"foo", "bar", "baz"} { + d, err := wrapData([]byte(s), pid1) + if err != nil { + t.Error(err) + } + mux1.Incoming <- &msg.Message{Peer: peer1, Data: d} + select { + case <-p1.Incoming: + t.Error("should not have received anything.") + case <-time.After(time.Millisecond): + } + } + +}