github.com/yinchengtsinghua/golang-Eos-dpos-Ethereum@v0.0.0-20190121132951-92cc4225ed8e/swarm/network/simulation/kademlia_test.go (about) 1 2 //此源码被清华学神尹成大魔王专业翻译分析并修改 3 //尹成QQ77025077 4 //尹成微信18510341407 5 //尹成所在QQ群721929980 6 //尹成邮箱 yinc13@mails.tsinghua.edu.cn 7 //尹成毕业于清华大学,微软区块链领域全球最有价值专家 8 //https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 9 // 10 // 11 // 12 // 13 // 14 // 15 // 16 // 17 // 18 // 19 // 20 // 21 // 22 // 23 // 24 25 package simulation 26 27 import ( 28 "context" 29 "sync" 30 "testing" 31 "time" 32 33 "github.com/ethereum/go-ethereum/node" 34 "github.com/ethereum/go-ethereum/p2p/simulations/adapters" 35 "github.com/ethereum/go-ethereum/swarm/network" 36 ) 37 38 func TestWaitTillHealthy(t *testing.T) { 39 sim := New(map[string]ServiceFunc{ 40 "bzz": func(ctx *adapters.ServiceContext, b *sync.Map) (node.Service, func(), error) { 41 addr := network.NewAddrFromNodeID(ctx.Config.ID) 42 hp := network.NewHiveParams() 43 hp.Discovery = false 44 config := &network.BzzConfig{ 45 OverlayAddr: addr.Over(), 46 UnderlayAddr: addr.Under(), 47 HiveParams: hp, 48 } 49 kad := network.NewKademlia(addr.Over(), network.NewKadParams()) 50 // 51 // 52 b.Store(BucketKeyKademlia, kad) 53 return network.NewBzz(config, kad, nil, nil, nil), nil, nil 54 }, 55 }) 56 defer sim.Close() 57 58 _, err := sim.AddNodesAndConnectRing(10) 59 if err != nil { 60 t.Fatal(err) 61 } 62 63 ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second) 64 defer cancel() 65 ill, err := sim.WaitTillHealthy(ctx, 2) 66 if err != nil { 67 for id, kad := range ill { 68 t.Log("Node", id) 69 t.Log(kad.String()) 70 } 71 if err != nil { 72 t.Fatal(err) 73 } 74 } 75 }