(conf testutil.LatencyConfig, numPeers int)
| 69 | } |
| 70 | |
| 71 | func RunDHTConnectivity(conf testutil.LatencyConfig, numPeers int) error { |
| 72 | ctx, cancel := context.WithCancel(context.Background()) |
| 73 | defer cancel() |
| 74 | |
| 75 | // create network |
| 76 | mn := mocknet.New() |
| 77 | mn.SetLinkDefaults(mocknet.LinkOptions{ |
| 78 | Latency: conf.NetworkLatency, |
| 79 | Bandwidth: math.MaxInt32, |
| 80 | }) |
| 81 | |
| 82 | testPeer, err := core.NewNode(ctx, &core.BuildCfg{ |
| 83 | Online: true, |
| 84 | Host: mock.MockHostOption(mn), |
| 85 | }) |
| 86 | if err != nil { |
| 87 | return err |
| 88 | } |
| 89 | defer testPeer.Close() |
| 90 | |
| 91 | wanPeers := []*core.IpfsNode{} |
| 92 | lanPeers := []*core.IpfsNode{} |
| 93 | |
| 94 | connectionContext, connCtxCancel := context.WithTimeout(ctx, 15*time.Second) |
| 95 | defer connCtxCancel() |
| 96 | for i := range numPeers { |
| 97 | wanPeer, err := core.NewNode(ctx, &core.BuildCfg{ |
| 98 | Online: true, |
| 99 | Routing: libp2p2.DHTServerOption, |
| 100 | Host: mock.MockHostOption(mn), |
| 101 | }) |
| 102 | if err != nil { |
| 103 | return err |
| 104 | } |
| 105 | defer wanPeer.Close() |
| 106 | wanAddr := makeAddr(uint32(i), true) |
| 107 | _ = wanPeer.PeerHost.Network().Listen(wanAddr) |
| 108 | for _, p := range wanPeers { |
| 109 | _, _ = mn.LinkPeers(p.Identity, wanPeer.Identity) |
| 110 | _ = wanPeer.PeerHost.Connect(connectionContext, p.Peerstore.PeerInfo(p.Identity)) |
| 111 | } |
| 112 | wanPeers = append(wanPeers, wanPeer) |
| 113 | |
| 114 | lanPeer, err := core.NewNode(ctx, &core.BuildCfg{ |
| 115 | Online: true, |
| 116 | Host: mock.MockHostOption(mn), |
| 117 | }) |
| 118 | if err != nil { |
| 119 | return err |
| 120 | } |
| 121 | defer lanPeer.Close() |
| 122 | lanAddr := makeAddr(uint32(i), false) |
| 123 | _ = lanPeer.PeerHost.Network().Listen(lanAddr) |
| 124 | for _, p := range lanPeers { |
| 125 | _, _ = mn.LinkPeers(p.Identity, lanPeer.Identity) |
| 126 | _ = lanPeer.PeerHost.Connect(connectionContext, p.Peerstore.PeerInfo(p.Identity)) |
| 127 | } |
| 128 | lanPeers = append(lanPeers, lanPeer) |
no test coverage detected