From 29d3936af70082f102dfba25a07a13fc8de13a81 Mon Sep 17 00:00:00 2001 From: nolash Date: Mon, 13 Mar 2017 07:01:59 +0100 Subject: [PATCH] swarm/network: protocol test simplifications --- swarm/network/discovery_test.go | 4 +-- swarm/network/hive_test.go | 6 ++-- swarm/network/protocol.go | 9 ++--- swarm/network/protocol_test.go | 59 +++++++++++++-------------------- 4 files changed, 30 insertions(+), 48 deletions(-) diff --git a/swarm/network/discovery_test.go b/swarm/network/discovery_test.go index cf098f9caf..a86c3058c0 100644 --- a/swarm/network/discovery_test.go +++ b/swarm/network/discovery_test.go @@ -11,7 +11,7 @@ func TestDiscovery(t *testing.T) { to := NewKademlia(addr.OAddr, NewKadParams()) pp := NewHive(NewHiveParams(), to) ct := BzzCodeMap(HiveMsgs...) - s := newBzzTester(t, 1, addr, pp, ct, nil) + s := newBzzTester(t, addr, pp, ct, nil) s.runHandshakes() s.TestExchanges(p2ptest.Exchange{ @@ -19,7 +19,7 @@ func TestDiscovery(t *testing.T) { p2ptest.Expect{ Code: 3, Msg: &SubPeersMsg{ProxLimit: 0, MinProxBinSize: 8}, - Peer: s.ExchangeSession.Id(1), + Peer: s.ExchangeSession.Ids[1], }, }, }) diff --git a/swarm/network/hive_test.go b/swarm/network/hive_test.go index 7df68742fc..aaba6a6784 100644 --- a/swarm/network/hive_test.go +++ b/swarm/network/hive_test.go @@ -44,7 +44,7 @@ func TestOverlayRegistration(t *testing.T) { pp := NewHive(NewHiveParams(), to) // hive ct := BzzCodeMap(HiveMsgs...) // bzz protocol code map - s := newBzzTester(t, 1, addr, ct, nil) + s := newBzzTester(t, addr, pp, ct, nil) // connect to the other peer id := s.Ids[0] @@ -62,7 +62,7 @@ func TestRegisterAndConnect(t *testing.T) { to := NewTestOverlay(addr.OverlayAddr()) pp := NewHive(NewHiveParams(), to) ct := BzzCodeMap(HiveMsgs...) - s := newBzzTester(t, 0, addr, pp, ct, nil) + s := newBzzTester(t, addr, pp, ct, nil) // register the node with the peerPool id := p2ptest.RandomNodeId() @@ -103,7 +103,7 @@ func TestRegisterAndConnect(t *testing.T) { p2ptest.Expect{ Code: 3, Msg: &SubPeersMsg{ProxLimit: 0, MinProxBinSize: 8}, - Peer: s.ExchangeSession.Id(1), + Peer: s.ExchangeSession.Ids[1], }, }, }) diff --git a/swarm/network/protocol.go b/swarm/network/protocol.go index 72b40948c4..d076cee260 100644 --- a/swarm/network/protocol.go +++ b/swarm/network/protocol.go @@ -43,16 +43,13 @@ type bzzPeer struct { localAddr *peerAddr *peerAddr // remote address lastActive time.Time - peers map[discover.NodeID]bool + //peers map[discover.NodeID]bool } func (self *bzzPeer) LastActive() time.Time { return self.lastActive } -func (self *bzzPeer) Peers() map[discover.NodeID]bool { - return self.peers -} // implemented by peerAddr type PeerAddr interface { @@ -65,7 +62,6 @@ type Peer interface { PeerAddr String() string // pretty printable the Node ID() discover.NodeID // the key that uniquely identifies the Node for the peerPool - Peers() map[discover.NodeID]bool Send(interface{}) error // can send messages Drop(error) // disconnect this peer Register(interface{}, func(interface{}) error) uint64 // register message-handler callbacks @@ -80,7 +76,7 @@ func BzzCodeMap(msgs ...interface{}) *protocols.CodeMap { // Bzz is the protocol constructor // returns p2p.Protocol that is to be offered by the node.Service -func Bzz(localAddr []byte, na adapters.NodeAdapter, ct *protocols.CodeMap, services func(Peer) error) *p2p.Protocol { +func Bzz(localAddr []byte, na adapters.NodeAdapter, ct *protocols.CodeMap, services func(Peer) error, peerInfo func(id discover.NodeID) interface{}, nodeInfo func() interface{}) *p2p.Protocol { run := func(p *protocols.Peer) error { addr := &peerAddr{localAddr, na.LocalAddr()} @@ -88,7 +84,6 @@ func Bzz(localAddr []byte, na adapters.NodeAdapter, ct *protocols.CodeMap, servi Peer: p, network: na, localAddr: addr, - peers: make(map[discover.NodeID]bool), } // protocol handshake and its validation // sets remote peer address diff --git a/swarm/network/protocol_test.go b/swarm/network/protocol_test.go index 621fed8fbd..d2f520be55 100644 --- a/swarm/network/protocol_test.go +++ b/swarm/network/protocol_test.go @@ -2,12 +2,10 @@ package network import ( "fmt" - "sync" "testing" "github.com/ethereum/go-ethereum/logger/glog" "github.com/ethereum/go-ethereum/p2p/adapters" - "github.com/ethereum/go-ethereum/p2p/discover" "github.com/ethereum/go-ethereum/p2p/protocols" p2ptest "github.com/ethereum/go-ethereum/p2p/testing" ) @@ -36,31 +34,35 @@ func bzzHandshakeExchange(lhs, rhs *bzzHandshake, id *adapters.NodeId) []p2ptest } } -func newTestBzzProtocol(addr *peerAddr, ct *protocols.CodeMap, services func(Peer) error) func(adapters.NodeAdapter) adapters.ProtoCall { +func newBzzTester(t *testing.T, addr *peerAddr, pp *Hive, ct *protocols.CodeMap, services func(Peer) error) *bzzTester { if ct == nil { ct = BzzCodeMap() } - // ct.Register(p2ptest.FlushMsg) - return func(na adapters.NodeAdapter) adapters.ProtoCall { - srv := func(p Peer) error { - if services != nil { - err := services(p) - if err != nil { - return err - } - } - // id := p.ID() - // p.Register(p2ptest.FlushMsg, func(interface{}) error { - // flushc := na.(p2ptest.TestNetAdapter).GetPeer(&adapters.NodeId{id}).Flushc - // flushc <- true - // return nil - // }) - return nil - } + extraservices := func(p Peer) error { + pp.Add(p) + p.Register(&protocols.Disconnect{}, func(e interface{}) error { pp.Remove(p) }) - protocol := Bzz(addr.OverlayAddr(), pp, na, ct, srv) + if services != nil { + err := services(p) + if err != nil { + return err + } + } + return nil + } + + protocall := func(na adapters.NodeAdapter) adapters.ProtoCall { + protocol := Bzz(addr.OverlayAddr(), pp, na, ct, extraservices, nil, nil) return protocol.Run } + + s := p2ptest.NewProtocolTester(t, NodeId(addr), 1, protocall) + + return &bzzTester{ + addr: addr, + // flushCode: 4, + ExchangeSession: s, + } } type bzzTester struct { @@ -103,21 +105,6 @@ func correctBzzHandshake(addr *peerAddr) *bzzHandshake { return &bzzHandshake{0, 322, addr} } -func newBzzTester(t *testing.T, addr *peerAddr, pp PeerPool, ct *protocols.CodeMap, services func(Peer) error) *bzzTester { - - extraservices := func(p Peer) error { - pp.Add(p) - p.Register(&protocols.Disconnect{}, func(e interface{}) error { pp.Remove(p) }) - return services(p) - } - s := p2ptest.NewProtocolTester(t, NodeId(addr), 1, newTestBzzProtocol(addr, pp, ct, extraservices)) - return &bzzTester{ - addr: addr, - // flushCode: 4, - ExchangeSession: s, - } -} - func TestBzzHandshakeNetworkIdMismatch(t *testing.T) { pp := p2ptest.NewTestPeerPool() addr := RandomAddr()