rebase on dual DHT
Will Scott committed
Apr 14, 2020 at 08:15 UTC
02cf54dec679cf723fb6a48ef32e9f1b70c23296
1 file changed
+37
-21
test/integration/wan_lan_dht_test.go
+37
-21
@@ -102,6 +102,7 @@ func RunDHTConnectivity(conf testutil.LatencyConfig, numPeers int) error {
102
wanAddr := makeAddr(uint32(i), true)
103
wanPeer.Peerstore.AddAddr(wanPeer.Identity, wanAddr, peerstore.PermanentAddrTTL)
104
for _, p := range wanPeers {
105
+ mn.LinkPeers(p.Identity, wanPeer.Identity)
106
mn.ConnectPeers(p.Identity, wanPeer.Identity)
107
}
108
wanPeers = append(wanPeers, wanPeer)
@@ -117,18 +118,30 @@ func RunDHTConnectivity(conf testutil.LatencyConfig, numPeers int) error {
118
lanAddr := makeAddr(uint32(i), false)
119
lanPeer.Peerstore.AddAddr(lanPeer.Identity, lanAddr, peerstore.PermanentAddrTTL)
120
for _, p := range lanPeers {
121
+ mn.LinkPeers(p.Identity, lanPeer.Identity)
122
mn.ConnectPeers(p.Identity, lanPeer.Identity)
123
}
124
lanPeers = append(lanPeers, lanPeer)
125
}
126
127
+ // Add interfaces / addresses to test peer.
128
+ wanAddr := makeAddr(0, true)
129
+ testPeer.Peerstore.AddAddr(testPeer.Identity, wanAddr, peerstore.PermanentAddrTTL)
130
+ lanAddr := makeAddr(0, false)
131
+ testPeer.Peerstore.AddAddr(testPeer.Identity, lanAddr, peerstore.PermanentAddrTTL)
132
+
133
// The test peer is connected to one lan peer.
134
+ for _, p := range lanPeers {
135
+ if _, err := mn.LinkPeers(testPeer.Identity, p.Identity); err != nil {
136
+ return err
137
+ }
138
+ }
139
_, err = mn.ConnectPeers(testPeer.Identity, lanPeers[0].Identity)
140
if err != nil {
141
return err
142
}
143
131
- err, done := <-testPeer.DHT.RefreshRoutingTable()
144
+ err, done := <-testPeer.DHT.LAN.RefreshRoutingTable()
145
if err != nil || !done {
146
if !done {
147
err = fmt.Errorf("expected refresh routing table to close")
@@ -149,25 +162,28 @@ func RunDHTConnectivity(conf testutil.LatencyConfig, numPeers int) error {
162
if err := lanPeers[i].DHT.Provide(provideCtx, provideCid, true); err != nil {
163
return err
164
}
152
- provs, err := testPeer.DHT.FindProviders(provideCtx, provideCid)
153
- if err != nil {
154
- return err
165
+ provChan := testPeer.DHT.FindProvidersAsync(provideCtx, provideCid, 0)
166
+ prov, ok := <-provChan
167
+ if !ok || prov.ID == "" {
168
+ return fmt.Errorf("Expected provider. stream closed early")
169
}
156
- if len(provs) != 1 {
157
- return fmt.Errorf("Expected one provider, got %d", len(provs))
158
- }
159
- if provs[0].ID != lanPeers[i].Identity {
170
+ if prov.ID != lanPeers[i].Identity {
171
return fmt.Errorf("Unexpected lan peer provided record")
172
}
173
174
// Now, bootstrap from a wan peer.
175
+ for _, p := range wanPeers {
176
+ if _, err := mn.LinkPeers(testPeer.Identity, p.Identity); err != nil {
177
+ return err
178
+ }
179
+ }
180
bis := wanPeers[0].Peerstore.PeerInfo(wanPeers[0].PeerHost.ID())
181
bcfg := bootstrap.BootstrapConfigWithPeers([]peer.AddrInfo{bis})
182
if err := testPeer.Bootstrap(bcfg); err != nil {
183
return err
184
}
185
170
- err, done = <-testPeer.DHT.RefreshRoutingTable()
186
+ err, done = <-testPeer.DHT.WAN.RefreshRoutingTable()
187
if err != nil || !done {
188
if !done {
189
err = fmt.Errorf("expected refresh routing table to close")
@@ -188,14 +204,12 @@ func RunDHTConnectivity(conf testutil.LatencyConfig, numPeers int) error {
204
if err := wanPeers[i].DHT.Provide(wanProvideCtx, wanCid, true); err != nil {
205
return err
206
}
191
- provs, err = testPeer.DHT.FindProviders(wanProvideCtx, wanCid)
192
- if err != nil {
193
- return err
207
+ provChan = testPeer.DHT.FindProvidersAsync(wanProvideCtx, wanCid, 0)
208
+ prov, ok = <-provChan
209
+ if !ok || prov.ID == "" {
210
+ return fmt.Errorf("Expected one provider, closed early")
211
}
195
- if len(provs) != 1 {
196
- return fmt.Errorf("Expected one provider, got %d", len(provs))
197
- }
198
- if provs[0].ID != wanPeers[i].Identity {
212
+ if prov.ID != wanPeers[i].Identity {
213
return fmt.Errorf("Unexpected lan peer provided record")
214
}
215
@@ -211,12 +225,14 @@ func RunDHTConnectivity(conf testutil.LatencyConfig, numPeers int) error {
225
if err := wanPeers[i].DHT.Provide(provideCtx, provideCid, true); err != nil {
226
return err
227
}
214
- provs, err = testPeer.DHT.FindProviders(provideCtx, provideCid)
215
- if err != nil {
216
- return err
228
+ provChan = testPeer.DHT.FindProvidersAsync(provideCtx, provideCid, 0)
229
+ prov, ok = <-provChan
230
+ if !ok {
231
+ return fmt.Errorf("Expected two providers, got 0")
232
}
218
- if len(provs) != 2 {
219
- return fmt.Errorf("Expected two providers, got %d", len(provs))
233
+ prov, ok = <-provChan
234
+ if !ok {
235
+ return fmt.Errorf("Expected two providers, got 1")
236
}
237
238
return nil