MCPcopy
hub / github.com/ipfs/kubo / RunDHTConnectivity

Function RunDHTConnectivity

test/integration/wan_lan_dht_test.go:71–278  ·  view source on GitHub ↗
(conf testutil.LatencyConfig, numPeers int)

Source from the content-addressed store, hash-verified

69}
70
71func 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)

Callers 3

TestDHTConnectivityFastFunction · 0.85

Calls 10

NewNodeFunction · 0.92
makeAddrFunction · 0.85
NetworkMethod · 0.80
PeerstoreMethod · 0.80
FindProvidersAsyncMethod · 0.80
CloseMethod · 0.65
ConnectMethod · 0.65
SizeMethod · 0.65
DoneMethod · 0.65
ProvideMethod · 0.65

Tested by

no test coverage detected