swarm/network, swarm/pss: Simplify + correct lock in servicefunc sim

This commit is contained in:
lash 2019-03-20 15:40:34 +01:00
parent 60030ff7e8
commit e1a3dd53bf
2 changed files with 17 additions and 9 deletions

View file

@ -85,6 +85,8 @@ func New(services map[string]ServiceFunc) (s *Simulation) {
name, serviceFunc := name, serviceFunc name, serviceFunc := name, serviceFunc
s.serviceNames = append(s.serviceNames, name) s.serviceNames = append(s.serviceNames, name)
adapterServices[name] = func(ctx *adapters.ServiceContext) (node.Service, error) { adapterServices[name] = func(ctx *adapters.ServiceContext) (node.Service, error) {
s.mu.Lock()
defer s.mu.Unlock()
b, ok := s.buckets[ctx.Config.ID] b, ok := s.buckets[ctx.Config.ID]
if !ok { if !ok {
b = new(sync.Map) b = new(sync.Map)
@ -93,8 +95,6 @@ func New(services map[string]ServiceFunc) (s *Simulation) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
s.mu.Lock()
defer s.mu.Unlock()
if cleanup != nil { if cleanup != nil {
s.cleanupFuncs = append(s.cleanupFuncs, cleanup) s.cleanupFuncs = append(s.cleanupFuncs, cleanup)
} }

View file

@ -145,17 +145,25 @@ func newTestData() *testData {
} }
} }
func (d *testData) getKademlia(nodeId *enode.ID) (*network.Kademlia, error) {
kadif, ok := d.sim.NodeItem(*nodeId, simulation.BucketKeyKademlia)
if !ok {
return nil, fmt.Errorf("no kademlia entry for %v", nodeId)
}
kad, ok := kadif.(*network.Kademlia)
if !ok {
return nil, fmt.Errorf("invalid kademlia entry for %v", nodeId)
}
return kad, nil
}
func (d *testData) init(msgCount int) error { func (d *testData) init(msgCount int) error {
log.Debug("TestProxNetwork start") log.Debug("TestProxNetwork start")
for _, nodeId := range d.sim.NodeIDs() { for _, nodeId := range d.sim.NodeIDs() {
kadif, ok := d.sim.NodeItem(nodeId, simulation.BucketKeyKademlia) kad, err := d.getKademlia(&nodeId)
if !ok { if err != nil {
return fmt.Errorf("no kademlia entry for %v", nodeId) return err
}
kad, ok := kadif.(*network.Kademlia)
if !ok {
return fmt.Errorf("invalid kademlia entry for %v", nodeId)
} }
d.nodeAddrs[nodeId] = kad.BaseAddr() d.nodeAddrs[nodeId] = kad.BaseAddr()
} }