mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-27 15:16:43 +00:00
swarm/network: minor change to tests and no pss in bzz proto
This commit is contained in:
parent
c2efe3c366
commit
584d6e7876
5 changed files with 41 additions and 72 deletions
|
|
@ -25,7 +25,7 @@ func TestDiscovery(t *testing.T) {
|
||||||
return p.Run(dp.HandleMsg)
|
return p.Run(dp.HandleMsg)
|
||||||
}
|
}
|
||||||
|
|
||||||
s := newBzzBaseTester(t, 1, addr, DiscoveryProtocol, run)
|
s := newBzzBaseTester(t, 1, addr, DiscoverySpec, run)
|
||||||
defer s.Stop()
|
defer s.Stop()
|
||||||
|
|
||||||
s.TestExchanges(p2ptest.Exchange{
|
s.TestExchanges(p2ptest.Exchange{
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ func newHiveTester(t *testing.T, params *HiveParams) (*bzzTester, *Hive) {
|
||||||
to := NewKademlia(addr.OAddr, NewKadParams())
|
to := NewKademlia(addr.OAddr, NewKadParams())
|
||||||
pp := NewHive(params, to, nil) // hive
|
pp := NewHive(params, to, nil) // hive
|
||||||
|
|
||||||
return newBzzBaseTester(t, 1, addr, DiscoveryProtocol, pp.Run), pp
|
return newBzzBaseTester(t, 1, addr, DiscoverySpec, pp.Run), pp
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestRegisterAndConnect(t *testing.T) {
|
func TestRegisterAndConnect(t *testing.T) {
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,6 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
|
@ -38,7 +37,7 @@ const (
|
||||||
ProtocolMaxMsgSize = 10 * 1024 * 1024
|
ProtocolMaxMsgSize = 10 * 1024 * 1024
|
||||||
)
|
)
|
||||||
|
|
||||||
var BzzProtocol = &protocols.Spec{
|
var BzzHandshakeSpec = &protocols.Spec{
|
||||||
Name: "bzz",
|
Name: "bzz",
|
||||||
Version: 1,
|
Version: 1,
|
||||||
MaxMsgSize: 10 * 1024 * 1024,
|
MaxMsgSize: 10 * 1024 * 1024,
|
||||||
|
|
@ -47,7 +46,7 @@ var BzzProtocol = &protocols.Spec{
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
var DiscoveryProtocol = &protocols.Spec{
|
var DiscoverySpec = &protocols.Spec{
|
||||||
Name: "hive",
|
Name: "hive",
|
||||||
Version: 1,
|
Version: 1,
|
||||||
MaxMsgSize: 10 * 1024 * 1024,
|
MaxMsgSize: 10 * 1024 * 1024,
|
||||||
|
|
@ -58,15 +57,6 @@ var DiscoveryProtocol = &protocols.Spec{
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
var PssProtocol = &protocols.Spec{
|
|
||||||
Name: "pss",
|
|
||||||
Version: 1,
|
|
||||||
MaxMsgSize: 10 * 1024 * 1024,
|
|
||||||
Messages: []interface{}{
|
|
||||||
PssMsg{},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
// the Addr interface that peerPool needs
|
// the Addr interface that peerPool needs
|
||||||
type Addr interface {
|
type Addr interface {
|
||||||
OverlayPeer
|
OverlayPeer
|
||||||
|
|
@ -98,75 +88,54 @@ type Store interface {
|
||||||
Save(string, []byte) error
|
Save(string, []byte) error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// BzzConfig captures the config params used by the hive
|
||||||
type BzzConfig struct {
|
type BzzConfig struct {
|
||||||
OverlayAddr []byte
|
OverlayAddr []byte
|
||||||
UnderlayAddr []byte
|
UnderlayAddr []byte
|
||||||
|
HiveParams *HiveParams
|
||||||
KadParams *KadParams
|
|
||||||
HiveParams *HiveParams
|
|
||||||
PssParams *PssParams
|
|
||||||
|
|
||||||
Store Store
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bzz is the swarm protocol bundle
|
// Bzz is the swarm protocol bundle
|
||||||
type Bzz struct {
|
type Bzz struct {
|
||||||
Kademlia *Kademlia
|
Hive *Hive
|
||||||
Hive *Hive
|
|
||||||
Pss *Pss
|
|
||||||
|
|
||||||
localAddr *bzzAddr
|
localAddr *bzzAddr
|
||||||
mtx sync.Mutex
|
mtx sync.Mutex
|
||||||
handshakes map[discover.NodeID]*bzzHandshake
|
handshakes map[discover.NodeID]*bzzHandshake
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewBzz is the swarm protocol constructor
|
// NewBzz is the swarm protocol constructor
|
||||||
func NewBzz(config *BzzConfig) *Bzz {
|
func NewBzz(config *BzzConfig, kad Overlay, store Store) *Bzz {
|
||||||
kademlia := NewKademlia(config.OverlayAddr, config.KadParams)
|
return &Bzz{
|
||||||
bzz := &Bzz{
|
Hive: NewHive(config.HiveParams, kad, store),
|
||||||
Kademlia: kademlia,
|
|
||||||
Hive: NewHive(config.HiveParams, kademlia, config.Store),
|
|
||||||
localAddr: &bzzAddr{config.OverlayAddr, config.UnderlayAddr},
|
localAddr: &bzzAddr{config.OverlayAddr, config.UnderlayAddr},
|
||||||
handshakes: make(map[discover.NodeID]*bzzHandshake),
|
handshakes: make(map[discover.NodeID]*bzzHandshake),
|
||||||
}
|
}
|
||||||
if config.PssParams != nil {
|
|
||||||
bzz.Pss = NewPss(kademlia, config.PssParams)
|
|
||||||
}
|
|
||||||
return bzz
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bzz implements the node.Service interface, offers Protocols
|
// Bzz implements the node.Service interface, offers Protocols
|
||||||
// * handshake/hive
|
// * handshake/hive
|
||||||
// * discovery
|
// * discovery
|
||||||
// * pss
|
|
||||||
func (b *Bzz) Protocols() []p2p.Protocol {
|
func (b *Bzz) Protocols() []p2p.Protocol {
|
||||||
return []p2p.Protocol{
|
return []p2p.Protocol{
|
||||||
{
|
{
|
||||||
Name: BzzProtocol.Name,
|
Name: BzzHandshakeSpec.Name,
|
||||||
Version: BzzProtocol.Version,
|
Version: BzzHandshakeSpec.Version,
|
||||||
Length: BzzProtocol.Length(),
|
Length: BzzHandshakeSpec.Length(),
|
||||||
Run: b.runHandshake,
|
Run: b.runHandshake,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: DiscoveryProtocol.Name,
|
Name: DiscoverySpec.Name,
|
||||||
Version: DiscoveryProtocol.Version,
|
Version: DiscoverySpec.Version,
|
||||||
Length: DiscoveryProtocol.Length(),
|
Length: DiscoverySpec.Length(),
|
||||||
Run: b.runProtocol(DiscoveryProtocol, b.Hive.Run),
|
Run: b.runProtocol(DiscoverySpec, b.Hive.Run),
|
||||||
NodeInfo: b.Hive.NodeInfo,
|
NodeInfo: b.Hive.NodeInfo,
|
||||||
PeerInfo: b.Hive.PeerInfo,
|
PeerInfo: b.Hive.PeerInfo,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
Name: PssProtocol.Name,
|
|
||||||
Version: PssProtocol.Version,
|
|
||||||
Length: PssProtocol.Length(),
|
|
||||||
Run: b.runProtocol(PssProtocol, b.Pss.Run),
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bzz implements the node.Service interface, offers APIs:
|
// Bzz implements the node.Service interface, offers APIs:
|
||||||
// * hive
|
// * hive
|
||||||
// * pss
|
|
||||||
func (b *Bzz) APIs() []rpc.API {
|
func (b *Bzz) APIs() []rpc.API {
|
||||||
return []rpc.API{{
|
return []rpc.API{{
|
||||||
Namespace: "hive",
|
Namespace: "hive",
|
||||||
|
|
@ -232,7 +201,7 @@ func (b *Bzz) getHandshake(peerID discover.NodeID) *bzzHandshake {
|
||||||
handshake, ok := b.handshakes[peerID]
|
handshake, ok := b.handshakes[peerID]
|
||||||
if !ok {
|
if !ok {
|
||||||
handshake = &bzzHandshake{
|
handshake = &bzzHandshake{
|
||||||
Version: uint64(BzzProtocol.Version),
|
Version: uint64(BzzHandshakeSpec.Version),
|
||||||
NetworkId: uint64(NetworkId),
|
NetworkId: uint64(NetworkId),
|
||||||
Addr: b.localAddr,
|
Addr: b.localAddr,
|
||||||
done: make(chan struct{}),
|
done: make(chan struct{}),
|
||||||
|
|
@ -298,7 +267,7 @@ func (self *bzzHandshake) Perform(p *p2p.Peer, rw p2p.MsgReadWriter) (err error)
|
||||||
self.err = err
|
self.err = err
|
||||||
close(self.done)
|
close(self.done)
|
||||||
}()
|
}()
|
||||||
peer := protocols.NewPeer(p, rw, BzzProtocol)
|
peer := protocols.NewPeer(p, rw, BzzHandshakeSpec)
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), bzzHandshakeTimeout)
|
ctx, cancel := context.WithTimeout(context.Background(), bzzHandshakeTimeout)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
hs, err := peer.Handshake(ctx, self)
|
hs, err := peer.Handshake(ctx, self)
|
||||||
|
|
@ -378,8 +347,5 @@ func NewNodeIdFromAddr(addr Addr) *adapters.NodeId {
|
||||||
// the overlay address is derived as the hash of the nodeId
|
// the overlay address is derived as the hash of the nodeId
|
||||||
func NewAddrFromNodeId(n *adapters.NodeId) *bzzAddr {
|
func NewAddrFromNodeId(n *adapters.NodeId) *bzzAddr {
|
||||||
id := n.NodeID
|
id := n.NodeID
|
||||||
return &bzzAddr{
|
return &bzzAddr{crypto.Keccak256(id[:]), id[:]}
|
||||||
OAddr: crypto.Keccak256(id[:]),
|
|
||||||
UAddr: []byte(discover.NewNode(id, net.IP{127, 0, 0, 1}, 30303, 30303).String()),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -179,21 +179,23 @@ func triggerChecks(trigger chan *adapters.NodeId, net *simulations.Network, id *
|
||||||
func newService(id *adapters.NodeId, snapshot []byte) node.Service {
|
func newService(id *adapters.NodeId, snapshot []byte) node.Service {
|
||||||
addr := network.NewAddrFromNodeId(id)
|
addr := network.NewAddrFromNodeId(id)
|
||||||
|
|
||||||
|
kp := network.NewKadParams()
|
||||||
|
kp.MinProxBinSize = 2
|
||||||
|
kp.MaxBinSize = 3
|
||||||
|
kp.MinBinSize = 1
|
||||||
|
kp.MaxRetries = 1000
|
||||||
|
kp.RetryExponent = 2
|
||||||
|
kp.RetryInterval = 1000000
|
||||||
|
kad := network.NewKademlia(addr.Over(), kp)
|
||||||
|
|
||||||
|
hp := network.NewHiveParams()
|
||||||
|
hp.KeepAliveInterval = time.Second
|
||||||
|
|
||||||
config := &network.BzzConfig{
|
config := &network.BzzConfig{
|
||||||
OverlayAddr: addr.Over(),
|
OverlayAddr: addr.Over(),
|
||||||
UnderlayAddr: addr.Under(),
|
UnderlayAddr: addr.Under(),
|
||||||
KadParams: network.NewKadParams(),
|
HiveParams: hp,
|
||||||
HiveParams: network.NewHiveParams(),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
config.KadParams.MinProxBinSize = 2
|
return network.NewBzz(config, kad, nil)
|
||||||
config.KadParams.MaxBinSize = 3
|
|
||||||
config.KadParams.MinBinSize = 1
|
|
||||||
config.KadParams.MaxRetries = 1000
|
|
||||||
config.KadParams.RetryExponent = 2
|
|
||||||
config.KadParams.RetryInterval = 1000000
|
|
||||||
|
|
||||||
config.HiveParams.KeepAliveInterval = time.Second
|
|
||||||
|
|
||||||
return network.NewBzz(config)
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -62,25 +62,26 @@ func (s *Simulation) NewService(id *adapters.NodeId, snapshot []byte) node.Servi
|
||||||
s.mtx.Unlock()
|
s.mtx.Unlock()
|
||||||
|
|
||||||
addr := network.NewAddrFromNodeId(id)
|
addr := network.NewAddrFromNodeId(id)
|
||||||
kp := network.NewKadParams()
|
|
||||||
|
|
||||||
|
kp := network.NewKadParams()
|
||||||
kp.MinProxBinSize = 2
|
kp.MinProxBinSize = 2
|
||||||
kp.MaxBinSize = 3
|
kp.MaxBinSize = 3
|
||||||
kp.MinBinSize = 1
|
kp.MinBinSize = 1
|
||||||
kp.MaxRetries = 1000
|
kp.MaxRetries = 1000
|
||||||
kp.RetryExponent = 2
|
kp.RetryExponent = 2
|
||||||
kp.RetryInterval = 1000000
|
kp.RetryInterval = 1000000
|
||||||
|
kad := network.NewKademlia(addr.Over(), kp)
|
||||||
|
|
||||||
hp := network.NewHiveParams()
|
hp := network.NewHiveParams()
|
||||||
hp.KeepAliveInterval = 5 * time.Second
|
hp.KeepAliveInterval = 3 * time.Second
|
||||||
|
|
||||||
config := &network.BzzConfig{
|
config := &network.BzzConfig{
|
||||||
OverlayAddr: addr.Over(),
|
OverlayAddr: addr.Over(),
|
||||||
UnderlayAddr: addr.Under(),
|
UnderlayAddr: addr.Under(),
|
||||||
KadParams: kp,
|
|
||||||
HiveParams: hp,
|
HiveParams: hp,
|
||||||
Store: store,
|
|
||||||
}
|
}
|
||||||
return network.NewBzz(config)
|
|
||||||
|
return network.NewBzz(config, kad, store)
|
||||||
}
|
}
|
||||||
|
|
||||||
func createMockers() map[string]*simulations.MockerConfig {
|
func createMockers() map[string]*simulations.MockerConfig {
|
||||||
|
|
@ -112,7 +113,7 @@ func setupMocker(net *simulations.Network) []*adapters.NodeId {
|
||||||
conf := net.Config()
|
conf := net.Config()
|
||||||
conf.DefaultService = "overlay"
|
conf.DefaultService = "overlay"
|
||||||
|
|
||||||
nodeCount := 30
|
nodeCount := 50
|
||||||
ids := make([]*adapters.NodeId, nodeCount)
|
ids := make([]*adapters.NodeId, nodeCount)
|
||||||
for i := 0; i < nodeCount; i++ {
|
for i := 0; i < nodeCount; i++ {
|
||||||
node, err := net.NewNode()
|
node, err := net.NewNode()
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue