swarm/network: Added test to registering outgoing streamer

This commit is contained in:
Balint Gabor 2018-01-12 14:02:04 +01:00
parent 23861e0fa8
commit 8c22fb87bf

View file

@ -92,6 +92,10 @@ type testIncomingStreamer struct {
t []byte t []byte
} }
type testOutgoingStreamer struct {
t []byte
}
func (self *testIncomingStreamer) NeedData([]byte) func() { func (self *testIncomingStreamer) NeedData([]byte) func() {
return nil return nil
} }
@ -100,6 +104,14 @@ func (self *testIncomingStreamer) BatchDone(string, uint64, []byte, []byte) func
return nil return nil
} }
func (self *testOutgoingStreamer) SetNextBatch(from uint64, to uint64) ([]byte, uint64, uint64, *HandoverProof, error) {
return make([]byte, HashSize), from + 1, to + 1, nil, nil
}
func (self *testOutgoingStreamer) GetData([]byte) []byte {
return nil
}
func TestStreamerRegisterIncoming(t *testing.T) { func TestStreamerRegisterIncoming(t *testing.T) {
// TODO: we only need streamer // TODO: we only need streamer
tester, streamer, teardown, err := newStreamerTester(t) tester, streamer, teardown, err := newStreamerTester(t)
@ -119,10 +131,88 @@ func TestStreamerRegisterIncoming(t *testing.T) {
t.Fatal("timeout: peer is not created") t.Fatal("timeout: peer is not created")
} }
err = streamer.Subscribe(tester.IDs[0], "foo", nil, 0, 0, Top, true) peerId := tester.IDs[0]
err = streamer.Subscribe(peerId, "foo", []byte{}, 5, 8, Top, true)
if err != nil { if err != nil {
t.Fatalf("Expected no error, got %v", err) t.Fatalf("Expected no error, got %v", err)
} }
err = tester.TestExchanges(p2ptest.Exchange{
Label: "Subscribe message",
Expects: []p2ptest.Expect{
p2ptest.Expect{
Code: 4,
Msg: &SubscribeMsg{
Stream: "foo",
Key: []byte{},
From: 5,
To: 8,
Priority: Top,
},
Peer: peerId,
},
},
})
if err != nil {
t.Fatal(err)
}
}
func TestStreamerRegisterOutgoing(t *testing.T) {
// TODO: we only need streamer
tester, streamer, teardown, err := newStreamerTester(t)
defer teardown()
if err != nil {
t.Fatal(err)
}
streamer.RegisterOutgoingStreamer("foo", func(p *StreamerPeer, t []byte) (OutgoingStreamer, error) {
return &testOutgoingStreamer{
t: t,
}, nil
})
err = waitForPeers(streamer, 1*time.Second)
if err != nil {
t.Fatal("timeout: peer is not created")
}
peerId := tester.IDs[0]
err = tester.TestExchanges(p2ptest.Exchange{
Label: "Subscribe message",
Triggers: []p2ptest.Trigger{
p2ptest.Trigger{
Code: 4,
Msg: &SubscribeMsg{
Stream: "foo",
Key: []byte{},
From: 5,
To: 8,
Priority: Top,
},
Peer: peerId,
},
},
Expects: []p2ptest.Expect{
p2ptest.Expect{
Code: 1,
Msg: &OfferedHashesMsg{
HandoverProof: nil,
Hashes: make([]byte, HashSize),
From: 6,
To: 9,
},
Peer: peerId,
},
},
})
if err != nil {
t.Fatal(err)
}
} }
func waitForPeers(streamer *Streamer, timeout time.Duration) error { func waitForPeers(streamer *Streamer, timeout time.Duration) error {