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  }