github.com/linapex/ethereum-dpos-chinese@v0.0.0-20190316121959-b78b3a4a1ece/swarm/network/simulation/kademlia_test.go (about)

     1  
     2  //<developer>
     3  //    <name>linapex 曹一峰</name>
     4  //    <email>linapex@163.com</email>
     5  //    <wx>superexc</wx>
     6  //    <qqgroup>128148617</qqgroup>
     7  //    <url>https://jsq.ink</url>
     8  //    <role>pku engineer</role>
     9  //    <date>2019-03-16 12:09:47</date>
    10  //</624342673959948288>
    11  
    12  //
    13  //
    14  //
    15  //
    16  //
    17  //
    18  //
    19  //
    20  //
    21  //
    22  //
    23  //
    24  //
    25  //
    26  //
    27  
    28  package simulation
    29  
    30  import (
    31  	"context"
    32  	"sync"
    33  	"testing"
    34  	"time"
    35  
    36  	"github.com/ethereum/go-ethereum/node"
    37  	"github.com/ethereum/go-ethereum/p2p/simulations/adapters"
    38  	"github.com/ethereum/go-ethereum/swarm/network"
    39  )
    40  
    41  func TestWaitTillHealthy(t *testing.T) {
    42  	sim := New(map[string]ServiceFunc{
    43  		"bzz": func(ctx *adapters.ServiceContext, b *sync.Map) (node.Service, func(), error) {
    44  			addr := network.NewAddrFromNodeID(ctx.Config.ID)
    45  			hp := network.NewHiveParams()
    46  			hp.Discovery = false
    47  			config := &network.BzzConfig{
    48  				OverlayAddr:  addr.Over(),
    49  				UnderlayAddr: addr.Under(),
    50  				HiveParams:   hp,
    51  			}
    52  			kad := network.NewKademlia(addr.Over(), network.NewKadParams())
    53  //
    54  //
    55  			b.Store(BucketKeyKademlia, kad)
    56  			return network.NewBzz(config, kad, nil, nil, nil), nil, nil
    57  		},
    58  	})
    59  	defer sim.Close()
    60  
    61  	_, err := sim.AddNodesAndConnectRing(10)
    62  	if err != nil {
    63  		t.Fatal(err)
    64  	}
    65  
    66  	ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second)
    67  	defer cancel()
    68  	ill, err := sim.WaitTillHealthy(ctx, 2)
    69  	if err != nil {
    70  		for id, kad := range ill {
    71  			t.Log("Node", id)
    72  			t.Log(kad.String())
    73  		}
    74  		if err != nil {
    75  			t.Fatal(err)
    76  		}
    77  	}
    78  }
    79