diff options
author | Janos Guljas <janos@resenje.org> | 2018-09-27 15:43:00 +0800 |
---|---|---|
committer | Janos Guljas <janos@resenje.org> | 2018-09-27 15:43:00 +0800 |
commit | a5e6bf7eefbe6f56cf688b3542fe373c4670cb65 (patch) | |
tree | 8b712ef8fb72b354346c7b1092261c469ebd7d8a /swarm/network/stream/streamer_test.go | |
parent | 0d5e1e7bc9ad4044a679ab5429d118b2a0e8afe7 (diff) | |
parent | e39a9b3480af0ac8044294f46e0e9e4c3948d23c (diff) | |
download | go-tangerine-a5e6bf7eefbe6f56cf688b3542fe373c4670cb65.tar go-tangerine-a5e6bf7eefbe6f56cf688b3542fe373c4670cb65.tar.gz go-tangerine-a5e6bf7eefbe6f56cf688b3542fe373c4670cb65.tar.bz2 go-tangerine-a5e6bf7eefbe6f56cf688b3542fe373c4670cb65.tar.lz go-tangerine-a5e6bf7eefbe6f56cf688b3542fe373c4670cb65.tar.xz go-tangerine-a5e6bf7eefbe6f56cf688b3542fe373c4670cb65.tar.zst go-tangerine-a5e6bf7eefbe6f56cf688b3542fe373c4670cb65.zip |
Merge branch 'master' into max-stream-peer-servers
Diffstat (limited to 'swarm/network/stream/streamer_test.go')
-rw-r--r-- | swarm/network/stream/streamer_test.go | 77 |
1 files changed, 72 insertions, 5 deletions
diff --git a/swarm/network/stream/streamer_test.go b/swarm/network/stream/streamer_test.go index 04366cd39..0bdebefa7 100644 --- a/swarm/network/stream/streamer_test.go +++ b/swarm/network/stream/streamer_test.go @@ -19,6 +19,7 @@ package stream import ( "bytes" "context" + "errors" "strconv" "testing" "time" @@ -56,11 +57,12 @@ func TestStreamerRequestSubscription(t *testing.T) { } var ( - hash0 = sha3.Sum256([]byte{0}) - hash1 = sha3.Sum256([]byte{1}) - hash2 = sha3.Sum256([]byte{2}) - hashesTmp = append(hash0[:], hash1[:]...) - hashes = append(hashesTmp, hash2[:]...) + hash0 = sha3.Sum256([]byte{0}) + hash1 = sha3.Sum256([]byte{1}) + hash2 = sha3.Sum256([]byte{2}) + hashesTmp = append(hash0[:], hash1[:]...) + hashes = append(hashesTmp, hash2[:]...) + corruptHashes = append(hashes[:40]) ) type testClient struct { @@ -460,6 +462,71 @@ func TestStreamerUpstreamSubscribeLiveAndHistory(t *testing.T) { } } +func TestStreamerDownstreamCorruptHashesMsgExchange(t *testing.T) { + tester, streamer, _, teardown, err := newStreamerTester(t, nil) + defer teardown() + if err != nil { + t.Fatal(err) + } + + stream := NewStream("foo", "", true) + + var tc *testClient + + streamer.RegisterClientFunc("foo", func(p *Peer, t string, live bool) (Client, error) { + tc = newTestClient(t) + return tc, nil + }) + + node := tester.Nodes[0] + + err = streamer.Subscribe(node.ID(), stream, NewRange(5, 8), Top) + if err != nil { + t.Fatalf("Expected no error, got %v", err) + } + + err = tester.TestExchanges(p2ptest.Exchange{ + Label: "Subscribe message", + Expects: []p2ptest.Expect{ + { + Code: 4, + Msg: &SubscribeMsg{ + Stream: stream, + History: NewRange(5, 8), + Priority: Top, + }, + Peer: node.ID(), + }, + }, + }, + p2ptest.Exchange{ + Label: "Corrupt offered hash message", + Triggers: []p2ptest.Trigger{ + { + Code: 1, + Msg: &OfferedHashesMsg{ + HandoverProof: &HandoverProof{ + Handover: &Handover{}, + }, + Hashes: corruptHashes, + From: 5, + To: 8, + Stream: stream, + }, + Peer: node.ID(), + }, + }, + }) + if err != nil { + t.Fatal(err) + } + + expectedError := errors.New("Message handler error: (msg code 1): error invalid hashes length (len: 40)") + if err := tester.TestDisconnected(&p2ptest.Disconnect{Peer: tester.Nodes[0].ID(), Error: expectedError}); err != nil { + t.Fatal(err) + } +} + func TestStreamerDownstreamOfferedHashesMsgExchange(t *testing.T) { tester, streamer, _, teardown, err := newStreamerTester(t, nil) defer teardown() |