@cryptotaxi247 / kubo / commits / 02cf54dec

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